代码拉取完成,页面将自动刷新
/*****************************************************************************
Filename: rsa.h
Author : Chuck Li (lch0821@foxmail.com)
Date : 2018-01-19 18:29:32
Description:
*****************************************************************************/
#ifndef __RSA_H__
#define __RSA_H__
#include <stdint.h>
// RSA key lengths
#define RSA_MIN_MODULUS_BITS 508
#define RSA_MAX_MODULUS_BITS 2048
#define RSA_MAX_MODULUS_LEN ((RSA_MAX_MODULUS_BITS + 7) / 8)
#define RSA_MAX_PRIME_BITS ((RSA_MAX_MODULUS_BITS + 1) / 2)
#define RSA_MAX_PRIME_LEN ((RSA_MAX_PRIME_BITS + 7) / 8)
// Error codes
#define ERR_WRONG_DATA 0x1001
#define ERR_WRONG_LEN 0x1002
typedef struct {
uint32_t bits;
uint8_t modulus[RSA_MAX_MODULUS_LEN];
uint8_t exponent[RSA_MAX_MODULUS_LEN];
} rsa_pk_t;
typedef struct {
uint32_t bits;
uint8_t modulus[RSA_MAX_MODULUS_LEN];
uint8_t public_exponet[RSA_MAX_MODULUS_LEN];
uint8_t exponent[RSA_MAX_MODULUS_LEN];
uint8_t prime1[RSA_MAX_PRIME_LEN];
uint8_t prime2[RSA_MAX_PRIME_LEN];
uint8_t prime_exponent1[RSA_MAX_PRIME_LEN];
uint8_t prime_exponent2[RSA_MAX_PRIME_LEN];
uint8_t coefficient[RSA_MAX_PRIME_LEN];
} rsa_sk_t;
int rsa_get_sk_from_file(char *file, rsa_sk_t *sk);
int rsa_generate_keys(rsa_pk_t *pk, rsa_sk_t *sk, uint32_t key_bits);
int rsa_public_encrypt(uint8_t *out, uint32_t *out_len, uint8_t *in, uint32_t in_len, rsa_pk_t *pk);
int rsa_public_decrypt(uint8_t *out, uint32_t *out_len, uint8_t *in, uint32_t in_len, rsa_pk_t *pk);
int rsa_private_encrypt(uint8_t *out, uint32_t *out_len, uint8_t *in, uint32_t in_len, rsa_sk_t *sk);
int rsa_private_decrypt(uint8_t *out, uint32_t *out_len, uint8_t *in, uint32_t in_len, rsa_sk_t *sk);
#endif // __RSA_H__
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。