diff options
-rw-r--r-- | openpgp/src/packet/signature/subpacket.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/openpgp/src/packet/signature/subpacket.rs b/openpgp/src/packet/signature/subpacket.rs index d771068d..db513907 100644 --- a/openpgp/src/packet/signature/subpacket.rs +++ b/openpgp/src/packet/signature/subpacket.rs @@ -56,7 +56,7 @@ use std::cell::RefCell; use std::collections::HashMap; -use std::convert::TryInto; +use std::convert::{TryInto, TryFrom}; use std::hash::{Hash, Hasher}; use std::sync::Mutex; use std::ops::{Deref, DerefMut}; @@ -1985,6 +1985,21 @@ impl SubpacketAreas { } } +impl TryFrom<Signature> for Signature4 { + type Error = anyhow::Error; + + fn try_from(sig: Signature) -> Result<Self> { + match sig { + Signature::V4(sig) => Ok(sig), + sig => Err( + Error::InvalidArgument( + format!("Got a v{}, require a v4 signature", sig.version()) + .into()) + .into()), + } + } +} + impl Deref for Signature4 { type Target = signature::SignatureFields; |