X25519
名稱
X25519、X448 - EVP_PKEY X25519 和 X448 支援
說明
X25519 和 X448 EVP_PKEY 實作支援使用 X25519 和 X448 進行金鑰產生和金鑰衍生。它有與 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) 中使用金鑰衍生範例,搭配 X25519 和 X448。
另請參閱
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 取得副本。