EVP_RAND-TEST-RAND(7ossl)
π EVP_RAND-TEST-RAND π
okay bestie, welcome to the 7ossl manual page for EVP_RAND-TEST-RAND β yes, the test random generator, and no, it is not giving actual random numbers. We'll get there. π«Ά
πΈ NAME πΈ
EVP_RAND-TEST-RAND β The test EVP_RAND implementation
π¦ DESCRIPTION π¦
Support for a test generator through the EVP_RAND API. This generator is for test purposes only β it does not generate random numbers. Like, zero random-number production. It's a test generator, bestie, not a crypto RNG. π
β¨ Identity β¨
"TEST-RAND" is the name for this implementation; it can be used with the EVP_RAND_fetch() function. That's the fetchable name, periodt. π
π Supported parameters π
The supported parameters are:
"state"(OSSL_RAND_PARAM_STATE)<integer>β works as described in"PARAMETERS" in EVP_RAND(3)."fips-indicator"(OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR)<integer>β works as described in"PARAMETERS" in EVP_RAND(3).
These next ones are the read/set crew:
"strength"(OSSL_RAND_PARAM_STRENGTH)<unsigned integer>β works as described in"PARAMETERS" in EVP_RAND(3)."reseed_requests"(OSSL_DRBG_PARAM_RESEED_REQUESTS)<unsigned integer>β works as described in"PARAMETERS" in EVP_RAND(3)."reseed_time_interval"(OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL)<integer>β works as described in"PARAMETERS" in EVP_RAND(3)."max_request"(OSSL_DRBG_PARAM_RESEED_REQUESTS)<unsigned integer>β works as described in"PARAMETERS" in EVP_RAND(3)."min_entropylen"(OSSL_DRBG_PARAM_MIN_ENTROPYLEN)<unsigned integer>β works as described in"PARAMETERS" in EVP_RAND(3)."max_entropylen"(OSSL_DRBG_PARAM_MAX_ENTROPYLEN)<unsigned integer>β works as described in"PARAMETERS" in EVP_RAND(3)."min_noncelen"(OSSL_DRBG_PARAM_MIN_NONCELEN)<unsigned integer>β works as described in"PARAMETERS" in EVP_RAND(3)."max_noncelen"(OSSL_DRBG_PARAM_MAX_NONCELEN)<unsigned integer>β works as described in"PARAMETERS" in EVP_RAND(3)."max_perslen"(OSSL_DRBG_PARAM_MAX_PERSLEN)<unsigned integer>β works as described in"PARAMETERS" in EVP_RAND(3)."max_adinlen"(OSSL_DRBG_PARAM_MAX_ADINLEN)<unsigned integer>β works as described in"PARAMETERS" in EVP_RAND(3)."reseed_counter"(OSSL_DRBG_PARAM_RESEED_COUNTER)<unsigned integer>β works as described in"PARAMETERS" in EVP_RAND(3).
All of these work as described in "PARAMETERS" in EVP_RAND(3), except that they can all be set as well as read. Yes, read and set β not just one-way, bestie. π₯
"test_entropy"(OSSL_RAND_PARAM_TEST_ENTROPY)<octet string>β sets the bytes returned when the test generator is sent an entropy request. The current position is remembered acrossgeneratecalls. If there are insufficient data present to satisfy a call, an error is returned."test_nonce"(OSSL_RAND_PARAM_TEST_NONCE)<octet string>β sets the bytes returned when the test generator is sent a nonce request. Each nonce request will return all of the bytes. Every single byte, no crumbs. π"generate"(OSSL_RAND_PARAM_GENERATE)<integer>β if this parameter is zero, it will only emit the nonce and entropy data supplied via the aforementioned parameters. Otherwise, low quality non-cryptographic pseudorandom output is produced. This parameter defaults to zero. That's the default, bestie: zero. π
π₯ NOTES π₯
A context for a test generator can be obtained by calling:
EVP_RAND *rand = EVP_RAND_fetch(NULL, "TEST-RAND", NULL);
EVP_RAND_CTX *rctx = EVP_RAND_CTX_new(rand, NULL);
π§ EXAMPLES π§
Here's the whole example flow, and yes, keep the code exactly as it is:
EVP_RAND *rand;
EVP_RAND_CTX *rctx;
unsigned char bytes[100];
OSSL_PARAM params[4], *p = params;
unsigned char entropy[1000] = { ... };
unsigned char nonce[20] = { ... };
unsigned int strength = 48;
rand = EVP_RAND_fetch(NULL, "TEST-RAND", NULL);
rctx = EVP_RAND_CTX_new(rand, NULL);
EVP_RAND_free(rand);
*p++ = OSSL_PARAM_construct_uint(OSSL_RAND_PARAM_STRENGTH, &strength);
*p++ = OSSL_PARAM_construct_octet_string(OSSL_RAND_PARAM_TEST_ENTROPY,
entropy, sizeof(entropy));
*p++ = OSSL_PARAM_construct_octet_string(OSSL_RAND_PARAM_TEST_NONCE,
nonce, sizeof(nonce));
*p = OSSL_PARAM_construct_end();
EVP_RAND_instantiate(rctx, strength, 0, NULL, 0, params);
EVP_RAND_generate(rctx, bytes, sizeof(bytes), strength, 0, NULL, 0);
EVP_RAND_CTX_free(rctx);
π SEE ALSO π
EVP_RAND(3)"PARAMETERS" in EVP_RAND(3)
π HISTORY π
This functionality was added in OpenSSL 3.0.
π COPYRIGHT π
Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.
π and that's the whole page! it came from OpenSSL 3.5.0, dated 2026-09-25, so take that as your cute little footer vibe. periodt. π
π¦ where this page comes from
- opensuse-leap 16.0: openssl-3 3.5.0-160000.11.1 Β· Apache-2.0
- opensuse-leap 16.0: openssl-3 3.5.0-160000.11.1 Β· Apache-2.0
- opensuse-leap 16.0: openssl-3 3.5.0-160000.11.1 Β· Apache-2.0
- opensuse-leap 16.0: openssl-3 3.5.0-160000.11.1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms