16#ifndef ELGAMAL_LOCAL_H
17#define ELGAMAL_LOCAL_H
19#include "hitls_build.h"
20#ifdef HITLS_CRYPTO_ELGAMAL
22#include "crypt_elgamal.h"
24#include "crypt_local_types.h"
25#include "crypt_types.h"
26#include "sal_atomic.h"
37} CRYPT_ELGAMAL_PubKey;
43} CRYPT_ELGAMAL_PrvKey;
52 CRYPT_ELGAMAL_PubKey *pubKey;
53 CRYPT_ELGAMAL_PrvKey *prvKey;
54 CRYPT_ELGAMAL_Para *para;
55 BSL_SAL_RefCount references;
59CRYPT_ELGAMAL_PrvKey *ElGamal_NewPrvKey(uint32_t bits);
60CRYPT_ELGAMAL_PubKey *ElGamal_NewPubKey(uint32_t bits);
61void ELGAMAL_FreePrvKey(CRYPT_ELGAMAL_PrvKey *prvKey);
62void ELGAMAL_FreePubKey(CRYPT_ELGAMAL_PubKey *pubKey);
63CRYPT_ELGAMAL_Para *CRYPT_ElGamal_DupPara(
const CRYPT_ELGAMAL_Para *para);
65#define ELGAMAL_FREE_PRV_KEY(prvKey_) \
67 ELGAMAL_FreePrvKey((prvKey_)); \
71#define ELGAMAL_FREE_PUB_KEY(pubKey_) \
73 ELGAMAL_FreePubKey((pubKey_)); \
77#define ELGAMAL_FREE_PARA(para_) \
79 CRYPT_ELGAMAL_FreePara((para_)); \