summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal H. Walfield <neal@pep.foundation>2020-07-23 16:52:34 +0200
committerNeal H. Walfield <neal@pep.foundation>2020-07-29 17:03:03 +0200
commit20df0b8f6b70a997a3979a83c5dd0178cc0dbd99 (patch)
tree1121a7aad7f73cc43216b8a4d63c7dba917bb894
parent6540c6bd0eefe98de82a327fc61419613b91b3c2 (diff)
openpgp: Add a conversion from Signature to Signature4.
- Implement `TryFrom<Signature>` for `Signature4`.
-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;