Skip to content

Commit

Permalink
Add test case for uniform random generators
Browse files Browse the repository at this point in the history
Reviewed-by: Tom Cosgrove <[email protected]>
Reviewed-by: Matthias St. Pierre <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from openssl/openssl#22499)

Signed-off-by: fly2x <[email protected]>
  • Loading branch information
paulidale authored and fly2x committed Nov 2, 2023
1 parent 92f409f commit cd3b844
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 1 deletion.
2 changes: 1 addition & 1 deletion test/build.info
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
33 changes: 33 additions & 0 deletions test/rand_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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;
}

0 comments on commit cd3b844

Please sign in to comment.