From ea00dfc13a2ef538644359ed77bbde96d93ecd62 Mon Sep 17 00:00:00 2001 From: Nathaniel McCallum Date: Thu, 10 Feb 2022 09:27:51 -0500 Subject: [PATCH] Derive Integer for pkcs10::Version Signed-off-by: Nathaniel McCallum --- pkcs10/src/version.rs | 43 ++++--------------------------------------- 1 file changed, 4 insertions(+), 39 deletions(-) diff --git a/pkcs10/src/version.rs b/pkcs10/src/version.rs index 48bfad7c4..079b9feba 100644 --- a/pkcs10/src/version.rs +++ b/pkcs10/src/version.rs @@ -1,49 +1,14 @@ //! Certification request information version identifier. -use der::{Decodable, Decoder, Encodable, Encoder, FixedTag, Tag}; +use der::Enumerated; /// Version identifier for certification request information. /// /// (RFC 2986 designates `0` as the only valid version) -#[derive(Clone, Debug, Copy, PartialEq, Eq)] +#[derive(Clone, Debug, Copy, PartialEq, Eq, Enumerated)] +#[asn1(type = "INTEGER")] +#[repr(u8)] pub enum Version { /// Denotes PKCS#8 v1 V1 = 0, } - -impl Decodable<'_> for Version { - fn decode(decoder: &mut Decoder<'_>) -> der::Result { - Version::try_from(u8::decode(decoder)?).map_err(|_| Self::TAG.value_error()) - } -} - -impl Encodable for Version { - fn encoded_len(&self) -> der::Result { - der::Length::from(1u8).for_tlv() - } - - fn encode(&self, encoder: &mut Encoder<'_>) -> der::Result<()> { - u8::from(*self).encode(encoder) - } -} - -impl From for u8 { - fn from(version: Version) -> Self { - version as u8 - } -} - -impl TryFrom for Version { - type Error = der::Error; - - fn try_from(byte: u8) -> Result { - match byte { - 0 => Ok(Version::V1), - _ => Err(Self::TAG.value_error()), - } - } -} - -impl FixedTag for Version { - const TAG: Tag = Tag::Integer; -}