Fix line length issues. Add debug msg in test to show number of non-blocking iterations.

```
$ ./configure --enable-ecc=nonblock --enable-sp=yes,nonblock CFLAGS="-DWOLFSSL_PUBLIC_MP" --enable-debug && make
$ ./wolfcrypt/test/testwolfcrypt
...
ECC non-block sign: 18063 times
ECC non-block verify: 35759 times
ECC      test passed!
```
This commit is contained in:
David Garske
2020-07-21 10:41:25 -07:00
parent 80f5fe1494
commit 9268ae1397
2 changed files with 33 additions and 13 deletions

View File

@@ -4917,11 +4917,13 @@ int wc_ecc_sign_hash_ex(const byte* in, word32 inlen, WC_RNG* rng,
if (ecc_sets[key->idx].id == ECC_SECP256R1) {
#ifdef WC_ECC_NONBLOCK
if (key->nb_ctx) {
return sp_ecc_sign_256_nb(&key->nb_ctx->sp_ctx, in, inlen, rng, &key->k, r, s, sign_k, key->heap);
return sp_ecc_sign_256_nb(&key->nb_ctx->sp_ctx, in, inlen, rng,
&key->k, r, s, sign_k, key->heap);
}
#endif
#ifndef WC_ECC_NONBLOCK_ONLY
return sp_ecc_sign_256(in, inlen, rng, &key->k, r, s, sign_k, key->heap);
return sp_ecc_sign_256(in, inlen, rng, &key->k, r, s, sign_k,
key->heap);
#else
return NOT_COMPILED_IN;
#endif
@@ -4931,11 +4933,13 @@ int wc_ecc_sign_hash_ex(const byte* in, word32 inlen, WC_RNG* rng,
if (ecc_sets[key->idx].id == ECC_SECP384R1) {
#ifdef WC_ECC_NONBLOCK
if (key->nb_ctx) {
return sp_ecc_sign_384_nb(&key->nb_ctx->sp_ctx, in, inlen, rng, &key->k, r, s, sign_k, key->heap);
return sp_ecc_sign_384_nb(&key->nb_ctx->sp_ctx, in, inlen, rng,
&key->k, r, s, sign_k, key->heap);
}
#endif
#ifndef WC_ECC_NONBLOCK_ONLY
return sp_ecc_sign_384(in, inlen, rng, &key->k, r, s, sign_k, key->heap);
return sp_ecc_sign_384(in, inlen, rng, &key->k, r, s, sign_k,
key->heap);
#else
return NOT_COMPILED_IN;
#endif
@@ -5985,12 +5989,12 @@ int wc_ecc_verify_hash_ex(mp_int *r, mp_int *s, const byte* hash,
#if defined(WOLFSSL_DSP) && !defined(FREESCALE_LTC_ECC)
if (key->handle != -1) {
return sp_dsp_ecc_verify_256(key->handle, hash, hashlen, key->pubkey.x, key->pubkey.y,
key->pubkey.z, r, s, res, key->heap);
return sp_dsp_ecc_verify_256(key->handle, hash, hashlen, key->pubkey.x,
key->pubkey.y, key->pubkey.z, r, s, res, key->heap);
}
if (wolfSSL_GetHandleCbSet() == 1) {
return sp_dsp_ecc_verify_256(0, hash, hashlen, key->pubkey.x, key->pubkey.y,
key->pubkey.z, r, s, res, key->heap);
return sp_dsp_ecc_verify_256(0, hash, hashlen, key->pubkey.x,
key->pubkey.y, key->pubkey.z, r, s, res, key->heap);
}
#endif
@@ -6002,7 +6006,8 @@ int wc_ecc_verify_hash_ex(mp_int *r, mp_int *s, const byte* hash,
}
#endif
#if (defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_HAVE_SP_ECC)) && !defined(FREESCALE_LTC_ECC)
#if (defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_HAVE_SP_ECC)) && \
!defined(FREESCALE_LTC_ECC)
if (key->idx != ECC_CUSTOM_IDX
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_ECC)
&& key->asyncDev.marker != WOLFSSL_ASYNC_MARKER_ECC
@@ -6013,7 +6018,8 @@ int wc_ecc_verify_hash_ex(mp_int *r, mp_int *s, const byte* hash,
#ifdef WC_ECC_NONBLOCK
if (key->nb_ctx) {
return sp_ecc_verify_256_nb(&key->nb_ctx->sp_ctx, hash, hashlen,
key->pubkey.x, key->pubkey.y, key->pubkey.z, r, s, res, key->heap);
key->pubkey.x, key->pubkey.y, key->pubkey.z, r, s, res,
key->heap);
}
#endif
#ifndef WC_ECC_NONBLOCK_ONLY
@@ -6029,7 +6035,8 @@ int wc_ecc_verify_hash_ex(mp_int *r, mp_int *s, const byte* hash,
#ifdef WC_ECC_NONBLOCK
if (key->nb_ctx) {
return sp_ecc_verify_384_nb(&key->nb_ctx->sp_ctx, hash, hashlen,
key->pubkey.x, key->pubkey.y, key->pubkey.z, r, s, res, key->heap);
key->pubkey.x, key->pubkey.y, key->pubkey.z, r, s, res,
key->heap);
}
#endif
#ifndef WC_ECC_NONBLOCK_ONLY

View File

@@ -20273,7 +20273,7 @@ static int crypto_ecc_verify(const uint8_t *key, uint32_t keySz,
const uint8_t *hash, uint32_t hashSz, const uint8_t *sig, uint32_t sigSz,
uint32_t curveSz, int curveId)
{
int ret, verify_res = 0;
int ret, verify_res = 0, count = 0;
mp_int r, s;
ecc_key ecc;
ecc_nb_ctx_t nb_ctx;
@@ -20340,9 +20340,13 @@ static int crypto_ecc_verify(const uint8_t *key, uint32_t keySz,
&verify_res, /* verification result 1=success */
&ecc
);
count++;
/* TODO: Real-time work can be called here */
} while (ret == FP_WOULDBLOCK);
#ifdef DEBUG_WOLFSSL
printf("ECC non-block verify: %d times\n", count);
#endif
}
/* check verify result */
@@ -20354,6 +20358,8 @@ static int crypto_ecc_verify(const uint8_t *key, uint32_t keySz,
mp_clear(&s);
wc_ecc_free(&ecc);
(void)count;
return ret;
}
@@ -20362,7 +20368,7 @@ static int crypto_ecc_sign(const uint8_t *key, uint32_t keySz,
const uint8_t *hash, uint32_t hashSz, uint8_t *sig, uint32_t* sigSz,
uint32_t curveSz, int curveId, WC_RNG* rng)
{
int ret;
int ret, count = 0;
mp_int r, s;
ecc_key ecc;
ecc_nb_ctx_t nb_ctx;
@@ -20418,9 +20424,14 @@ static int crypto_ecc_sign(const uint8_t *key, uint32_t keySz,
rng, &ecc, /* random and key context */
&r, &s /* r/s as mp_int */
);
count++;
/* TODO: Real-time work can be called here */
} while (ret == FP_WOULDBLOCK);
#ifdef DEBUG_WOLFSSL
printf("ECC non-block sign: %d times\n", count);
#endif
}
if (ret == 0) {
@@ -20433,6 +20444,8 @@ static int crypto_ecc_sign(const uint8_t *key, uint32_t keySz,
mp_clear(&s);
wc_ecc_free(&ecc);
(void)count;
return ret;
}