OpenSSL

密碼學和 SSL/TLS 工具組

EVP_KDF-X963

名稱

EVP_KDF-X963 - X9.63-2001 EVP_KDF 實作

說明

EVP_KDF-X963 演算法實作金鑰衍生函數 (X963KDF)。X963KDF 由密碼學訊息語法 (CMS) 用於 EC KeyAgreement,以使用共用密鑰和共用資訊等輸入衍生金鑰。

識別

「X963KDF」是此實作的名稱;它可用於 EVP_KDF_fetch() 函數。

支援的參數

支援的參數為

「屬性」 (OSSL_KDF_PARAM_PROPERTIES) <UTF8 字串>
「摘要」 (OSSL_KDF_PARAM_DIGEST) <UTF8 字串>

這些參數的運作方式如 EVP_KDF(3) 中的「參數」 所述。

「金鑰」 (OSSL_KDF_PARAM_KEY) <八位元組字串>

用於金鑰衍生的共用密鑰。此參數設定密鑰。

「資訊」 (OSSL_KDF_PARAM_INFO) <八位元組字串>

此參數指定共用資訊的選用值。

附註

X963KDF 與使用摘要作為輔助函數的 SSKDF 非常類似,X963KDF 將計數器附加到密鑰,而 SSKDF 則將計數器置於前面。

可透過呼叫取得 X963KDF 的內容

EVP_KDF *kdf = EVP_KDF_fetch(NULL, "X963KDF", NULL);
EVP_KDF_CTX *kctx = EVP_KDF_CTX_new(kdf);

X963KDF 的輸出長度透過 keylen 參數指定給 EVP_KDF_derive(3) 函數。

範例

此範例衍生 10 個位元組,使用密鑰「secret」和共用資訊值「label」

EVP_KDF *kdf;
EVP_KDF_CTX *kctx;
unsigned char out[10];
OSSL_PARAM params[4], *p = params;

kdf = EVP_KDF_fetch(NULL, "X963KDF", NULL);
kctx = EVP_KDF_CTX_new(kdf);
EVP_KDF_free(kdf);

*p++ = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_DIGEST,
                                        SN_sha256, strlen(SN_sha256));
*p++ = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_SECRET,
                                         "secret", (size_t)6);
*p++ = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_INFO,
                                         "label", (size_t)5);
*p = OSSL_PARAM_construct_end();
if (EVP_KDF_derive(kctx, out, sizeof(out), params) <= 0) {
    error("EVP_KDF_derive");
}

EVP_KDF_CTX_free(kctx);

符合

「SEC 1:橢圓曲線密碼學」

另請參閱

EVP_KDF(3)EVP_KDF_CTX_new(3)EVP_KDF_CTX_free(3)EVP_KDF_CTX_set_params(3)EVP_KDF_CTX_get_kdf_size(3)EVP_KDF_derive(3)EVP_KDF(3) 中的「參數」

歷程

此功能已新增至 OpenSSL 3.0。

版權所有 2019-2021 The OpenSSL Project Authors。保留所有權利。

根據 Apache License 2.0(「授權」)授權。您只能根據授權條款使用此檔案。您可以在原始程式碼散佈中的 LICENSE 檔案或 https://www.openssl.org/source/license.html 取得副本。