OpenSSL

密码学和SSL/TLS工具包

X25519

名称

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

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