EVP_PKEY-ED448
名称
EVP_PKEY-X25519, EVP_PKEY-X448, EVP_PKEY-ED25519, EVP_PKEY-ED448, EVP_KEYMGMT-X25519, EVP_KEYMGMT-X448, EVP_KEYMGMT-ED25519, EVP_KEYMGMT-ED448 - EVP_PKEY X25519, X448, ED25519 和 ED448 密钥类型和算法支持
描述
X25519、X448、ED25519 和 ED448 密钥类型在 OpenSSL 的默认提供程序和 FIPS 提供程序中实现。这些实现支持关联的密钥,其中包含公钥 pub 和私钥 priv。
密钥生成参数
- "dhkem-ikm" (OSSL_PKEY_PARAM_DHKEM_IKM) <八位字节串>
-
DHKEM 需要使用输入密钥材料 (种子) 生成密钥对。使用此参数来指定用于生成私钥的密钥材料。此值不应重复用于其他目的。它应至少具有 32 个字节的长度(对于 X25519)和 56 个字节的长度(对于 X448)。
此参数仅受 X25519 和 X448 支持。
在调用 EVP_PKEY_keygen_init() 后使用 EVP_PKEY_CTX_set_params()。
X25519、X448、ED25519 和 ED448 的通用参数
除了所有密钥类型都应支持的通用参数(参见 "Common parameters" in provider-keymgmt(7))外,这些密钥类型的实现还支持以下参数。
- "group" (OSSL_PKEY_PARAM_GROUP_NAME) <UTF8 字符串>
-
此参数仅受 X25519 和 X448 支持。对于这些算法,组名必须分别为 "x25519" 或 "x448"。此参数仅为了与其他密钥交换算法保持一致而存在,通常不需要。
- "pub" (OSSL_PKEY_PARAM_PUB_KEY) <八位字节串>
-
公钥值。
- "priv" (OSSL_PKEY_PARAM_PRIV_KEY) <八位字节串>
-
私钥值。
- "encoded-pub-key" (OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY) <八位字节串>
-
用于获取和设置 X25519 和 X448 密钥类型的公钥编码。公钥应按 RFC7748 中定义的格式进行编码。
ED25519 和 ED448 参数
- "mandatory-digest" (OSSL_PKEY_PARAM_MANDATORY_DIGEST) <UTF8 字符串>
-
空字符串,表示不应指定任何摘要。
符合标准
- RFC 8032
- RFC 8410
示例
可以通过调用以下函数来获取 EVP_PKEY 上下文
EVP_PKEY_CTX *pctx =
EVP_PKEY_CTX_new_from_name(NULL, "X25519", NULL);
EVP_PKEY_CTX *pctx =
EVP_PKEY_CTX_new_from_name(NULL, "X448", NULL);
EVP_PKEY_CTX *pctx =
EVP_PKEY_CTX_new_from_name(NULL, "ED25519", NULL);
EVP_PKEY_CTX *pctx =
EVP_PKEY_CTX_new_from_name(NULL, "ED448", NULL);
可以像这样生成 X25519 密钥
pkey = EVP_PKEY_Q_keygen(NULL, NULL, "X25519");
同样可以生成 X448、ED25519 或 ED448 密钥。
另请参见
EVP_KEYMGMT(3), EVP_PKEY(3), provider-keymgmt(7), EVP_KEYEXCH-X25519(7), EVP_KEYEXCH-X448(7), EVP_SIGNATURE-ED25519(7), EVP_SIGNATURE-ED448(7)
版权
版权所有 2020-2021 The OpenSSL Project Authors。保留所有权利。
根据 Apache 许可证 2.0 版(“许可证”)授权。除遵守许可证外,您不得使用此文件。您可以在源代码分发中的 LICENSE 文件或 https://www.openssl.org/source/license.html 中获取副本。