DerObjectContent

Type Alias DerObjectContent 

Source
pub type DerObjectContent<'a> = BerObjectContent<'a>;
Expand description

BER object content

This is the same object as BerObjectContent.

Aliased Type§

pub enum DerObjectContent<'a> {
Show 28 variants EndOfContent, Boolean(bool), Integer(&'a [u8]), BitString(u8, BitStringObject<'a>), OctetString(&'a [u8]), Null, Enum(u64), OID(Oid<'a>), RelativeOID(Oid<'a>), NumericString(&'a str), VisibleString(&'a str), PrintableString(&'a str), IA5String(&'a str), UTF8String(&'a str), T61String(&'a str), VideotexString(&'a str), BmpString(&'a [u8]), UniversalString(&'a [u8]), Sequence(Vec<BerObject<'a>>), Set(Vec<BerObject<'a>>), UTCTime(ASN1DateTime), GeneralizedTime(ASN1DateTime), ObjectDescriptor(&'a str), GraphicString(&'a str), GeneralString(&'a str), Optional(Option<Box<BerObject<'a>>>), Tagged(Class, Tag, Box<BerObject<'a>>), Unknown(Any<'a>),
}

Variants§

§

EndOfContent

EOC (no content)

§

Boolean(bool)

BOOLEAN: decoded value

§

Integer(&'a [u8])

INTEGER: raw bytes

Note: the reason to store the raw bytes is that integers have non-finite length in the spec, and also that the raw encoding is also important for some applications.

To extract the number, see the as_u64, as_u32, as_bigint and as_biguint methods.

§

BitString(u8, BitStringObject<'a>)

BIT STRING: number of unused bits, and object

§

OctetString(&'a [u8])

OCTET STRING: slice

§

Null

NULL (no content)

§

Enum(u64)

ENUMERATED: decoded enum number

§

OID(Oid<'a>)

OID

§

RelativeOID(Oid<'a>)

RELATIVE OID

§

NumericString(&'a str)

NumericString: decoded string

§

VisibleString(&'a str)

VisibleString: decoded string

§

PrintableString(&'a str)

PrintableString: decoded string

§

IA5String(&'a str)

IA5String: decoded string

§

UTF8String(&'a str)

UTF8String: decoded string

§

T61String(&'a str)

T61String: decoded string

§

VideotexString(&'a str)

VideotexString: decoded string

§

BmpString(&'a [u8])

BmpString: raw object bytes

Note: the string is stored as raw bytes because not all UTF-16 sequences can be stored as &str. To access content, use String::from_utf16 or String::from_utf16_lossy.

§

UniversalString(&'a [u8])

UniversalString: raw object bytes

§

Sequence(Vec<BerObject<'a>>)

SEQUENCE: list of objects

§

Set(Vec<BerObject<'a>>)

SET: list of objects

§

UTCTime(ASN1DateTime)

UTCTime: decoded string

§

GeneralizedTime(ASN1DateTime)

GeneralizedTime: decoded string

§

ObjectDescriptor(&'a str)

Object descriptor: decoded string

§

GraphicString(&'a str)

GraphicString: decoded string

§

GeneralString(&'a str)

GeneralString: decoded string

§

Optional(Option<Box<BerObject<'a>>>)

Optional object

§

Tagged(Class, Tag, Box<BerObject<'a>>)

Tagged object (EXPLICIT): class, tag and content of inner object

§

Unknown(Any<'a>)

Private or Unknown (for ex. unknown tag) object

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 64 bytes

Size for each variant:

  • EndOfContent: 0 bytes
  • Boolean: 9 bytes
  • Integer: 24 bytes
  • BitString: 32 bytes
  • OctetString: 24 bytes
  • Null: 0 bytes
  • Enum: 16 bytes
  • OID: 40 bytes
  • RelativeOID: 40 bytes
  • NumericString: 24 bytes
  • VisibleString: 24 bytes
  • PrintableString: 24 bytes
  • IA5String: 24 bytes
  • UTF8String: 24 bytes
  • T61String: 24 bytes
  • VideotexString: 24 bytes
  • BmpString: 24 bytes
  • UniversalString: 24 bytes
  • Sequence: 32 bytes
  • Set: 32 bytes
  • UTCTime: 24 bytes
  • GeneralizedTime: 24 bytes
  • ObjectDescriptor: 24 bytes
  • GraphicString: 24 bytes
  • GeneralString: 24 bytes
  • Optional: 16 bytes
  • Tagged: 24 bytes
  • Unknown: 64 bytes