ADD_LIBRARY(authoal STATIC ${SRC_LIST_DECRYPT_LIB})
ADD_EXECUTABLE(eaidkAuth ${SRC_LIST_ENCRYPT_BIN})
工程结构如下:
引入完成之后我们就可以开始RSA代码编写。
3、RSA代码编写
authref.h 头文件代码如下:
#ifndef AUTHREF_H
#define AUTHREF_H
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#undef DEBUG
#define RSA_KEY_SIZE 1024 // RSA 公钥的位数
#define EXPONENT 65537
#define BUFFER_SIZE 1024
#define RSA_KEY_LEN 256
#define AES_KEY_DEC_LEN 8
#define LICENSE_DEC_LEN 64
typedef struct __rsa
{
uint8_t buf[BUFFER_SIZE*8];
uint8_t* rsa_n;
uint8_t* rsa_e;
uint8_t* rsa_d;
uint8_t* rsa_p;
uint8_t* rsa_q;
uint8_t* rsa_dp;
uint8_t* rsa_dq;
uint8_t* rsa_qp;
uint32_t n_len;
uint32_t e_len;
uint32_t d_len;
uint32_t p_len;
uint32_t q_len;
uint32_t dp_len;
uint32_t dq_len;
uint32_t qp_len;
}T_rsa;
void generate_rsa(T_rsa* r);
void init_rsa_keys(T_rsa* rsa);
void rsa_encrypt( const T_rsa *r,
const unsigned char* plaintext,
unsigned int plaintext_size,
unsigned char *ciphertext,
size_t *ciphertext_size);
void rsa_decrypt(
const T_rsa *r,
const unsigned char* ciphertext,
//unsigned int ciphertext_size,
unsigned char *plaintext,
size_t *plaintext_size);
#ifdef __cplusplus
}
#endif
#endif //AUTHREF_H
authref.c 代码如下:
#include “authref.h”
#include “mbedtls/entropy.h”
#include “mbedtls/ctr_drbg.h”
#include “mbedtls/rsa.h”
#define RSA_KEY_SIZE 1024 // RSA 公