diff --git a/Cargo.toml b/Cargo.toml index 0ef8701..ec5e396 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -69,7 +69,7 @@ tokio1_boring = { package = "tokio-boring", version = "2.1.4", optional = true } ## dkim sha2 = { version = "0.10", optional = true, features = ["oid"] } rsa = { version = "0.9", optional = true } -ed25519-dalek = { version = "1.0.1", optional = true } +ed25519-dalek = { version = "2.0.0", optional = true } # email formats email_address = { version = "0.2.1", default-features = false } diff --git a/src/message/dkim.rs b/src/message/dkim.rs index 0d8e708..646a089 100644 --- a/src/message/dkim.rs +++ b/src/message/dkim.rs @@ -108,7 +108,7 @@ pub struct DkimSigningKey(InnerDkimSigningKey); #[derive(Debug)] enum InnerDkimSigningKey { Rsa(RsaPrivateKey), - Ed25519(ed25519_dalek::Keypair), + Ed25519(ed25519_dalek::SigningKey), } impl DkimSigningKey { @@ -121,14 +121,18 @@ impl DkimSigningKey { RsaPrivateKey::from_pkcs1_pem(private_key) .map_err(|err| DkimSigningKeyError(InnerDkimSigningKeyError::Rsa(err)))?, ), - DkimSigningAlgorithm::Ed25519 => InnerDkimSigningKey::Ed25519( - ed25519_dalek::Keypair::from_bytes( - &crate::base64::decode(private_key).map_err(|err| { - DkimSigningKeyError(InnerDkimSigningKeyError::Base64(err)) - })?, - ) - .map_err(|err| DkimSigningKeyError(InnerDkimSigningKeyError::Ed25519(err)))?, - ), + DkimSigningAlgorithm::Ed25519 => { + InnerDkimSigningKey::Ed25519(ed25519_dalek::SigningKey::from_bytes( + &crate::base64::decode(private_key) + .map_err(|err| DkimSigningKeyError(InnerDkimSigningKeyError::Base64(err)))? + .try_into() + .map_err(|_| { + DkimSigningKeyError(InnerDkimSigningKeyError::Ed25519( + ed25519_dalek::ed25519::Error::new(), + )) + })?, + )) + } })) } fn get_signing_algorithm(&self) -> DkimSigningAlgorithm {