Skip to content

der: remove Reader::read_value #1887

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions der/src/asn1/internal_macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -151,8 +151,8 @@ macro_rules! impl_custom_class {
return Err(header.tag.non_canonical_error().into());
}

// read_value checks if header matches decoded length
let value = reader.read_value(header, |reader| {
// read_nested checks if header matches decoded length
let value = reader.read_nested(header.length, |reader| {
// Decode inner IMPLICIT value
T::decode_value(reader, header)
})?;
Expand Down Expand Up @@ -192,7 +192,7 @@ macro_rules! impl_custom_class {
Tag::$class_enum_name { number, .. } => Ok(Self {
tag_number: number,
tag_mode: TagMode::default(),
value: reader.read_value(header, |reader| {
value: reader.read_nested(header.length, |reader| {
// Decode inner tag-length-value of EXPLICIT
T::decode(reader)
})?,
Expand Down
2 changes: 1 addition & 1 deletion der/src/decode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ where
fn decode<R: Reader<'a>>(reader: &mut R) -> Result<T, <T as DecodeValue<'a>>::Error> {
let header = Header::decode(reader)?;
header.tag.assert_eq(T::TAG)?;
reader.read_value(header, |r| T::decode_value(r, header))
reader.read_nested(header.length, |r| T::decode_value(r, header))
}
}

Expand Down
14 changes: 1 addition & 13 deletions der/src/reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,6 @@ pub trait Reader<'r>: Clone {
E: From<Error>,
F: FnOnce(&mut Self) -> Result<T, E>;

/// Read a value (i.e. the "V" part of a "TLV" field) using the provided header.
///
/// This calls the provided function `f` with a nested reader created using
/// [`Reader::read_nested`].
fn read_value<T, F, E>(&mut self, header: Header, f: F) -> Result<T, E>
where
E: From<Error>,
F: FnOnce(&mut Self) -> Result<T, E>,
{
self.read_nested(header.length, f)
}

/// Attempt to read data borrowed directly from the input as a slice,
/// updating the internal cursor position.
///
Expand Down Expand Up @@ -204,7 +192,7 @@ pub trait Reader<'r>: Clone {
{
let header = Header::decode(self)?;
header.tag.assert_eq(Tag::Sequence)?;
self.read_value(header, f)
self.read_nested(header.length, f)
}

/// Obtain a slice of bytes containing a complete TLV production suitable for parsing later.
Expand Down