From fa5dd0100146222a43d7562fdb2c600f481eaecf Mon Sep 17 00:00:00 2001 From: David Garske Date: Wed, 4 May 2016 23:20:03 -0700 Subject: [PATCH] Fixes/improvements to the wolfCrypt ECC tests. Fixed bug with sharedA/sharedB being too small when BENCH_EMBEDDED is used and curve size over 256 bit. Added error message for ECC test failures, to show the curve size used. Fix to wc_ecc_verify_hash test to use digest that is not all zeros as that doesn't work correctly for non-Shamir ECC math. Changed return code for wc_ecc_check_check so its unique. --- wolfcrypt/test/test.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index 32da38dc79..d5d114c18c 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -6560,7 +6560,7 @@ static int ecc_test_key_gen(WC_RNG* rng, int keySize) ret = wc_ecc_check_key(&userA); if (ret != 0) - return -1024; + return -1023; derSz = wc_EccKeyToDer(&userA, der, FOURK_BUF); if (derSz < 0) { @@ -6621,8 +6621,8 @@ static int ecc_test_curve_size(WC_RNG* rng, int keySize, int testVerifyCount, int testCompressedKey) { #ifdef BENCH_EMBEDDED - byte sharedA[32]; - byte sharedB[32]; + byte sharedA[128]; /* Needs to be at least keySize */ + byte sharedB[128]; /* Needs to be at least keySize */ #else byte sharedA[1024]; byte sharedB[1024]; @@ -6652,7 +6652,7 @@ static int ecc_test_curve_size(WC_RNG* rng, int keySize, int testVerifyCount, ret = wc_ecc_check_key(&userA); if (ret != 0) - return -1024; + return -1023; ret = wc_ecc_make_key(rng, keySize, &userB); if (ret != 0) @@ -6732,6 +6732,7 @@ static int ecc_test_curve_size(WC_RNG* rng, int keySize, int testVerifyCount, for (i = 0; i < (int)sizeof(digest); i++) { digest[i] = 0; } + digest[i-1] = 1; /* Set last digit to non-zero value */ x = sizeof(sig); ret = wc_ecc_sign_hash(digest, sizeof(digest), sig, &x, rng, &userA); @@ -6801,12 +6802,14 @@ static int ecc_test_curve(WC_RNG* rng, int keySize) ret = ecc_test_curve_size(rng, keySize, ECC_TEST_VERIFY_COUNT, testCompressedKey); if (ret < 0) { + printf("ecc_test_curve_size %d failed!: %d\n", keySize, ret); return ret; } #ifdef HAVE_ECC_VECTOR_TEST ret = ecc_test_vector(keySize); if (ret < 0) { + printf("ecc_test_vector %d failed!: %d\n", keySize, ret); return ret; } #endif @@ -6814,6 +6817,7 @@ static int ecc_test_curve(WC_RNG* rng, int keySize) #ifdef WOLFSSL_KEY_GEN ret = ecc_test_key_gen(rng, keySize); if (ret < 0) { + printf("ecc_test_key_gen %d failed!: %d\n", keySize, ret); return ret; } #endif