summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorPauli <pauli@openssl.org>2023-10-28 20:49:08 +1100
committerTomas Mraz <tomas@openssl.org>2023-11-01 12:07:15 +0100
commit2bdf45d875234a9b203a60e2143e4fe977ec5ff9 (patch)
tree1d0d2926b58d3861d99d0e85e710926e8748ff78 /test
parent3fe56baf936373daa39b944e3194a6f234fbe8bf (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.info2
-rw-r--r--test/rand_test.c33
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;
}