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 The OpenSSL Project Authors。保留所有權利。

根據 Apache 授權條款 2.0 (「授權條款」) 授權。您不得在不遵守授權條款的情況下使用此檔案。您可以在原始程式碼散佈中的 LICENSE 檔案中取得副本,或在 https://www.openssl.org/source/license.html 取得副本。