Skip to content

Commit b1d944b

Browse files
committed
der: add fn DecodeValue::from_der_value
1 parent b3c52e7 commit b1d944b

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

der/src/decode.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
//! Trait definition for [`Decode`].
22
3-
use crate::{EncodingRules, Error, FixedTag, Header, Reader, SliceReader, reader::read_value};
3+
use crate::{
4+
AnyRef, Choice, EncodingRules, Error, FixedTag, Header, Reader, SliceReader, Tag,
5+
reader::read_value,
6+
};
47
use core::marker::PhantomData;
58

69
#[cfg(feature = "pem")]
@@ -130,6 +133,16 @@ pub trait DecodeValue<'a>: Sized {
130133

131134
/// Attempt to decode this message using the provided [`Reader`].
132135
fn decode_value<R: Reader<'a>>(reader: &mut R, header: Header) -> Result<Self, Self::Error>;
136+
137+
/// Parse `Self` from the provided DER-encoded value bytes, i.e. without the tag-length.
138+
///
139+
/// Returns [`ErrorKind::TrailingData`] if message is incomplete.
140+
fn from_der_value(tag: Tag, value: &'a [u8]) -> Result<Self, <Self as DecodeValue<'a>>::Error>
141+
where
142+
Self: Choice<'a>,
143+
{
144+
AnyRef::new(tag, value)?.decode_as::<Self>()
145+
}
133146
}
134147

135148
#[cfg(feature = "alloc")]

0 commit comments

Comments
 (0)