summaryrefslogtreecommitdiffstats
path: root/openpgp/src/packet/signature/subpacket.rs
diff options
context:
space:
mode:
Diffstat (limited to 'openpgp/src/packet/signature/subpacket.rs')
-rw-r--r--openpgp/src/packet/signature/subpacket.rs17
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;