pub trait Reader<'r>: Sized {
Show 19 methods
    // Required methods
    fn input_len(&self) -> Length;
    fn peek_byte(&self) -> Option<u8>;
    fn peek_header(&self) -> Result<Header>;
    fn position(&self) -> Length;
    fn read_slice(&mut self, len: Length) -> Result<&'r [u8]>;
    // Provided methods
    fn context_specific<T>(
        &mut self,
        tag_number: TagNumber,
        tag_mode: TagMode,
    ) -> Result<Option<T>>
       where T: DecodeValue<'r> + FixedTag { ... }
    fn decode<T: Decode<'r>>(&mut self) -> Result<T> { ... }
    fn error(&mut self, kind: ErrorKind) -> Error { ... }
    fn finish<T>(self, value: T) -> Result<T> { ... }
    fn is_finished(&self) -> bool { ... }
    fn offset(&self) -> Length { ... }
    fn peek_tag(&self) -> Result<Tag> { ... }
    fn read_byte(&mut self) -> Result<u8> { ... }
    fn read_into<'o>(&mut self, buf: &'o mut [u8]) -> Result<&'o [u8]> { ... }
    fn read_nested<'n, T, F>(&'n mut self, len: Length, f: F) -> Result<T>
       where F: FnOnce(&mut NestedReader<'n, Self>) -> Result<T> { ... }
    fn read_vec(&mut self, len: Length) -> Result<Vec<u8>> { ... }
    fn remaining_len(&self) -> Length { ... }
    fn sequence<'n, F, T>(&'n mut self, f: F) -> Result<T>
       where F: FnOnce(&mut NestedReader<'n, Self>) -> Result<T> { ... }
    fn tlv_bytes(&mut self) -> Result<&'r [u8]> { ... }
}Expand description
Reader trait which reads DER-encoded input.
Required Methods§
sourcefn peek_header(&self) -> Result<Header>
 
fn peek_header(&self) -> Result<Header>
Peek forward in the input data, attempting to decode a Header from
the data at the current position in the decoder.
Does not modify the decoder’s state.
sourcefn read_slice(&mut self, len: Length) -> Result<&'r [u8]>
 
fn read_slice(&mut self, len: Length) -> Result<&'r [u8]>
Attempt to read data borrowed directly from the input as a slice, updating the internal cursor position.
§Returns
- Ok(slice)on success
- Err(ErrorKind::Incomplete)if there is not enough data
- Err(ErrorKind::Reader)if the reader can’t borrow from the input
Provided Methods§
sourcefn context_specific<T>(
    &mut self,
    tag_number: TagNumber,
    tag_mode: TagMode,
) -> Result<Option<T>>where
    T: DecodeValue<'r> + FixedTag,
 
fn context_specific<T>(
    &mut self,
    tag_number: TagNumber,
    tag_mode: TagMode,
) -> Result<Option<T>>where
    T: DecodeValue<'r> + FixedTag,
Attempt to decode an ASN.1 CONTEXT-SPECIFIC field with the
provided TagNumber.
sourcefn error(&mut self, kind: ErrorKind) -> Error
 
fn error(&mut self, kind: ErrorKind) -> Error
Return an error with the given ErrorKind, annotating it with
context about where the error occurred.
sourcefn finish<T>(self, value: T) -> Result<T>
 
fn finish<T>(self, value: T) -> Result<T>
Finish decoding, returning the given value if there is no remaining data, or an error otherwise
sourcefn is_finished(&self) -> bool
 
fn is_finished(&self) -> bool
Have we read all of the input data?
sourcefn offset(&self) -> Length
 
fn offset(&self) -> Length
Offset within the original input stream.
This is used for error reporting, and doesn’t need to be overridden
by any reader implementations (except for the built-in NestedReader,
which consumes nested input messages)
sourcefn peek_tag(&self) -> Result<Tag>
 
fn peek_tag(&self) -> Result<Tag>
Peek at the next byte in the decoder and attempt to decode it as a
Tag value.
Does not modify the decoder’s state.
sourcefn read_into<'o>(&mut self, buf: &'o mut [u8]) -> Result<&'o [u8]>
 
fn read_into<'o>(&mut self, buf: &'o mut [u8]) -> Result<&'o [u8]>
Attempt to read input data, writing it into the provided buffer, and returning a slice on success.
§Returns
- Ok(slice)if there is sufficient data
- Err(ErrorKind::Incomplete)if there is not enough data
sourcefn read_nested<'n, T, F>(&'n mut self, len: Length, f: F) -> Result<T>where
    F: FnOnce(&mut NestedReader<'n, Self>) -> Result<T>,
 
fn read_nested<'n, T, F>(&'n mut self, len: Length, f: F) -> Result<T>where
    F: FnOnce(&mut NestedReader<'n, Self>) -> Result<T>,
Read nested data of the given length.
sourcefn remaining_len(&self) -> Length
 
fn remaining_len(&self) -> Length
Get the number of bytes still remaining in the buffer.