From c4cbf496c794d554cf76a369f1f94066c2e14a45 Mon Sep 17 00:00:00 2001 From: Hidekatsu Izuno Date: Sun, 13 Sep 2020 23:48:53 +0900 Subject: [PATCH] Add ecx support --- openssl-sys/src/evp.rs | 4 ++++ openssl-sys/src/obj_mac.rs | 4 ++++ openssl/src/pkey.rs | 16 ++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/openssl-sys/src/evp.rs b/openssl-sys/src/evp.rs index d03f37582..820dd14c9 100644 --- a/openssl-sys/src/evp.rs +++ b/openssl-sys/src/evp.rs @@ -11,8 +11,12 @@ pub const EVP_PKEY_DSA: c_int = NID_dsa; pub const EVP_PKEY_DH: c_int = NID_dhKeyAgreement; pub const EVP_PKEY_EC: c_int = NID_X9_62_id_ecPublicKey; #[cfg(ossl111)] +pub const EVP_PKEY_X25519: c_int = NID_X25519; +#[cfg(ossl111)] pub const EVP_PKEY_ED25519: c_int = NID_ED25519; #[cfg(ossl111)] +pub const EVP_PKEY_X448: c_int = NID_X448; +#[cfg(ossl111)] pub const EVP_PKEY_ED448: c_int = NID_ED448; pub const EVP_PKEY_HMAC: c_int = NID_hmac; pub const EVP_PKEY_CMAC: c_int = NID_cmac; diff --git a/openssl-sys/src/obj_mac.rs b/openssl-sys/src/obj_mac.rs index e348f3419..d78416da3 100644 --- a/openssl-sys/src/obj_mac.rs +++ b/openssl-sys/src/obj_mac.rs @@ -913,6 +913,10 @@ pub const NID_aes_128_cbc_hmac_sha1: c_int = 916; pub const NID_aes_192_cbc_hmac_sha1: c_int = 917; pub const NID_aes_256_cbc_hmac_sha1: c_int = 918; #[cfg(ossl111)] +pub const NID_X25519: c_int = 1034; +#[cfg(ossl111)] +pub const NID_X448: c_int = 1035; +#[cfg(ossl111)] pub const NID_ED25519: c_int = 1087; #[cfg(ossl111)] pub const NID_ED448: c_int = 1088; diff --git a/openssl/src/pkey.rs b/openssl/src/pkey.rs index c8be33ca9..ff0746ff1 100644 --- a/openssl/src/pkey.rs +++ b/openssl/src/pkey.rs @@ -88,6 +88,10 @@ impl Id { pub const ED25519: Id = Id(ffi::EVP_PKEY_ED25519); #[cfg(ossl111)] pub const ED448: Id = Id(ffi::EVP_PKEY_ED448); + #[cfg(ossl111)] + pub const X25519: Id = Id(ffi::EVP_PKEY_X25519); + #[cfg(ossl111)] + pub const X448: Id = Id(ffi::EVP_PKEY_X448); /// Creates a `Id` from an integer representation. pub fn from_raw(value: c_int) -> Id { @@ -494,6 +498,18 @@ impl PKey { } } + /// Generates a new private Ed25519 key + #[cfg(ossl111)] + pub fn generate_x25519() -> Result, ErrorStack> { + PKey::generate_eddsa(ffi::EVP_PKEY_X25519) + } + + /// Generates a new private Ed448 key + #[cfg(ossl111)] + pub fn generate_x448() -> Result, ErrorStack> { + PKey::generate_eddsa(ffi::EVP_PKEY_X448) + } + /// Generates a new private Ed25519 key #[cfg(ossl111)] pub fn generate_ed25519() -> Result, ErrorStack> { -- GitLab