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 bytesBoolean
: 9 bytesInteger
: 24 bytesBitString
: 32 bytesOctetString
: 24 bytesNull
: 0 bytesEnum
: 16 bytesOID
: 40 bytesRelativeOID
: 40 bytesNumericString
: 24 bytesVisibleString
: 24 bytesPrintableString
: 24 bytesIA5String
: 24 bytesUTF8String
: 24 bytesT61String
: 24 bytesVideotexString
: 24 bytesBmpString
: 24 bytesUniversalString
: 24 bytesSequence
: 32 bytesSet
: 32 bytesUTCTime
: 24 bytesGeneralizedTime
: 24 bytesObjectDescriptor
: 24 bytesGraphicString
: 24 bytesGeneralString
: 24 bytesOptional
: 16 bytesTagged
: 24 bytesUnknown
: 64 bytes