[−][src]Struct iso7816_tlv::ber::Tlv
BER-TLV structure, following ISO/IEC 7816-4.
BER-TLV data objects
Each BER-TLV data object consists of two or three consecutive fields (see the basic encoding rules of ASN.1 in ISO/IEC 8825-1): a mandatory tag field, a mandatory length field and a conditional value field.
- The tag field consists of one or more consecutive bytes. It indicates a class and an encoding and it encodes a tag number. The value '00' is invalid for the first byte of tag fields (see ISO/IEC 8825-1).
- The length field consists of one or more consecutive bytes. It encodes a length, i.e., a number denoted N.
- If N is zero, there is no value field, i.e., the data object is empty. Otherwise (N > 0), the value field consists of N consecutive bytes.
Methods
impl Tlv
[src]
pub fn new(tag: Tag, value: Value) -> Result<Self, TlvError>
[src]
Create a BER-TLV data object from valid tag and value Fails with TlvError::Inconsistant if the tag indicates a contructed value (resp. primitive) and the value is primitive (resp. contructed).
pub fn to_vec(&self) -> Vec<u8>
[src]
serializes self into a byte vector.
pub fn parse(input: &[u8]) -> (Result<Self, TlvError>, &[u8])
[src]
Parses a byte array into a BER-TLV structure. This also returns the unprocessed data.
pub fn from_bytes(input: &[u8]) -> Result<Self, TlvError>
[src]
Parses a byte array into a BER-TLV structure. Input must exactly match a BER-TLV object.
pub fn find(&self, tag: &Tag) -> Option<&Self>
[src]
Finds first occurence of a TLV object with given tag in self.
pub fn find_all(&self, tag: &Tag) -> Vec<&Self>
[src]
find all occurences of TLV objects with given given tag in self. Note that searching ContextSpecific class tag (0x80 for instance) will return a vector of possibly unrelated tlv data.
Trait Implementations
impl Clone for Tlv
[src]
impl PartialEq<Tlv> for Tlv
[src]
impl Display for Tlv
[src]
impl Debug for Tlv
[src]
Auto Trait Implementations
impl Send for Tlv
impl Unpin for Tlv
impl Sync for Tlv
impl RefUnwindSafe for Tlv
impl UnwindSafe for Tlv
Blanket Implementations
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,