19#include "hitls_build.h"
20#ifdef HITLS_CRYPTO_RSA
24#include "crypt_local_types.h"
25#include "crypt_types.h"
26#include "sal_atomic.h"
32#define HASH_MAX_MDSIZE (64)
34#define PARAMISNULL(a) ((a) == NULL || (a)->value == NULL)
36typedef struct RSA_BlindSt {
60#ifdef HITLS_CRYPTO_ACVP_TESTS
68} RSA_FIPS_AUX_PRIME_SEEDS;
72 RSA_FIPS_AUX_PRIME_SEEDS fipsPrimeSeeds;
82#ifdef HITLS_CRYPTO_ACVP_TESTS
83 RSA_ACVP_TESTS acvpTests;
87#ifdef HITLS_CRYPTO_RSA_BSSA
128 RSA_PkcsV15Para pkcsv15;
137 CRYPT_RSA_PrvKey *prvKey;
138 CRYPT_RSA_PubKey *pubKey;
139 CRYPT_RSA_Para *para;
140#ifdef HITLS_CRYPTO_RSA_BLINDING
146 BSL_SAL_RefCount references;
147#ifdef HITLS_CRYPTO_RSA_BSSA
148 RSA_BlindParam *blindParam;
154#define LIBCTX_FROM_RSA_CTX(ctx) ((ctx) == NULL ? NULL : (ctx)->libCtx)
155#define MDATTR_FROM_RSA_CTX(ctx) ((ctx) == NULL ? NULL : (ctx)->mdAttr)
157CRYPT_RSA_PrvKey *RSA_NewPrvKey(uint32_t bits);
158CRYPT_RSA_PubKey *RSA_NewPubKey(uint32_t bits);
159void RSA_FreePrvKey(CRYPT_RSA_PrvKey *prvKey);
160void RSA_FreePubKey(CRYPT_RSA_PubKey *pubKey);
161int32_t RSA_CalcPrvKey(
const CRYPT_RSA_Para *para, CRYPT_RSA_Ctx *ctx, BN_Optimizer *optimizer);
162void ShallowCopyCtx(CRYPT_RSA_Ctx *ctx, CRYPT_RSA_Ctx *newCtx);
163CRYPT_RSA_Para *CRYPT_RSA_DupPara(
const CRYPT_RSA_Para *para);
164#if defined(HITLS_CRYPTO_RSA_EMSA_PKCSV15) || defined(HITLS_CRYPTO_RSA_RECOVER)
165int32_t CRYPT_RSA_UnPackPkcsV15Type1(uint8_t *data, uint32_t dataLen, uint8_t *out, uint32_t *outLen);
168#ifdef HITLS_CRYPTO_RSA_EMSA_ISO9796_2
169int32_t CRYPT_RSA_SetIso9796_2(
const uint8_t *mlHash, uint32_t mlHashLen,
170 uint8_t *pad, uint32_t padLen);
171int32_t CRYPT_RSA_VerifyIso9796_2(
const uint8_t *mlHash, uint32_t mlHashLen,
172 const uint8_t *pad, uint32_t padLen);
175#if defined(HITLS_CRYPTO_RSA_BLINDING) || defined(HITLS_CRYPTO_RSA_BSSA)
182RSA_Blind *RSA_BlindNewCtx(
void);
192void RSA_BlindFreeCtx(RSA_Blind *b);
204int32_t RSA_BlindCovert(RSA_Blind *b, BN_BigNum *data, BN_BigNum *n, BN_Optimizer *opt);
217int32_t RSA_BlindInvert(RSA_Blind *b, BN_BigNum *data, BN_BigNum *n, BN_Optimizer *opt);
231int32_t RSA_BlindCreateParam(
void *libCtx, RSA_Blind *b, BN_BigNum *e, BN_BigNum *n, uint32_t bits, BN_Optimizer *opt);
233int32_t RSA_CreateBlind(RSA_Blind *b, uint32_t bits);
236#define RSA_FREE_PRV_KEY(prvKey_) \
238 RSA_FreePrvKey((prvKey_)); \
242#define RSA_FREE_PUB_KEY(pubKey_) \
244 RSA_FreePubKey((pubKey_)); \
248#define RSA_FREE_PARA(para_) \
250 CRYPT_RSA_FreePara((para_)); \
CRYPT_MD_AlgId
定义 crypt_algid.h:68
定义 crypt_local_types.h:354