EVP_PKEY-DSA
名稱
EVP_PKEY-DSA、EVP_KEYMGMT-DSA - EVP_PKEY DSA 金鑰類型和演算法支援
說明
對於 DSA,FIPS186-4 標準規定用於 FFC 參數產生的值也需要用於參數驗證。這表示 種子、pcounter 和 gindex 的 FFC 領域參數值可能需要儲存以供驗證用途。對於 DSA,這些欄位不會儲存在 ASN1 資料中,因此如果需要驗證,就需要將它們儲存在外部。
DSA 參數
DSA 金鑰類型支援 FFC 參數(請參閱 EVP_PKEY-FFC(7) 中的「FFC 參數」)。
DSA 金鑰產生參數
DSA 金鑰類型支援 FFC 金鑰產生參數(請參閱 EVP_PKEY-FFC(7) 中的「FFC 金鑰產生參數」
下列限制適用於「pbits」欄位
對於「fips186_4」,這必須是 2048 或 3072。對於「fips186_2」,這必須是 1024。對於「group」,這可以是 2048、3072、4096、6144 或 8192 中的任何一個。
DSA 金鑰驗證
對於 DSA 金鑰,EVP_PKEY_param_check(3) 的行為方式如下:OpenSSL FIPS 提供者符合 FIPS186-4 標準中關於 FFC 參數驗證的規則。為了向後相容,OpenSSL 預設提供者會使用一個簡單得多的檢查(請參閱下方)來進行參數驗證,除非設定了種子參數。
對於 DSA 金鑰,EVP_PKEY_param_check_quick(3) 的行為方式如下:會執行 L 和 N 以及部分 g 的簡單檢查。預設提供者也支援驗證舊版「fips186_2」金鑰。
對於 DSA 金鑰,EVP_PKEY_public_check(3)、EVP_PKEY_private_check(3) 和 EVP_PKEY_pairwise_check(3),OpenSSL 預設和 FIPS 提供者分別符合 SP800-56Ar3 中關於公用、私密和成對測試的規則。
範例
可以透過呼叫來取得 EVP_PKEY 內容
EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_from_name(NULL, "DSA", NULL);
可以透過呼叫來產生 DSA 領域參數
unsigned int pbits = 2048;
unsigned int qbits = 256;
int gindex = 1;
OSSL_PARAM params[5];
EVP_PKEY *param_key = NULL;
EVP_PKEY_CTX *pctx = NULL;
pctx = EVP_PKEY_CTX_new_from_name(NULL, "DSA", NULL);
EVP_PKEY_paramgen_init(pctx);
params[0] = OSSL_PARAM_construct_uint("pbits", &pbits);
params[1] = OSSL_PARAM_construct_uint("qbits", &qbits);
params[2] = OSSL_PARAM_construct_int("gindex", &gindex);
params[3] = OSSL_PARAM_construct_utf8_string("digest", "SHA384", 0);
params[4] = OSSL_PARAM_construct_end();
EVP_PKEY_CTX_set_params(pctx, params);
EVP_PKEY_generate(pctx, ¶m_key);
EVP_PKEY_CTX_free(pctx);
EVP_PKEY_print_params(bio_out, param_key, 0, NULL);
可以透過使用領域參數來產生 DSA 金鑰
EVP_PKEY *key = NULL;
EVP_PKEY_CTX *gctx = NULL;
gctx = EVP_PKEY_CTX_new_from_pkey(NULL, param_key, NULL);
EVP_PKEY_keygen_init(gctx);
EVP_PKEY_generate(gctx, &key);
EVP_PKEY_CTX_free(gctx);
EVP_PKEY_print_private(bio_out, key, 0, NULL);
遵循
FIPS186-4 的下列各節
- A.1.1.2 使用核准的雜湊函數產生機率質數 p 和 q。
- A.2.3 產生標準產生器 g。
- A.2.1 產生器的不可驗證產生 g。
另請參閱
EVP_PKEY-FFC(7)、EVP_SIGNATURE-DSA(7) EVP_PKEY(3)、provider-keymgmt(7)、EVP_KEYMGMT(3)、OSSL_PROVIDER-default(7)、OSSL_PROVIDER-FIPS(7)
版權
Copyright 2020-2021 The OpenSSL Project Authors。保留所有權利。
在 Apache License 2.0(「授權」)下授權。您只能在遵守授權的規定下使用此檔案。您可以在原始程式碼散佈中的 LICENSE 檔案中取得一份副本,或在 https://www.openssl.org/source/license.html 取得。