19#include "hitls_build.h"
20#ifdef HITLS_CRYPTO_RSA
24#include "crypt_local_types.h"
25#include "bsl_params.h"
32#define RSA_MIN_MODULUS_BITS 1024
33#define RSA_MAX_MODULUS_BITS 16384
34#define RSA_SMALL_MODULUS_BYTES (3072 / 8)
35#define RSA_MAX_PUBEXP_BYTES (64 / 8)
36#define RSA_MIN_MODULUS_LEN (RSA_MIN_MODULUS_BITS / 8)
37#define RSA_MAX_MODULUS_LEN (RSA_MAX_MODULUS_BITS / 8)
40typedef struct RSA_Ctx CRYPT_RSA_Ctx;
41typedef struct RSA_Para CRYPT_RSA_Para;
53CRYPT_RSA_Ctx *CRYPT_RSA_NewCtx(
void);
64CRYPT_RSA_Ctx *CRYPT_RSA_NewCtxEx(
void *libCtx);
75CRYPT_RSA_Ctx *CRYPT_RSA_DupCtx(CRYPT_RSA_Ctx *keyCtx);
94void CRYPT_RSA_FreePara(CRYPT_RSA_Para *para);
102void CRYPT_RSA_FreeCtx(CRYPT_RSA_Ctx *ctx);
117int32_t CRYPT_RSA_SetPara(CRYPT_RSA_Ctx *ctx,
const CRYPT_RsaPara *para);
128uint32_t CRYPT_RSA_GetBits(
const CRYPT_RSA_Ctx *ctx);
130#ifdef HITLS_CRYPTO_RSA_GEN
143int32_t CRYPT_RSA_Gen(CRYPT_RSA_Ctx *ctx);
146#if defined(HITLS_CRYPTO_RSA_ENCRYPT) || defined(HITLS_CRYPTO_RSA_VERIFY) || defined(HITLS_CRYPTO_RSA_SIGN)
166int32_t CRYPT_RSA_PubEnc(
const CRYPT_RSA_Ctx *ctx,
const uint8_t *input, uint32_t inputLen,
167 uint8_t *out, uint32_t *outLen);
190int32_t CRYPT_RSA_PrvDec(
const CRYPT_RSA_Ctx *ctx,
const uint8_t *input, uint32_t inputLen,
191 uint8_t *out, uint32_t *outLen);
208int32_t CRYPT_RSA_SetPrvKey(CRYPT_RSA_Ctx *ctx,
const CRYPT_RsaPrv *prv);
224int32_t CRYPT_RSA_SetPubKey(CRYPT_RSA_Ctx *ctx,
const CRYPT_RsaPub *pub);
237int32_t CRYPT_RSA_GetPrvKey(
const CRYPT_RSA_Ctx *ctx,
CRYPT_RsaPrv *prv);
250int32_t CRYPT_RSA_GetPubKey(
const CRYPT_RSA_Ctx *ctx,
CRYPT_RsaPub *pub);
267int32_t CRYPT_RSA_SetPrvKeyEx(CRYPT_RSA_Ctx *ctx,
const BSL_Param *para);
283int32_t CRYPT_RSA_SetPubKeyEx(CRYPT_RSA_Ctx *ctx,
const BSL_Param *para);
296int32_t CRYPT_RSA_GetPrvKeyEx(
const CRYPT_RSA_Ctx *ctx, BSL_Param *para);
309int32_t CRYPT_RSA_GetPubKeyEx(
const CRYPT_RSA_Ctx *ctx, BSL_Param *para);
324int32_t CRYPT_RSA_SetParaEx(CRYPT_RSA_Ctx *ctx,
const BSL_Param *para);
326int32_t CRYPT_RSA_Ctrl(CRYPT_RSA_Ctx *ctx, int32_t opt,
void *val, uint32_t len);
328#ifdef HITLS_CRYPTO_RSA_BSSA
330#ifdef HITLS_CRYPTO_RSA_SIGN
345int32_t CRYPT_RSA_Blind(CRYPT_RSA_Ctx *ctx, int32_t algId,
const uint8_t *input, uint32_t inputLen,
346 uint8_t *out, uint32_t *outLen);
349#ifdef HITLS_CRYPTO_RSA_VERIFY
363int32_t CRYPT_RSA_UnBlind(
const CRYPT_RSA_Ctx *ctx,
const uint8_t *input, uint32_t inputLen,
364 uint8_t *out, uint32_t *outLen);
369#ifdef HITLS_CRYPTO_RSA_EMSA_PSS
370#if defined(HITLS_CRYPTO_RSA_SIGN) || defined(HITLS_CRYPTO_RSA_BSSA)
393 uint32_t saltLen,
const uint8_t *data, uint32_t dataLen, uint8_t *pad, uint32_t padLen);
396#ifdef HITLS_CRYPTO_RSA_VERIFY
418 uint32_t saltLen,
const uint8_t *data, uint32_t dataLen,
const uint8_t *pad, uint32_t padLen);
422#ifdef HITLS_CRYPTO_RSA_EMSA_PKCSV15
440int32_t CRYPT_RSA_SetPkcsV15Type1(
CRYPT_MD_AlgId hashId,
const uint8_t *data, uint32_t dataLen,
441 uint8_t *pad, uint32_t padLen);
443#ifdef HITLS_CRYPTO_RSA_VERIFY
461int32_t CRYPT_RSA_VerifyPkcsV15Type1(
CRYPT_MD_AlgId hashId,
const uint8_t *pad, uint32_t padLen,
462 const uint8_t *data, uint32_t dataLen);
466#if defined(HITLS_CRYPTO_RSA_SIGN) || defined(HITLS_CRYPTO_RSA_VERIFY)
476uint32_t CRYPT_RSA_GetSignLen(
const CRYPT_RSA_Ctx *ctx);
479#ifdef HITLS_CRYPTO_RSA_VERIFY
480int32_t CRYPT_RSA_VerifyData(CRYPT_RSA_Ctx *ctx,
const uint8_t *data, uint32_t dataLen,
481 const uint8_t *sign, uint32_t signLen);
483int32_t CRYPT_RSA_Verify(CRYPT_RSA_Ctx *ctx, int32_t algId,
const uint8_t *data, uint32_t dataLen,
484 const uint8_t *sign, uint32_t signLen);
487#ifdef HITLS_CRYPTO_RSA_SIGN
488int32_t CRYPT_RSA_SignData(CRYPT_RSA_Ctx *ctx,
const uint8_t *data, uint32_t dataLen,
489 uint8_t *sign, uint32_t *signLen);
491int32_t CRYPT_RSA_Sign(CRYPT_RSA_Ctx *ctx, int32_t algId,
const uint8_t *data, uint32_t dataLen,
492 uint8_t *sign, uint32_t *signLen);
495#ifdef HITLS_CRYPTO_RSA_ENCRYPT
516int32_t CRYPT_RSA_Encrypt(CRYPT_RSA_Ctx *ctx,
const uint8_t *data, uint32_t dataLen,
517 uint8_t *out, uint32_t *outLen);
520#ifdef HITLS_CRYPTO_RSA_DECRYPT
541int32_t CRYPT_RSA_Decrypt(CRYPT_RSA_Ctx *ctx,
const uint8_t *data, uint32_t dataLen,
542 uint8_t *out, uint32_t *outLen);
545#ifdef HITLS_CRYPTO_RSA_RECOVER
566int32_t CRYPT_RSA_Recover(CRYPT_RSA_Ctx *ctx,
const uint8_t *data, uint32_t dataLen, uint8_t *out, uint32_t *outLen);
568#define CRYPT_RSA_Recover NULL
571#ifdef HITLS_CRYPTO_RSA_CMP
584int32_t CRYPT_RSA_Cmp(
const CRYPT_RSA_Ctx *a,
const CRYPT_RSA_Ctx *b);
586#define CRYPT_RSA_Cmp NULL
589#ifdef HITLS_CRYPTO_RSAES_OAEP
590#ifdef HITLS_CRYPTO_RSA_ENCRYPT
610int32_t CRYPT_RSA_SetPkcs1Oaep(CRYPT_RSA_Ctx *ctx,
const uint8_t *in, uint32_t inLen, uint8_t *pad, uint32_t padLen);
613#ifdef HITLS_CRYPTO_RSA_DECRYPT
632int32_t CRYPT_RSA_VerifyPkcs1Oaep(
RSA_PadingPara *pad,
const uint8_t *in, uint32_t inLen,
const uint8_t *param,
633 uint32_t paramLen, uint8_t *msg, uint32_t *msgLen);
637#if defined(HITLS_CRYPTO_RSA_ENCRYPT) && \
638 (defined(HITLS_CRYPTO_RSAES_PKCSV15_TLS) || defined(HITLS_CRYPTO_RSAES_PKCSV15))
639int32_t CRYPT_RSA_SetPkcsV15Type2(
void *libCtx,
const uint8_t *in, uint32_t inLen,
640 uint8_t *out, uint32_t outLen);
643#ifdef HITLS_CRYPTO_RSA_DECRYPT
644#ifdef HITLS_CRYPTO_RSAES_PKCSV15
645int32_t CRYPT_RSA_VerifyPkcsV15Type2(
const uint8_t *in, uint32_t inLen, uint8_t *out, uint32_t *outLen);
648#ifdef HITLS_CRYPTO_RSAES_PKCSV15_TLS
649int32_t CRYPT_RSA_VerifyPkcsV15Type2TLS(
const uint8_t *in, uint32_t inLen, uint8_t *out, uint32_t *outLen);
661int32_t CRYPT_RSA_GetSecBits(
const CRYPT_RSA_Ctx *ctx);
663#ifdef HITLS_CRYPTO_RSA_CHECK
676int32_t CRYPT_RSA_Check(uint32_t checkType,
const CRYPT_RSA_Ctx *pkey1,
const CRYPT_RSA_Ctx *pkey2);
680#ifdef HITLS_CRYPTO_KEY_DECODE_CHAIN
688int32_t CRYPT_RSA_Import(CRYPT_RSA_Ctx *ctx,
const BSL_Param *params);
697int32_t CRYPT_RSA_Export(
const CRYPT_RSA_Ctx *ctx, BSL_Param *params);
CRYPT_MD_AlgId
定义 crypt_algid.h:68
定义 crypt_local_types.h:63
定义 crypt_local_types.h:354