EVP_RAND-TEST-RAND
名稱
EVP_RAND-TEST-RAND - 測試 EVP_RAND 實作
說明
透過 EVP_RAND API 支援測試產生器。此產生器僅供測試用途,不會產生亂數。
身分
「TEST-RAND」是此實作的名稱;可與 EVP_RAND_fetch() 函數搭配使用。
支援的參數
支援的參數為
- 「狀態」(OSSL_RAND_PARAM_STATE) <整數>
-
這些參數的運作方式如 EVP_RAND(3) 中的「參數」 所述。
- 「強度」(OSSL_RAND_PARAM_STRENGTH) <無號整數>
- 「重新播種要求」(OSSL_DRBG_PARAM_RESEED_REQUESTS) <無號整數>
- 「重新播種時間間隔」(OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL) <整數>
- 「最大要求」(OSSL_DRBG_PARAM_RESEED_REQUESTS) <無號整數>
- 「最小熵長度」(OSSL_DRBG_PARAM_MIN_ENTROPYLEN) <無號整數>
- 「最大熵長度」(OSSL_DRBG_PARAM_MAX_ENTROPYLEN) <無號整數>
- 「最小亂數長度」(OSSL_DRBG_PARAM_MIN_NONCELEN) <無號整數>
- 「最大亂數長度」(OSSL_DRBG_PARAM_MAX_NONCELEN) <無號整數>
- 「最大個人化長度」(OSSL_DRBG_PARAM_MAX_PERSLEN) <無號整數>
- 「最大附加資料長度」(OSSL_DRBG_PARAM_MAX_ADINLEN) <無號整數>
- 「重新播種計數器」(OSSL_DRBG_PARAM_RESEED_COUNTER) <無號整數>
-
這些參數的運作方式如 EVP_RAND(3) 中的「參數」 所述,但它們都可以設定和讀取。
- 「測試熵」(OSSL_RAND_PARAM_TEST_ENTROPY) <八位元組字串>
-
設定在測試產生器收到熵要求時傳回的位元組。目前位置會在產生呼叫中記住。如果沒有足夠的資料來滿足呼叫,則會傳回錯誤。
- 「測試亂數」(OSSL_RAND_PARAM_TEST_NONCE) <八位元組字串>
-
設定在測試產生器收到亂數要求時傳回的位元組。每個亂數要求都會傳回所有位元組。
- 「產生」(OSSL_RAND_PARAM_GENERATE) <整數>
-
如果此參數為零,它只會發出透過上述參數提供的亂數和熵資料。否則,會產生低品質的非密碼學偽亂數輸出。此參數預設為零。
注意事項
可透過呼叫來取得測試產生器的內容
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),EVP_RAND(3) 中的「參數」
歷程
此功能已新增至 OpenSSL 3.0。
版權
Copyright 2020-2023 The OpenSSL Project Authors。保留所有權利。
根據 Apache License 2.0(「授權」)授權。您只能在遵守授權的規定下使用此檔案。您可以在原始程式碼散佈中的 LICENSE 檔案中取得副本,或至 https://www.openssl.org/source/license.html 取得。