diff options
author | Kurt Roeckx <kurt@roeckx.be> | 2017-11-17 15:00:35 +0100 |
---|---|---|
committer | Dr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> | 2018-01-29 12:42:06 +0100 |
commit | 20928ff635772182fe8696d618a19f9101a5370f (patch) | |
tree | 26305c173b7eddf05cbace4a2f4aa750d930c968 /crypto/rand/drbg_lib.c | |
parent | 1af66bb7241268f96554136387126d280efab75d (diff) |
Add RAND_DRBG_bytes
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/4752)
Diffstat (limited to 'crypto/rand/drbg_lib.c')
-rw-r--r-- | crypto/rand/drbg_lib.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/crypto/rand/drbg_lib.c b/crypto/rand/drbg_lib.c index 5d3d0f2fd7..5e6bdceb1e 100644 --- a/crypto/rand/drbg_lib.c +++ b/crypto/rand/drbg_lib.c @@ -535,6 +535,28 @@ int RAND_DRBG_generate(RAND_DRBG *drbg, unsigned char *out, size_t outlen, } /* + * Generates |outlen| random bytes and stores them in |out|. It will + * using the given |drbg| to generate the bytes. + * + * Requires that drbg->lock is already locked for write, if non-null. + * + * Returns 1 on success 0 on failure. + */ +int RAND_DRBG_bytes(RAND_DRBG *drbg, unsigned char *out, size_t outlen) +{ + unsigned char *additional = NULL; + size_t additional_len; + size_t ret; + + additional_len = rand_drbg_get_additional_data(&additional, drbg->max_adinlen); + ret = RAND_DRBG_generate(drbg, out, outlen, 0, additional, additional_len); + if (additional_len != 0) + OPENSSL_secure_clear_free(additional, additional_len); + + return ret; +} + +/* * Set the RAND_DRBG callbacks for obtaining entropy and nonce. * * In the following, the signature and the semantics of the |