diff options
author | Pauli <pauli@openssl.org> | 2023-10-28 20:49:08 +1100 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2023-11-01 12:07:15 +0100 |
commit | 2bdf45d875234a9b203a60e2143e4fe977ec5ff9 (patch) | |
tree | 1d0d2926b58d3861d99d0e85e710926e8748ff78 /test | |
parent | 3fe56baf936373daa39b944e3194a6f234fbe8bf (diff) |
Add test case for uniform random generators
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22499)
(cherry picked from commit d05e0e40d712b9246c6e9db5b579fcce69dafa98)
Diffstat (limited to 'test')
-rw-r--r-- | test/build.info | 2 | ||||
-rw-r--r-- | test/rand_test.c | 33 |
2 files changed, 34 insertions, 1 deletions
diff --git a/test/build.info b/test/build.info index cd8254164a..1784a41d8d 100644 --- a/test/build.info +++ b/test/build.info @@ -103,7 +103,7 @@ IF[{- !$disabled{tests} -}] SOURCE[rand_test]=rand_test.c INCLUDE[rand_test]=../include ../apps/include - DEPEND[rand_test]=../libcrypto libtestutil.a + DEPEND[rand_test]=../libcrypto.a libtestutil.a SOURCE[rsa_complex]=rsa_complex.c INCLUDE[rsa_complex]=../include ../apps/include diff --git a/test/rand_test.c b/test/rand_test.c index c6cf32610e..9f96b9b6db 100644 --- a/test/rand_test.c +++ b/test/rand_test.c @@ -11,6 +11,7 @@ #include <openssl/rand.h> #include <openssl/bio.h> #include <openssl/core_names.h> +#include "crypto/rand.h" #include "testutil.h" static int test_rand(void) @@ -44,10 +45,42 @@ static int test_rand(void) return 1; } +static int test_rand_uniform(void) +{ + uint32_t x, i, j; + int err = 0, res = 0; + OSSL_LIB_CTX *ctx; + + if (!test_get_libctx(&ctx, NULL, NULL, NULL, NULL)) + goto err; + + for (i = 1; i < 100; i += 13) { + x = ossl_rand_uniform_uint32(ctx, i, &err); + if (!TEST_int_eq(err, 0) + || !TEST_uint_ge(x, 0) + || !TEST_uint_lt(x, i)) + return 0; + } + for (i = 1; i < 100; i += 17) + for (j = i + 1; j < 150; j += 11) { + x = ossl_rand_range_uint32(ctx, i, j, &err); + if (!TEST_int_eq(err, 0) + || !TEST_uint_ge(x, i) + || !TEST_uint_lt(x, j)) + return 0; + } + + res = 1; + err: + OSSL_LIB_CTX_free(ctx); + return res; +} + int setup_tests(void) { if (!TEST_true(RAND_set_DRBG_type(NULL, "TEST-RAND", NULL, NULL, NULL))) return 0; ADD_TEST(test_rand); + ADD_TEST(test_rand_uniform); return 1; } |