开放SSL

密码学和 SSL/TLS 工具包

X448

名称

X25519,X448 - EVP_PKEY X25519 和 X448 支持

描述

X25519X448 EVP_PKEY 实现支持使用 X25519X448 进行密钥生成和密钥推导。它具有与 RFC 8410 兼容的关联私钥和公钥格式。

密钥生成期间无法设置其他参数。

执行密钥推导时,必须使用 EVP_PKEY_derive_set_peer() 设置对等公钥。

注意

可以通过调用以下方法获取 X25519 算法的上下文

EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_X25519, NULL);

对于 X448 算法,可以通过调用以下方法获取上下文

EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_X448, NULL);

可以使用 EVP_PKEY_new_raw_private_key(3) 直接设置 X25519 或 X448 私钥,或使用 PEM_read_bio_PrivateKey(3)(或类似函数)从 PKCS#8 私钥文件加载。也可以生成全新的密钥(参见下面的示例)。设置私钥也会设置关联的公钥。

可以使用 EVP_PKEY_new_raw_public_key(3) 直接设置 X25519 或 X448 公钥,或使用 PEM_read_bio_PUBKEY(3)(或类似函数)从 PEM 文件中的 SubjectPublicKeyInfo 结构加载。

示例

此示例生成一个 X25519 私钥并将其以 PEM 格式写入标准输出

#include <openssl/evp.h>
#include <openssl/pem.h>
...
EVP_PKEY *pkey = NULL;
EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_X25519, NULL);
EVP_PKEY_keygen_init(pctx);
EVP_PKEY_keygen(pctx, &pkey);
EVP_PKEY_CTX_free(pctx);
PEM_write_PrivateKey(stdout, pkey, NULL, NULL, 0, NULL, NULL);

中的密钥推导示例 EVP_PKEY_derive(3) 可与 X25519X448 配合使用。

参见

EVP_PKEY_CTX_new(3)EVP_PKEY_keygen(3)EVP_PKEY_derive(3)EVP_PKEY_derive_set_peer(3)

版权所有 2017-2020 The OpenSSL Project Authors。保留所有权利。

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