本文使用代码描述如何使用指定OpenSSL engine,进行RSA、SHA和AES运算。
编译时,带上-lcrypto:
gcc -g -o test test.c -L/usr/local/openssl/lib -lcrypto
1. RSA运算
#include <openssl/evp.h>
#include <openssl/ossl_typ.h>
#include <openssl/engine.h>
#include <openssl/rsa.h>
#include <sys/time.h>
#include <unistd.h>
#include <stdio.h>
#include <unistd.h>
#include <stdint.h>
#include <string.h>
#include <fcntl.h>
#include <time.h>
#include <pthread.h>
#include <stdlib.h>
#include <stdint.h>
void load_priv_key(RSA *rsa)
{
FILE *fp;
RSA_set_app_data(rsa, malloc(sizeof(char)*32));
fp = fopen(key_file,"r");
if(fp){
fread(RSA_get_app_data(rsa), 32, sizeof(char), fp);
fclose(fp);
}
}
void *test(void *para1)
{
ENGINE *eng = NULL;
//指定所使用的OpenSSL Engine的Engine id,如为GM
const char *eng_id = "GM";
unsigned char from[from_len];
unsigned char to[48];
RSA *rsa;
int i;
for(i=0;i<LOOP;i++