OpenSSL

密码学和SSL/TLS工具包

EVP_PKEY-X448

名称

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密钥类型和算法支持

描述

X25519X448ED25519ED448密钥类型在OpenSSL的默认和FIPS提供程序中实现。这些实现支持关联密钥,其中包含公钥pub和私钥priv

密钥生成参数

"dhkem-ikm" (OSSL_PKEY_PARAM_DHKEM_IKM) <八位字节串>

DHKEM需要使用输入密钥材料(种子)生成密钥对。使用此参数指定用于生成私钥的密钥材料。此值不应重复用于其他目的。对于X25519,其长度至少应为32,对于X448,其长度至少应为56。

这仅受X25519和X448支持。

在调用EVP_PKEY_keygen_init()之后使用EVP_PKEY_CTX_set_params()。

常见的X25519、X448、ED25519和ED448参数

除了所有密钥类型都应支持的通用参数(请参阅"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) <八位字节串>

用于获取和设置X25519X448密钥类型的公钥编码。公钥应按照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");

可以类似地生成X448ED25519ED448密钥。

参见

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 OpenSSL 项目作者。保留所有权利。

根据 Apache 许可证 2.0(“许可证”)授权。除非符合许可证,否则您不得使用此文件。您可以在源代码分发中的 LICENSE 文件或 https://www.openssl.org/source/license.html 中获取副本。