Skip to content

Commit f26a52e

Browse files
authored
Merge pull request #9494 from SparkiDev/benchmark_ecdsa_p521
Benchmark ECDSA: use digest size instead of key size
2 parents 093f15c + 886b0c2 commit f26a52e

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

wolfcrypt/benchmark/benchmark.c

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12040,6 +12040,7 @@ void bench_ecc(int useDeviceID, int curveId)
1204012040
int ret = 0, i, times, count, pending = 0;
1204112041
int deviceID;
1204212042
int keySize;
12043+
int dgstSize;
1204312044
char name[BENCH_ECC_NAME_SZ];
1204412045
WC_DECLARE_ARRAY(genKey, ecc_key, BENCH_MAX_PENDING,
1204512046
sizeof(ecc_key), HEAP_HINT);
@@ -12068,7 +12069,7 @@ void bench_ecc(int useDeviceID, int curveId)
1206812069
WC_DECLARE_ARRAY(sig, byte,
1206912070
BENCH_MAX_PENDING, ECC_MAX_SIG_SIZE, HEAP_HINT);
1207012071
WC_DECLARE_ARRAY(digest, byte,
12071-
BENCH_MAX_PENDING, MAX_ECC_BYTES, HEAP_HINT);
12072+
BENCH_MAX_PENDING, WC_MAX_DIGEST_SIZE, HEAP_HINT);
1207212073
#endif
1207312074

1207412075
bench_stats_prepare();
@@ -12099,6 +12100,29 @@ void bench_ecc(int useDeviceID, int curveId)
1209912100
deviceID = useDeviceID ? devId : INVALID_DEVID;
1210012101

1210112102
keySize = wc_ecc_get_curve_size_from_id(curveId);
12103+
if (keySize < 28) {
12104+
/* SHA-1 */
12105+
dgstSize = 20;
12106+
}
12107+
else if (keySize < 32) {
12108+
/* SHA-224/SHA512-224/SHA3-224 */
12109+
dgstSize = 28;
12110+
}
12111+
else if (keySize < 48) {
12112+
/* SHA-256/SHA512-256/SHA3-256 */
12113+
dgstSize = 32;
12114+
}
12115+
else if (keySize < 64) {
12116+
/* SHA-384/SHA3-384 */
12117+
dgstSize = 48;
12118+
}
12119+
else {
12120+
/* SHA-512/SHA3-512 */
12121+
dgstSize = 64;
12122+
}
12123+
if (dgstSize > WC_MAX_DIGEST_SIZE) {
12124+
dgstSize = WC_MAX_DIGEST_SIZE;
12125+
}
1210212126

1210312127
/* init keys */
1210412128
for (i = 0; i < BENCH_MAX_PENDING; i++) {
@@ -12187,7 +12211,7 @@ void bench_ecc(int useDeviceID, int curveId)
1218712211

1218812212
/* Init digest to sign */
1218912213
for (i = 0; i < BENCH_MAX_PENDING; i++) {
12190-
for (count = 0; count < keySize; count++) {
12214+
for (count = 0; count < dgstSize; count++) {
1219112215
digest[i][count] = (byte)count;
1219212216
}
1219312217
}
@@ -12207,7 +12231,7 @@ void bench_ecc(int useDeviceID, int curveId)
1220712231
x[i] = ECC_MAX_SIG_SIZE;
1220812232
}
1220912233

12210-
ret = wc_ecc_sign_hash(digest[i], (word32)keySize, sig[i],
12234+
ret = wc_ecc_sign_hash(digest[i], (word32)dgstSize, sig[i],
1221112235
&x[i], GLOBAL_RNG, genKey[i]);
1221212236

1221312237
if (!bench_async_handle(&ret,
@@ -12259,7 +12283,7 @@ void bench_ecc(int useDeviceID, int curveId)
1225912283
}
1226012284

1226112285
ret = wc_ecc_verify_hash(sig[i], x[i], digest[i],
12262-
(word32)keySize, &verify[i],
12286+
(word32)dgstSize, &verify[i],
1226312287
genKey[i]);
1226412288

1226512289
if (!bench_async_handle(&ret,

0 commit comments

Comments
 (0)