-
/*
-
* openssl genrsa -out rsa1536.key 1536
-
* openssl rsa -pubout < rsa1536.key > rsa1536.pub
-
* gcc -o benchmark benchmark.c -lcrypto
-
*
-
*/
-
#include <unistd.h>
-
#include <signal.h>
-
#include <stdio.h>
-
#include <string.h>
-
#include <openssl/rsa.h>
-
#include <openssl/pem.h>
-
-
int global_flag = 0;
-
void signal_alrm(int sig)
-
{
-
global_flag = 1;
-
}
-
-
int main(int argc, char *argv[])
-
{
-
char *buf;
-
int size, ret;
-
FILE *pubfp;
-
FILE *prifp;
-
RSA *pub;
-
RSA *pri;
-
int i;
-
-
OpenSSL_add_all_algorithms();
-
ERR_load_crypto_strings();
-
-
pubfp = fopen("rsa1536.pub", "r");
-
prifp = fopen("rsa1536.key", "r");
-
pub = (RSA *)PEM_read_RSA_PUBKEY(pubfp, NULL, NULL, NULL);
-
pri = (RSA *)PEM_read_RSAPrivateKey(prifp, NULL, NULL, NULL);
-
fclose(pubfp);
-
fclose(prifp);
-
-
if (pri == NULL) {
-
printf("PEM_read_RSAPrivateKey error\n");
-
ERR_print_errors_fp(stderr);
-
return 1;
-
} else if (pub == NULL) {
-
printf("PEM_read_RSA_PUBKEY error\n");
-
ERR_print_errors_fp(stderr);
-
RSA_free(pub);
-
return 1;
-
}
-
-
size = RSA_size(pri);
-
buf = (char *)malloc(size);
-
-
signal(SIGALRM, signal_alrm);
-
alarm(10);
-
i = global_flag = 0;
-
while (1) {
-
if (0 == RSA_sign(NID_md5, "0123456789abcdef", 16, buf, &ret, pri)) {
-
printf("RSA_sign error\n");
-
ERR_print_errors_fp(stderr);
-
free(buf); RSA_free(pub); RSA_free(pri);
-
return 1;
-
}
-
i++;
-
if (global_flag) break;
-
}
-
printf("RSA_sign: %d\n", i);
-
-
i = global_flag = 0;
-
alarm(10);
-
while (1) {
-
if (0 == RSA_verify(NID_md5, "0123456789abcdef", 16, buf, ret, pub)) {
-
printf("RSA_verify error\n");
-
ERR_print_errors_fp(stderr);
-
free(buf); RSA_free(pub); RSA_free(pri);
-
return 1;
-
}
-
i++;
-
if (global_flag) break;
-
}
-
printf("RSA_verify: %d\n", i);
-
-
free(buf); RSA_free(pub); RSA_free(pri);
-
return 0;
-
}
最新评论