diff --git a/openssl-sys/src/evp.rs b/openssl-sys/src/evp.rs index d03f375829441939ec76dfa445de472ebd3b9d71..820dd14c99cdf2793db551c6e78cc089b963568d 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 e348f34193d1a7caf0592985519d5653d40cdc3f..d78416da3a9f6303e070b821ff1dd1a180f01f18 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 c8be33ca92e0c36cbed35b3fd53a0a7ba6ec89ee..ff0746ff18637837611d80b04905313090b62086 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> {