From ecc2ac5a7b476b091b1426f1ecb1235f071200d9 Mon Sep 17 00:00:00 2001 From: Nathaniel McCallum Date: Thu, 24 Feb 2022 17:28:33 -0500 Subject: [PATCH] fix: impl DecodeValue for AlgorithmIdentifier This enables AlgorithmIdentifier to be decoded from an Any type. Signed-off-by: Nathaniel McCallum --- spki/src/algorithm.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/spki/src/algorithm.rs b/spki/src/algorithm.rs index 146fe6420..8997c4a60 100644 --- a/spki/src/algorithm.rs +++ b/spki/src/algorithm.rs @@ -2,10 +2,8 @@ use crate::{Error, Result}; use core::cmp::Ordering; -use der::{ - asn1::{Any, ObjectIdentifier}, - Decodable, Decoder, DerOrd, Encodable, Sequence, ValueOrd, -}; +use der::asn1::{Any, ObjectIdentifier, SequenceRef}; +use der::{Decodable, DecodeValue, Decoder, DerOrd, Encodable, Header, Sequence, ValueOrd}; /// X.509 `AlgorithmIdentifier` as defined in [RFC 5280 Section 4.1.1.2]. /// @@ -96,9 +94,9 @@ impl<'a> AlgorithmIdentifier<'a> { } } -impl<'a> Decodable<'a> for AlgorithmIdentifier<'a> { - fn decode(decoder: &mut Decoder<'a>) -> der::Result { - decoder.sequence(|decoder| { +impl<'a> DecodeValue<'a> for AlgorithmIdentifier<'a> { + fn decode_value(decoder: &mut Decoder<'a>, header: Header) -> der::Result { + SequenceRef::decode_value(decoder, header)?.decode_body(|decoder| { let oid = decoder.decode()?; let parameters = decoder.decode()?; Ok(Self { oid, parameters })