forked from wolfSSL/wolfssl
update RSA keygen benchmark and test with asynccrypt
This commit is contained in:
@ -1369,12 +1369,22 @@ static void* benchmarks_do(void* args)
|
||||
#ifdef WOLFSSL_KEY_GEN
|
||||
if (bench_all || (bench_asym_algs & BENCH_RSA_KEYGEN)) {
|
||||
#ifndef NO_SW_BENCH
|
||||
if (bench_asym_algs & BENCH_RSA_SZ) {
|
||||
bench_rsaKeyGen_size(0, bench_size);
|
||||
}
|
||||
else {
|
||||
bench_rsaKeyGen(0);
|
||||
}
|
||||
#endif
|
||||
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_RSA)
|
||||
/* async supported in simulator only */
|
||||
#ifdef WOLFSSL_ASYNC_CRYPT_TEST
|
||||
if (bench_asym_algs & BENCH_RSA_SZ) {
|
||||
bench_rsaKeyGen_size(1, bench_size);
|
||||
}
|
||||
else {
|
||||
bench_rsaKeyGen(1);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
@ -1390,7 +1400,12 @@ static void* benchmarks_do(void* args)
|
||||
|
||||
#ifdef WOLFSSL_KEY_GEN
|
||||
if (bench_asym_algs & BENCH_RSA_SZ) {
|
||||
#ifndef NO_SW_BENCH
|
||||
bench_rsa_key(0, bench_size);
|
||||
#endif
|
||||
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_RSA)
|
||||
bench_rsa_key(1, bench_size);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@ -3696,21 +3711,16 @@ void bench_hmac_sha512(int doAsync)
|
||||
#ifndef NO_RSA
|
||||
|
||||
#if defined(WOLFSSL_KEY_GEN)
|
||||
void bench_rsaKeyGen(int doAsync)
|
||||
static void bench_rsaKeyGen_helper(int doAsync, int keySz)
|
||||
{
|
||||
RsaKey genKey[BENCH_MAX_PENDING];
|
||||
double start;
|
||||
int ret = 0, i, count = 0, times, pending = 0;
|
||||
int k, keySz;
|
||||
const int keySizes[2] = {1024, 2048};
|
||||
const long rsa_e_val = WC_RSA_EXPONENT;
|
||||
|
||||
/* clear for done cleanup */
|
||||
XMEMSET(genKey, 0, sizeof(genKey));
|
||||
|
||||
for (k = 0; k < (int)(sizeof(keySizes)/sizeof(int)); k++) {
|
||||
keySz = keySizes[k];
|
||||
|
||||
bench_stats_start(&count, &start);
|
||||
do {
|
||||
/* while free pending slots in queue, submit ops */
|
||||
@ -3739,16 +3749,28 @@ void bench_rsaKeyGen(int doAsync)
|
||||
exit:
|
||||
bench_stats_asym_finish("RSA", keySz, "key gen", doAsync, count, start, ret);
|
||||
|
||||
if (ret < 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* cleanup */
|
||||
for (i = 0; i < BENCH_MAX_PENDING; i++) {
|
||||
wc_FreeRsaKey(&genKey[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void bench_rsaKeyGen(int doAsync)
|
||||
{
|
||||
int k, keySz;
|
||||
const int keySizes[2] = {1024, 2048};
|
||||
|
||||
for (k = 0; k < (int)(sizeof(keySizes)/sizeof(int)); k++) {
|
||||
keySz = keySizes[k];
|
||||
bench_rsaKeyGen_helper(doAsync, keySz);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void bench_rsaKeyGen_size(int doAsync, int keySz)
|
||||
{
|
||||
bench_rsaKeyGen_helper(doAsync, keySz);
|
||||
}
|
||||
#endif /* WOLFSSL_KEY_GEN */
|
||||
|
||||
#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) && \
|
||||
@ -3970,14 +3992,21 @@ exit_bench_rsa:
|
||||
/* bench any size of RSA key */
|
||||
void bench_rsa_key(int doAsync, int rsaKeySz)
|
||||
{
|
||||
int ret = 0, i;
|
||||
int ret = 0, i, pending = 0;
|
||||
RsaKey rsaKey[BENCH_MAX_PENDING];
|
||||
int isPending[BENCH_MAX_PENDING];
|
||||
int exp = 65537;
|
||||
|
||||
/* clear for done cleanup */
|
||||
XMEMSET(rsaKey, 0, sizeof(rsaKey));
|
||||
XMEMSET(isPending, 0, sizeof(isPending));
|
||||
|
||||
/* init keys */
|
||||
do {
|
||||
pending = 0;
|
||||
for (i = 0; i < BENCH_MAX_PENDING; i++) {
|
||||
if (!isPending[i]) { /* if making the key is pending then just call
|
||||
* wc_MakeRsaKey again */
|
||||
/* setup an async context for each key */
|
||||
if ((ret = wc_InitRsaKey_ex(&rsaKey[i], HEAP_HINT,
|
||||
doAsync ? devId : INVALID_DEVID)) < 0) {
|
||||
@ -3989,13 +4018,20 @@ void bench_rsa_key(int doAsync, int rsaKeySz)
|
||||
if (ret != 0)
|
||||
goto exit_bench_rsa_key;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* create the RSA key */
|
||||
if ((ret = wc_MakeRsaKey(&rsaKey[i], rsaKeySz, 65537, &rng)) != 0) {
|
||||
ret = wc_MakeRsaKey(&rsaKey[i], rsaKeySz, exp, &rng);
|
||||
if (ret == WC_PENDING_E) {
|
||||
isPending[i] = 1;
|
||||
pending = 1;
|
||||
}
|
||||
else if (ret != 0) {
|
||||
printf("wc_MakeRsaKey failed! %d\n", ret);
|
||||
goto exit_bench_rsa_key;
|
||||
}
|
||||
}
|
||||
} /* for i */
|
||||
} while (pending > 0);
|
||||
|
||||
bench_rsa_helper(doAsync, rsaKey, rsaKeySz);
|
||||
exit_bench_rsa_key:
|
||||
|
@ -76,6 +76,7 @@ void bench_hmac_sha256(int);
|
||||
void bench_hmac_sha384(int);
|
||||
void bench_hmac_sha512(int);
|
||||
void bench_rsaKeyGen(int);
|
||||
void bench_rsaKeyGen_size(int, int);
|
||||
void bench_rsa(int);
|
||||
void bench_rsa_key(int, int);
|
||||
void bench_dh(int);
|
||||
|
Reference in New Issue
Block a user