reduce benchmark stack use, reduce max variable sizes

This commit is contained in:
toddouska
2015-05-07 14:24:58 -07:00
parent 4fe04c6bed
commit 8f8fb3834a

View File

@ -93,6 +93,11 @@
#define SHOW_INTEL_CYCLES #define SHOW_INTEL_CYCLES
#endif #endif
/* let's use buffers, we have them */
#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048)
#define USE_CERT_BUFFERS_2048
#endif
#if defined(USE_CERT_BUFFERS_1024) || defined(USE_CERT_BUFFERS_2048) \ #if defined(USE_CERT_BUFFERS_1024) || defined(USE_CERT_BUFFERS_2048) \
|| !defined(NO_DH) || !defined(NO_DH)
/* include test cert and key buffers for use with NO_FILESYSTEM */ /* include test cert and key buffers for use with NO_FILESYSTEM */
@ -1127,38 +1132,30 @@ void bench_rsa(void)
{ {
int i; int i;
int ret; int ret;
byte tmp[3072];
size_t bytes; size_t bytes;
word32 idx = 0; word32 idx = 0;
const byte* tmp;
byte message[] = "Everyone gets Friday off."; byte message[] = "Everyone gets Friday off.";
byte enc[512]; /* for up to 4096 bit */ byte enc[256]; /* for up to 2048 bit */
const int len = (int)strlen((char*)message); const int len = (int)strlen((char*)message);
double start, total, each, milliEach; double start, total, each, milliEach;
RsaKey rsaKey; RsaKey rsaKey;
int rsaKeySz = 2048; /* used in printf */ int rsaKeySz = 2048; /* used in printf */
#ifdef USE_CERT_BUFFERS_1024 #ifdef USE_CERT_BUFFERS_1024
XMEMCPY(tmp, rsa_key_der_1024, sizeof_rsa_key_der_1024); tmp = rsa_key_der_1024;
bytes = sizeof_rsa_key_der_1024; bytes = sizeof_rsa_key_der_1024;
rsaKeySz = 1024; rsaKeySz = 1024;
#elif defined(USE_CERT_BUFFERS_2048) #elif defined(USE_CERT_BUFFERS_2048)
XMEMCPY(tmp, rsa_key_der_2048, sizeof_rsa_key_der_2048); tmp = rsa_key_der_2048;
bytes = sizeof_rsa_key_der_2048; bytes = sizeof_rsa_key_der_2048;
#else #else
FILE* file = fopen(certRSAname, "rb"); #error "need a cert buffer size"
if (!file) {
printf("can't find %s, Please run from wolfSSL home dir\n", certRSAname);
return;
}
bytes = fread(tmp, 1, sizeof(tmp), file);
fclose(file);
#endif /* USE_CERT_BUFFERS */ #endif /* USE_CERT_BUFFERS */
#ifdef HAVE_CAVIUM #ifdef HAVE_CAVIUM
if (wc_RsaInitCavium(&rsaKey, CAVIUM_DEV_ID) != 0) if (wc_RsaInitCavium(&rsaKey, CAVIUM_DEV_ID) != 0)
printf("RSA init cavium failed\n"); printf("RSA init cavium failed\n");
@ -1169,7 +1166,7 @@ void bench_rsa(void)
return; return;
} }
ret = wc_RsaPrivateKeyDecode(tmp, &idx, &rsaKey, (word32)bytes); ret = wc_RsaPrivateKeyDecode(tmp, &idx, &rsaKey, (word32)bytes);
start = current_time(1); start = current_time(1);
for (i = 0; i < ntimes; i++) for (i = 0; i < ntimes; i++)
@ -1190,7 +1187,7 @@ void bench_rsa(void)
start = current_time(1); start = current_time(1);
for (i = 0; i < ntimes; i++) { for (i = 0; i < ntimes; i++) {
byte out[512]; /* for up to 4096 bit */ byte out[256]; /* for up to 2048 bit */
wc_RsaPrivateDecrypt(enc, (word32)ret, out, sizeof(out), &rsaKey); wc_RsaPrivateDecrypt(enc, (word32)ret, out, sizeof(out), &rsaKey);
} }
@ -1229,16 +1226,16 @@ void bench_rsa(void)
void bench_dh(void) void bench_dh(void)
{ {
int i ; int i ;
byte tmp[1024];
size_t bytes; size_t bytes;
word32 idx = 0, pubSz, privSz = 0, pubSz2, privSz2, agreeSz; word32 idx = 0, pubSz, privSz = 0, pubSz2, privSz2, agreeSz;
const byte* tmp;
byte pub[256]; /* for 2048 bit */ byte pub[256]; /* for 2048 bit */
byte priv[256]; /* for 2048 bit */
byte pub2[256]; /* for 2048 bit */ byte pub2[256]; /* for 2048 bit */
byte priv2[256]; /* for 2048 bit */
byte agree[256]; /* for 2048 bit */ byte agree[256]; /* for 2048 bit */
byte priv[32]; /* for 2048 bit */
byte priv2[32]; /* for 2048 bit */
double start, total, each, milliEach; double start, total, each, milliEach;
DhKey dhKey; DhKey dhKey;
int dhKeySz = 2048; /* used in printf */ int dhKeySz = 2048; /* used in printf */
@ -1246,26 +1243,19 @@ void bench_dh(void)
(void)idx; (void)idx;
(void)tmp; (void)tmp;
#ifdef USE_CERT_BUFFERS_1024 #ifdef USE_CERT_BUFFERS_1024
XMEMCPY(tmp, dh_key_der_1024, sizeof_dh_key_der_1024); tmp = dh_key_der_1024;
bytes = sizeof_dh_key_der_1024; bytes = sizeof_dh_key_der_1024;
dhKeySz = 1024; dhKeySz = 1024;
#elif defined(USE_CERT_BUFFERS_2048) #elif defined(USE_CERT_BUFFERS_2048)
XMEMCPY(tmp, dh_key_der_2048, sizeof_dh_key_der_2048); tmp = dh_key_der_2048;
bytes = sizeof_dh_key_der_2048; bytes = sizeof_dh_key_der_2048;
#elif defined(NO_ASN) #elif defined(NO_ASN)
dhKeySz = 1024; dhKeySz = 1024;
/* do nothing, but don't use default FILE */ /* do nothing, but don't use default FILE */
#else #else
FILE* file = fopen(certDHname, "rb"); #error "need to define a cert buffer size"
if (!file) {
printf("can't find %s, Please run from wolfSSL home dir\n", certDHname);
return;
}
bytes = fread(tmp, 1, sizeof(tmp), file);
#endif /* USE_CERT_BUFFERS */ #endif /* USE_CERT_BUFFERS */
@ -1274,9 +1264,6 @@ void bench_dh(void)
bytes = wc_DhSetKey(&dhKey, dh_p, sizeof(dh_p), dh_g, sizeof(dh_g)); bytes = wc_DhSetKey(&dhKey, dh_p, sizeof(dh_p), dh_g, sizeof(dh_g));
#else #else
bytes = wc_DhKeyDecode(tmp, &idx, &dhKey, (word32)bytes); bytes = wc_DhKeyDecode(tmp, &idx, &dhKey, (word32)bytes);
#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048)
fclose(file);
#endif
#endif #endif
if (bytes != 0) { if (bytes != 0) {
printf("dhekydecode failed, can't benchmark\n"); printf("dhekydecode failed, can't benchmark\n");
@ -1576,11 +1563,11 @@ void bench_eccKeyAgree(void)
ecc_key genKey, genKey2; ecc_key genKey, genKey2;
double start, total, each, milliEach; double start, total, each, milliEach;
int i, ret; int i, ret;
byte shared[1024]; byte shared[32];
byte sig[1024]; byte sig[64+16]; /* der encoding too */
byte digest[32]; byte digest[32];
word32 x = 0; word32 x = 0;
wc_ecc_init(&genKey); wc_ecc_init(&genKey);
wc_ecc_init(&genKey2); wc_ecc_init(&genKey2);
@ -1595,7 +1582,7 @@ void bench_eccKeyAgree(void)
return; return;
} }
/* 256 bit */ /* 256 bit */
start = current_time(1); start = current_time(1);
for(i = 0; i < agreeTimes; i++) { for(i = 0; i < agreeTimes; i++) {
@ -1603,7 +1590,7 @@ void bench_eccKeyAgree(void)
ret = wc_ecc_shared_secret(&genKey, &genKey2, shared, &x); ret = wc_ecc_shared_secret(&genKey, &genKey2, shared, &x);
if (ret != 0) { if (ret != 0) {
printf("ecc_shared_secret failed\n"); printf("ecc_shared_secret failed\n");
return; return;
} }
} }
@ -1686,7 +1673,7 @@ void bench_curve25519KeyAgree(void)
curve25519_key genKey, genKey2; curve25519_key genKey, genKey2;
double start, total, each, milliEach; double start, total, each, milliEach;
int i, ret; int i, ret;
byte shared[1024]; byte shared[32];
word32 x = 0; word32 x = 0;
wc_curve25519_init(&genKey); wc_curve25519_init(&genKey);