From 20df0b8f6b70a997a3979a83c5dd0178cc0dbd99 Mon Sep 17 00:00:00 2001 From: "Neal H. Walfield" Date: Thu, 23 Jul 2020 16:52:34 +0200 Subject: openpgp: Add a conversion from Signature to Signature4. - Implement `TryFrom` for `Signature4`. --- openpgp/src/packet/signature/subpacket.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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 for Signature4 { + type Error = anyhow::Error; + + fn try_from(sig: Signature) -> Result { + 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; -- cgit v1.2.3