⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rsa.h

📁 Dr.Sec高速密码算法库Windows版
💻 H
字号:
#ifndef __DRSEC_RSA_H
#define __DRSEC_RSA_H

#if defined(__cplusplus)
extern "C"
{
#endif

#ifndef u8
#define u8 unsigned char
#endif 

#ifndef u32
#define u32 unsigned long
#endif

#define MIN_RSA_MODULUS_BITS 508
#define MAX_RSA_MODULUS_BITS 2048
#define MAX_RSA_MODULUS_LEN ((MAX_RSA_MODULUS_BITS + 7) / 8)
#define MAX_RSA_PRIME_BITS ((MAX_RSA_MODULUS_BITS + 1) / 2)
#define MAX_RSA_PRIME_LEN ((MAX_RSA_PRIME_BITS + 7) / 8)

typedef struct {
  u32 bits;                           /* length in bits of modulus */
  u8  modulus[MAX_RSA_MODULUS_LEN];                    /* modulus */
  u8  exponent[MAX_RSA_MODULUS_LEN];           /* public exponent */
}rsaPublicKey;

typedef struct {
  u32 bits;                           /* length in bits of modulus */
  u8  modulus[MAX_RSA_MODULUS_LEN];                    /* modulus */
  u8  publicExponent[MAX_RSA_MODULUS_LEN];     /* public exponent */
  u8  exponent[MAX_RSA_MODULUS_LEN];          /* private exponent */
  u8  prime[2][MAX_RSA_PRIME_LEN];               /* prime factors */
  u8  primeExponent[2][MAX_RSA_PRIME_LEN];   /* exponents for CRT */
  u8  coefficient[MAX_RSA_PRIME_LEN];          /* CRT coefficient */
}rsaPrivateKey;

/*	PKCS#1	*/
int ds_rsaGenerateKeyPair(rsaPublicKey *pbKey, rsaPrivateKey *pvKey, u32 bits, u32 useFermat4);
int ds_rsaPublicEncrypt  (u8 *out, u32 *outLen, u8 *in, u32 inLen, rsaPublicKey  *pbKey, u8 *random, u32 randomLen);
int ds_rsaPrivateEncrypt (u8 *out, u32 *outLen, u8 *in, u32 inLen, rsaPrivateKey *pvKey);
int ds_rsaPublicDecrypt  (u8 *out, u32 *outLen, u8 *in, u32 inLen, rsaPublicKey  *pbKey);
int ds_rsaPrivateDecrypt (u8 *out, u32 *outLen, u8 *in, u32 inLen, rsaPrivateKey *pvKey);

#if defined(__cplusplus)
}
#endif

#endif /* __DRSEC_RSA_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -