From 3c61ea367179ebaca8b448367b08c460c9d07120 Mon Sep 17 00:00:00 2001 From: Billy Brumley Date: Sun, 29 Mar 2020 10:38:37 +0300 Subject: [test] Make sm2_internal_test less fragile to changes in the ec module Since these are KATs, the trailing randomness consumed by the ec module does not really matter. So make the fake random buffer circular. (cherry picked from commit 09736245b174a37abb87fb7ceb55462d940ff2bb) Reviewed-by: Nicola Tuveri Reviewed-by: Bernd Edlinger (Merged from https://github.com/openssl/openssl/pull/11435) --- test/sm2_internal_test.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/test/sm2_internal_test.c b/test/sm2_internal_test.c index 952f688e8b..f7e4e38d03 100644 --- a/test/sm2_internal_test.c +++ b/test/sm2_internal_test.c @@ -32,17 +32,18 @@ static size_t fake_rand_size = 0; static int get_faked_bytes(unsigned char *buf, int num) { - int i; - if (fake_rand_bytes == NULL) return saved_rand->bytes(buf, num); - if (!TEST_size_t_le(fake_rand_bytes_offset + num, fake_rand_size)) + if (!TEST_size_t_gt(fake_rand_size, 0)) return 0; - for (i = 0; i != num; ++i) - buf[i] = fake_rand_bytes[fake_rand_bytes_offset + i]; - fake_rand_bytes_offset += num; + while (num-- > 0) { + if (fake_rand_bytes_offset >= fake_rand_size) + fake_rand_bytes_offset = 0; + *buf++ = fake_rand_bytes[fake_rand_bytes_offset++]; + } + return 1; } @@ -175,8 +176,7 @@ static int test_sm2_crypt(const EC_GROUP *group, start_fake_rand(k_hex); if (!TEST_true(sm2_encrypt(key, digest, (const uint8_t *)message, msg_len, - ctext, &ctext_len)) - || !TEST_size_t_eq(fake_rand_bytes_offset, fake_rand_size)) { + ctext, &ctext_len))) { restore_rand(); goto done; } @@ -296,8 +296,7 @@ static int test_sm2_sign(const EC_GROUP *group, start_fake_rand(k_hex); sig = sm2_do_sign(key, EVP_sm3(), (const uint8_t *)userid, strlen(userid), (const uint8_t *)message, msg_len); - if (!TEST_ptr(sig) - || !TEST_size_t_eq(fake_rand_bytes_offset, fake_rand_size)) { + if (!TEST_ptr(sig)) { restore_rand(); goto done; } -- cgit v1.2.3