summaryrefslogtreecommitdiffstats
path: root/fips/rand/fips_drbg_hash.c
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2011-06-26 12:29:26 +0000
committerDr. Stephen Henson <steve@openssl.org>2011-06-26 12:29:26 +0000
commitfc305304023660fdc72da818686410f6d3f3fc89 (patch)
tree972cfbfba67a7aa723a9e9da32a6875bd6fa33c6 /fips/rand/fips_drbg_hash.c
parenta96b90b66b242d596cd0d8d5dfa7b6f9c3f79520 (diff)
Fix CPRNG test for Hash DRBG.
Diffstat (limited to 'fips/rand/fips_drbg_hash.c')
-rw-r--r--fips/rand/fips_drbg_hash.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/fips/rand/fips_drbg_hash.c b/fips/rand/fips_drbg_hash.c
index 544cda1fff..2fdf0e8f38 100644
--- a/fips/rand/fips_drbg_hash.c
+++ b/fips/rand/fips_drbg_hash.c
@@ -199,9 +199,8 @@ static int hash_gen(DRBG_CTX *dctx, unsigned char *out, size_t outlen)
{
FIPS_digestfinal(&hctx->mctx, dctx->lb, NULL);
dctx->lb_valid = 1;
- continue;
}
- if (outlen < dctx->blocklength)
+ else if (outlen < dctx->blocklength)
{
FIPS_digestfinal(&hctx->mctx, hctx->vtmp, NULL);
if (!fips_drbg_cprng_test(dctx, hctx->vtmp))
@@ -209,13 +208,16 @@ static int hash_gen(DRBG_CTX *dctx, unsigned char *out, size_t outlen)
memcpy(out, hctx->vtmp, outlen);
return 1;
}
- FIPS_digestfinal(&hctx->mctx, out, NULL);
- if (!fips_drbg_cprng_test(dctx, out))
- return 0;
- outlen -= dctx->blocklength;
- if (outlen == 0)
- return 1;
- out += dctx->blocklength;
+ else
+ {
+ FIPS_digestfinal(&hctx->mctx, out, NULL);
+ if (!fips_drbg_cprng_test(dctx, out))
+ return 0;
+ outlen -= dctx->blocklength;
+ if (outlen == 0)
+ return 1;
+ out += dctx->blocklength;
+ }
ctx_add_buf(dctx, hctx->vtmp, NULL, 0);
}
}