summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2012-10-19 20:53:35 +0000
committerDr. Stephen Henson <steve@openssl.org>2012-10-19 20:53:35 +0000
commit3b4f1f302dd1d3a8b71d82bf3900802945a0b431 (patch)
treec17d6574a97eea3f550408cc91a5a5b725dbb440
parent986b927fb393e19de3d3697d6f58e4d1f7a2b692 (diff)
update DRBG to handle new file formatOpenSSL-fips-2_0-pl1
-rw-r--r--fips/rand/fips_drbgvs.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/fips/rand/fips_drbgvs.c b/fips/rand/fips_drbgvs.c
index 9aae88c3e1..214e3c340a 100644
--- a/fips/rand/fips_drbgvs.c
+++ b/fips/rand/fips_drbgvs.c
@@ -182,7 +182,7 @@ int main(int argc,char **argv)
int r, nid = 0;
int pr = 0;
char buf[2048], lbuf[2048];
- unsigned char randout[2048];
+ unsigned char *randout = NULL;
char *keyword = NULL, *value = NULL;
unsigned char *ent = NULL, *nonce = NULL, *pers = NULL, *adin = NULL;
@@ -298,6 +298,8 @@ int main(int argc,char **argv)
else
exit(1);
}
+ if (!strcmp(keyword, "[ReturnedBitsLen"))
+ randoutlen = atoi(value) / 8;
if (!strcmp(keyword, "EntropyInput"))
{
@@ -327,7 +329,11 @@ int main(int argc,char **argv)
FIPS_drbg_set_callbacks(dctx, test_entropy, 0, 0,
test_nonce, 0);
FIPS_drbg_set_app_data(dctx, &t);
- randoutlen = (int)FIPS_drbg_get_blocklength(dctx);
+ if (randoutlen == 0)
+ randoutlen = (int)FIPS_drbg_get_blocklength(dctx);
+ if (randout)
+ OPENSSL_free(randout);
+ randout = OPENSSL_malloc(randoutlen);
r = FIPS_drbg_instantiate(dctx, pers, perslen);
if (!r)
{
@@ -406,6 +412,8 @@ int main(int argc,char **argv)
}
}
+ if (randout)
+ OPENSSL_free(randout);
if (in && in != stdin)
fclose(in);
if (out && out != stdout)