X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=fips%2Frand%2Ffips_drbg_selftest.c;h=c46fe58521c706a6bd5cbd4dd671d7be1e56097f;hp=31b7a0be58529f0a34ab3f9bbac7aa7e44c3e256;hb=e06de4dd3597374ab67281736be8dee0e2552bcd;hpb=dad78514853f40bbb1cec87597a740b8fef06756;ds=sidebyside diff --git a/fips/rand/fips_drbg_selftest.c b/fips/rand/fips_drbg_selftest.c index 31b7a0be58..c46fe58521 100644 --- a/fips/rand/fips_drbg_selftest.c +++ b/fips/rand/fips_drbg_selftest.c @@ -732,20 +732,20 @@ typedef struct int noncecnt; } TEST_ENT; -static size_t test_entropy(DRBG_CTX *dctx, unsigned char *out, +static size_t test_entropy(DRBG_CTX *dctx, unsigned char **pout, int entropy, size_t min_len, size_t max_len) { TEST_ENT *t = FIPS_drbg_get_app_data(dctx); - memcpy(out, t->ent, t->entlen); + *pout = (unsigned char *)t->ent; t->entcnt++; return t->entlen; } -static size_t test_nonce(DRBG_CTX *dctx, unsigned char *out, +static size_t test_nonce(DRBG_CTX *dctx, unsigned char **pout, int entropy, size_t min_len, size_t max_len) { TEST_ENT *t = FIPS_drbg_get_app_data(dctx); - memcpy(out, t->nonce, t->noncelen); + *pout = (unsigned char *)t->nonce; t->noncecnt++; return t->noncelen; } @@ -762,7 +762,7 @@ static int fips_drbg_single_kat(DRBG_CTX *dctx, DRBG_SELFTEST_DATA *td) unsigned char randout[1024]; if (!FIPS_drbg_init(dctx, td->nid, td->flags)) return 0; - if (!FIPS_drbg_set_callbacks(dctx, test_entropy, test_nonce)) + if (!FIPS_drbg_set_callbacks(dctx, test_entropy, 0, test_nonce, 0)) return 0; FIPS_drbg_set_app_data(dctx, &t); @@ -797,6 +797,8 @@ static int fips_drbg_single_kat(DRBG_CTX *dctx, DRBG_SELFTEST_DATA *td) rv = 1; err: + if (rv == 0) + FIPSerr(FIPS_F_FIPS_DRBG_SINGLE_KAT, FIPS_R_SELFTEST_FAILED); FIPS_drbg_uninstantiate(dctx); return rv; @@ -818,7 +820,7 @@ static int fips_drbg_health_check(DRBG_CTX *dctx, DRBG_SELFTEST_DATA *td) if (!FIPS_drbg_init(dctx, td->nid, td->flags)) goto err; - if (!FIPS_drbg_set_callbacks(dctx, test_entropy, test_nonce)) + if (!FIPS_drbg_set_callbacks(dctx, test_entropy, 0, test_nonce, 0)) goto err; FIPS_drbg_set_app_data(dctx, &t); @@ -860,7 +862,7 @@ static int fips_drbg_health_check(DRBG_CTX *dctx, DRBG_SELFTEST_DATA *td) /* Instantiate with valid data. NB: errors now reported again */ if (!FIPS_drbg_init(dctx, td->nid, td->flags)) goto err; - if (!FIPS_drbg_set_callbacks(dctx, test_entropy, test_nonce)) + if (!FIPS_drbg_set_callbacks(dctx, test_entropy, 0, test_nonce, 0)) goto err; FIPS_drbg_set_app_data(dctx, &t); @@ -914,7 +916,7 @@ static int fips_drbg_health_check(DRBG_CTX *dctx, DRBG_SELFTEST_DATA *td) if (!FIPS_drbg_init(dctx, td->nid, td->flags)) goto err; - if (!FIPS_drbg_set_callbacks(dctx, test_entropy, test_nonce)) + if (!FIPS_drbg_set_callbacks(dctx, test_entropy, 0, test_nonce, 0)) goto err; FIPS_drbg_set_app_data(dctx, &t);