EVP_KDF-X963
名称
EVP_KDF-X963 - X9.63-2001 EVP_KDF 实现
描述
EVP_KDF-X963 算法实现了密钥导出函数 (X963KDF)。X963KDF 用于密码消息语法 (CMS) 的 EC 密钥协商,使用共享密钥和共享信息等输入来导出密钥。
标识
"X963KDF" 是此实现的名称;它可以与 EVP_KDF_fetch() 函数一起使用。
支持的参数
支持的参数是
- "properties" (OSSL_KDF_PARAM_PROPERTIES) <UTF8 字符串>
- "digest" (OSSL_KDF_PARAM_DIGEST) <UTF8 字符串>
-
这些参数的工作原理如 "PARAMETERS" in EVP_KDF(3) 中所述。
- "key" (OSSL_KDF_PARAM_KEY) <字节串>
-
用于密钥导出的共享密钥。此参数设置密钥。
- "info" (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 的输出长度通过 EVP_KDF_derive(3) 函数的 keylen 参数指定。
示例
此示例使用密钥“secret”和共享信息值“label”导出 10 个字节。
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), "PARAMETERS" in EVP_KDF(3)
历史
此功能是在 OpenSSL 3.0 中添加的。
版权
版权所有 2019-2021 OpenSSL 项目作者。保留所有权利。
根据 Apache 许可证 2.0 版(“许可证”)授权使用。除非符合许可证,否则您不得使用此文件。您可以在源代码发行版的 LICENSE 文件或 https://www.openssl.org/source/license.html 中获取副本。