X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=test%2Fdrbgtest.c;h=4c872f88715bd714dd1e1a0e7c626746c71f34ed;hp=6e916c42cb62fe9f56965fd9c3f382ca82e199e8;hb=66a925ea8c91d883bd0603bcee5705025b564bd6;hpb=48e5119a6b83fd5781174d3b524cb8d1dc411649 diff --git a/test/drbgtest.c b/test/drbgtest.c index 6e916c42cb..4c872f8871 100644 --- a/test/drbgtest.c +++ b/test/drbgtest.c @@ -88,16 +88,19 @@ typedef struct drbg_selftest_data_st { pr##_pr_returnedbits, sizeof(pr##_pr_returnedbits) \ } -#define make_drbg_test_data_df(nid, pr, p) \ - make_drbg_test_data(nid, RAND_DRBG_FLAG_CTR_USE_DF, pr, p) +#define make_drbg_test_data_use_df(nid, pr, p) \ + make_drbg_test_data(nid, 0, pr, p) + +#define make_drbg_test_data_no_df(nid, pr, p) \ + make_drbg_test_data(nid, RAND_DRBG_FLAG_CTR_NO_DF, pr, p) static DRBG_SELFTEST_DATA drbg_test[] = { - make_drbg_test_data (NID_aes_128_ctr, 0, aes_128_no_df, 0), - make_drbg_test_data (NID_aes_192_ctr, 0, aes_192_no_df, 0), - make_drbg_test_data (NID_aes_256_ctr, 0, aes_256_no_df, 1), - make_drbg_test_data_df(NID_aes_128_ctr, aes_128_use_df, 0), - make_drbg_test_data_df(NID_aes_192_ctr, aes_192_use_df, 0), - make_drbg_test_data_df(NID_aes_256_ctr, aes_256_use_df, 1), + make_drbg_test_data_no_df (NID_aes_128_ctr, aes_128_no_df, 0), + make_drbg_test_data_no_df (NID_aes_192_ctr, aes_192_no_df, 0), + make_drbg_test_data_no_df (NID_aes_256_ctr, aes_256_no_df, 1), + make_drbg_test_data_use_df(NID_aes_128_ctr, aes_128_use_df, 0), + make_drbg_test_data_use_df(NID_aes_192_ctr, aes_192_use_df, 0), + make_drbg_test_data_use_df(NID_aes_256_ctr, aes_256_use_df, 1), }; static int app_data_index; @@ -115,7 +118,8 @@ typedef struct test_ctx_st { } TEST_CTX; static size_t kat_entropy(RAND_DRBG *drbg, unsigned char **pout, - int entropy, size_t min_len, size_t max_len) + int entropy, size_t min_len, size_t max_len, + int prediction_resistance) { TEST_CTX *t = (TEST_CTX *)RAND_DRBG_get_ex_data(drbg, app_data_index); @@ -179,7 +183,7 @@ static int single_kat(DRBG_SELFTEST_DATA *td) /* Reseed DRBG with test entropy and additional input */ t.entropy = td->entropyreseed; t.entropylen = td->entropyreseedlen; - if (!TEST_true(RAND_DRBG_reseed(drbg, td->adinreseed, td->adinreseedlen) + if (!TEST_true(RAND_DRBG_reseed(drbg, td->adinreseed, td->adinreseedlen, 0) || !TEST_true(RAND_DRBG_generate(drbg, buff, td->kat2len, 0, td->adin2, td->adin2len)) || !TEST_mem_eq(td->kat2, td->kat2len, buff, td->kat2len))) @@ -412,12 +416,12 @@ static int error_check(DRBG_SELFTEST_DATA *td) /* Test explicit reseed with too large additional input */ if (!init(drbg, td, &t) - || RAND_DRBG_reseed(drbg, td->adin, drbg->max_adinlen + 1) > 0) + || RAND_DRBG_reseed(drbg, td->adin, drbg->max_adinlen + 1, 0) > 0) goto err; /* Test explicit reseed with entropy source failure */ t.entropylen = 0; - if (!TEST_int_le(RAND_DRBG_reseed(drbg, td->adin, td->adinlen), 0) + if (!TEST_int_le(RAND_DRBG_reseed(drbg, td->adin, td->adinlen, 0), 0) || !uninstantiate(drbg)) goto err; @@ -425,7 +429,7 @@ static int error_check(DRBG_SELFTEST_DATA *td) if (!init(drbg, td, &t)) goto err; t.entropylen = drbg->max_entropylen + 1; - if (!TEST_int_le(RAND_DRBG_reseed(drbg, td->adin, td->adinlen), 0) + if (!TEST_int_le(RAND_DRBG_reseed(drbg, td->adin, td->adinlen, 0), 0) || !uninstantiate(drbg)) goto err; @@ -433,7 +437,7 @@ static int error_check(DRBG_SELFTEST_DATA *td) if (!init(drbg, td, &t)) goto err; t.entropylen = drbg->min_entropylen - 1; - if (!TEST_int_le(RAND_DRBG_reseed(drbg, td->adin, td->adinlen), 0) + if (!TEST_int_le(RAND_DRBG_reseed(drbg, td->adin, td->adinlen, 0), 0) || !uninstantiate(drbg)) goto err; @@ -501,7 +505,8 @@ static HOOK_CTX *get_hook_ctx(RAND_DRBG *drbg) /* Intercepts and counts calls to the get_entropy() callback */ static size_t get_entropy_hook(RAND_DRBG *drbg, unsigned char **pout, - int entropy, size_t min_len, size_t max_len) + int entropy, size_t min_len, size_t max_len, + int prediction_resistance) { size_t ret; HOOK_CTX *ctx = get_hook_ctx(drbg); @@ -509,8 +514,8 @@ static size_t get_entropy_hook(RAND_DRBG *drbg, unsigned char **pout, if (ctx->fail != 0) return 0; - ret = ctx->get_entropy( - drbg, pout, entropy, min_len, max_len); + ret = ctx->get_entropy(drbg, pout, entropy, min_len, max_len, + prediction_resistance); if (ret != 0) ctx->reseed_count++;