EVP_RAND-TEST-RAND
名称
EVP_RAND-TEST-RAND - 测试 EVP_RAND 实现
描述
通过EVP_RAND API 支持测试生成器。此生成器仅用于测试目的,它不生成随机数。
标识
"TEST-RAND" 是此实现的名称;它可以与 EVP_RAND_fetch() 函数一起使用。
支持的参数
支持的参数为
- "state" (OSSL_RAND_PARAM_STATE) <整数>
-
这些参数的工作方式如 "PARAMETERS" in EVP_RAND(3) 中所述。
- "strength" (OSSL_RAND_PARAM_STRENGTH) <无符号整数>
- "reseed_requests" (OSSL_DRBG_PARAM_RESEED_REQUESTS) <无符号整数>
- "reseed_time_interval" (OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL) <整数>
- "max_request" (OSSL_DRBG_PARAM_RESEED_REQUESTS) <无符号整数>
- "min_entropylen" (OSSL_DRBG_PARAM_MIN_ENTROPYLEN) <无符号整数>
- "max_entropylen" (OSSL_DRBG_PARAM_MAX_ENTROPYLEN) <无符号整数>
- "min_noncelen" (OSSL_DRBG_PARAM_MIN_NONCELEN) <无符号整数>
- "max_noncelen" (OSSL_DRBG_PARAM_MAX_NONCELEN) <无符号整数>
- "max_perslen" (OSSL_DRBG_PARAM_MAX_PERSLEN) <无符号整数>
- "max_adinlen" (OSSL_DRBG_PARAM_MAX_ADINLEN) <无符号整数>
- "reseed_counter" (OSSL_DRBG_PARAM_RESEED_COUNTER) <无符号整数>
-
这些参数的工作方式如 "PARAMETERS" in EVP_RAND(3) 中所述,除了它们都可以设置和读取。
- "test_entropy" (OSSL_RAND_PARAM_TEST_ENTROPY) <八位字节串>
-
设置当测试生成器发送熵请求时返回的字节。当前位置在生成调用之间被记住。如果存在的数据不足以满足调用,则返回错误。
- "test_nonce" (OSSL_RAND_PARAM_TEST_NONCE) <八位字节串>
-
设置当测试生成器发送 nonce 请求时返回的字节。每个 nonce 请求将返回所有字节。
- "generate" (OSSL_RAND_PARAM_GENERATE) <整数>
-
如果此参数为零,则它将仅发出通过上述参数提供的 nonce 和熵数据。否则,将生成低质量的非加密伪随机输出。此参数默认为零。
注意
可以通过调用获取测试生成器的上下文
EVP_RAND *rand = EVP_RAND_fetch(NULL, "TEST-RAND", NULL);
EVP_RAND_CTX *rctx = EVP_RAND_CTX_new(rand, NULL);
示例
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);
参见
EVP_RAND(3),"PARAMETERS" in EVP_RAND(3)
历史
此功能在 OpenSSL 3.0 中添加。
版权
版权所有 2020-2023 OpenSSL 项目作者。保留所有权利。
根据 Apache 许可证 2.0(“许可证”)获得许可。除非符合许可证,否则您不得使用此文件。您可以在源代码分发中的 LICENSE 文件或 https://www.openssl.org/source/license.html 中获得副本。