pub struct Any<'a> {
pub header: Header<'a>,
pub data: &'a [u8],
}
Expand description
The Any
object is not strictly an ASN.1 type, but holds a generic description of any object
that could be encoded.
It contains a header, and either a reference to or owned data for the object content.
Note: this type is only provided in borrowed version (i.e. it cannot own the inner data).
Fields§
§header: Header<'a>
The object header
data: &'a [u8]
The object contents
Implementations§
Source§impl<'a> Any<'a>
impl<'a> Any<'a>
Sourcepub const fn new(header: Header<'a>, data: &'a [u8]) -> Self
pub const fn new(header: Header<'a>, data: &'a [u8]) -> Self
Create a new Any
from BER/DER header and content
Sourcepub const fn from_tag_and_data(tag: Tag, data: &'a [u8]) -> Self
pub const fn from_tag_and_data(tag: Tag, data: &'a [u8]) -> Self
Create a new Any
from a tag, and BER/DER content
Sourcepub fn with_class(self, class: Class) -> Self
pub fn with_class(self, class: Class) -> Self
Update the class of the current object
pub fn parse_ber<T>(&'a self) -> ParseResult<'a, T>where
T: FromBer<'a>,
Sourcepub fn from_ber_and_then<F, T, E>(
class: Class,
tag: u32,
bytes: &'a [u8],
op: F,
) -> ParseResult<'a, T, E>
pub fn from_ber_and_then<F, T, E>( class: Class, tag: u32, bytes: &'a [u8], op: F, ) -> ParseResult<'a, T, E>
Parse a BER value and apply the provided parsing function to content
After parsing, the sequence object and header are discarded.
Sourcepub fn from_der_and_then<F, T, E>(
class: Class,
tag: u32,
bytes: &'a [u8],
op: F,
) -> ParseResult<'a, T, E>
pub fn from_der_and_then<F, T, E>( class: Class, tag: u32, bytes: &'a [u8], op: F, ) -> ParseResult<'a, T, E>
Parse a DER value and apply the provided parsing function to content
After parsing, the sequence object and header are discarded.
pub fn parse_der<T>(&'a self) -> ParseResult<'a, T>where
T: FromDer<'a>,
Sourcepub fn parse_ber_content<'i>(
i: &'i [u8],
header: &Header<'_>,
) -> ParseResult<'i, &'i [u8]>
pub fn parse_ber_content<'i>( i: &'i [u8], header: &Header<'_>, ) -> ParseResult<'i, &'i [u8]>
Get the content following a BER header
Sourcepub fn parse_der_content<'i>(
i: &'i [u8],
header: &Header<'_>,
) -> ParseResult<'i, &'i [u8]>
pub fn parse_der_content<'i>( i: &'i [u8], header: &Header<'_>, ) -> ParseResult<'i, &'i [u8]>
Get the content following a DER header
Source§impl<'a> Any<'a>
impl<'a> Any<'a>
Sourcepub fn bitstring(self) -> Result<BitString<'a>>
pub fn bitstring(self) -> Result<BitString<'a>>
Attempt to convert object to BitString<'a>
(ASN.1 type: BIT STRING
).
Sourcepub fn bmpstring(self) -> Result<BmpString<'a>>
pub fn bmpstring(self) -> Result<BmpString<'a>>
Attempt to convert object to BmpString<'a>
(ASN.1 type: BmpString
).
Sourcepub fn boolean(self) -> Result<Boolean>
pub fn boolean(self) -> Result<Boolean>
Attempt to convert object to Boolean
(ASN.1 type: BOOLEAN
).
Sourcepub fn embedded_pdv(self) -> Result<EmbeddedPdv<'a>>
pub fn embedded_pdv(self) -> Result<EmbeddedPdv<'a>>
Attempt to convert object to EmbeddedPdv<'a>
(ASN.1 type: EMBEDDED PDV
).
Sourcepub fn enumerated(self) -> Result<Enumerated>
pub fn enumerated(self) -> Result<Enumerated>
Attempt to convert object to Enumerated
(ASN.1 type: ENUMERATED
).
Sourcepub fn generalizedtime(self) -> Result<GeneralizedTime>
pub fn generalizedtime(self) -> Result<GeneralizedTime>
Attempt to convert object to GeneralizedTime
(ASN.1 type: GeneralizedTime
).
Sourcepub fn generalstring(self) -> Result<GeneralString<'a>>
pub fn generalstring(self) -> Result<GeneralString<'a>>
Attempt to convert object to GeneralString<'a>
(ASN.1 type: GeneralString
).
Sourcepub fn graphicstring(self) -> Result<GraphicString<'a>>
pub fn graphicstring(self) -> Result<GraphicString<'a>>
Attempt to convert object to GraphicString<'a>
(ASN.1 type: GraphicString
).
Sourcepub fn ia5string(self) -> Result<Ia5String<'a>>
pub fn ia5string(self) -> Result<Ia5String<'a>>
Attempt to convert object to Ia5String<'a>
(ASN.1 type: IA5String
).
Sourcepub fn integer(self) -> Result<Integer<'a>>
pub fn integer(self) -> Result<Integer<'a>>
Attempt to convert object to Integer<'a>
(ASN.1 type: INTEGER
).
Sourcepub fn numericstring(self) -> Result<NumericString<'a>>
pub fn numericstring(self) -> Result<NumericString<'a>>
Attempt to convert object to NumericString<'a>
(ASN.1 type: NumericString
).
Sourcepub fn objectdescriptor(self) -> Result<ObjectDescriptor<'a>>
pub fn objectdescriptor(self) -> Result<ObjectDescriptor<'a>>
Attempt to convert object to ObjectDescriptor<'a>
(ASN.1 type: ObjectDescriptor
).
Sourcepub fn octetstring(self) -> Result<OctetString<'a>>
pub fn octetstring(self) -> Result<OctetString<'a>>
Attempt to convert object to OctetString<'a>
(ASN.1 type: OCTET STRING
).
Sourcepub fn oid(self) -> Result<Oid<'a>>
pub fn oid(self) -> Result<Oid<'a>>
Attempt to convert object to Oid<'a>
(ASN.1 type: OBJECT IDENTIFIER
).
Sourcepub fn relative_oid(self) -> Result<Oid<'a>>
pub fn relative_oid(self) -> Result<Oid<'a>>
Attempt to convert object to Oid
(ASN.1 type: RELATIVE-OID
).
Sourcepub fn printablestring(self) -> Result<PrintableString<'a>>
pub fn printablestring(self) -> Result<PrintableString<'a>>
Attempt to convert object to PrintableString<'a>
(ASN.1 type: PrintableString
).
Sourcepub fn sequence(self) -> Result<Sequence<'a>>
pub fn sequence(self) -> Result<Sequence<'a>>
Attempt to convert object to Sequence<'a>
(ASN.1 type: SEQUENCE
).
Sourcepub fn str(self) -> Result<&'a str>
pub fn str(self) -> Result<&'a str>
Attempt to convert object to &'a str
(ASN.1 type: UTF8String
).
Sourcepub fn string(self) -> Result<String>
pub fn string(self) -> Result<String>
Attempt to convert object to String
(ASN.1 type: UTF8String
).
Sourcepub fn teletexstring(self) -> Result<TeletexString<'a>>
pub fn teletexstring(self) -> Result<TeletexString<'a>>
Attempt to convert object to TeletexString<'a>
(ASN.1 type: TeletexString
).
Sourcepub fn universalstring(self) -> Result<UniversalString<'a>>
pub fn universalstring(self) -> Result<UniversalString<'a>>
Attempt to convert object to UniversalString<'a>
(ASN.1 type: UniversalString
).
Sourcepub fn utctime(self) -> Result<UtcTime>
pub fn utctime(self) -> Result<UtcTime>
Attempt to convert object to UtcTime
(ASN.1 type: UTCTime
).
Sourcepub fn utf8string(self) -> Result<Utf8String<'a>>
pub fn utf8string(self) -> Result<Utf8String<'a>>
Attempt to convert object to Utf8String<'a>
(ASN.1 type: UTF8String
).
Sourcepub fn videotexstring(self) -> Result<VideotexString<'a>>
pub fn videotexstring(self) -> Result<VideotexString<'a>>
Attempt to convert object to VideotexString<'a>
(ASN.1 type: VideotexString
).
Sourcepub fn visiblestring(self) -> Result<VisibleString<'a>>
pub fn visiblestring(self) -> Result<VisibleString<'a>>
Attempt to convert object to VisibleString<'a>
(ASN.1 type: VisibleString
).
Sourcepub fn as_bitstring(&self) -> Result<BitString<'_>>
pub fn as_bitstring(&self) -> Result<BitString<'_>>
Attempt to create ASN.1 type BITSTRING
from this object.
Sourcepub fn as_boolean(&self) -> Result<Boolean>
pub fn as_boolean(&self) -> Result<Boolean>
Attempt to create ASN.1 type BOOLEAN
from this object.
Sourcepub fn as_embedded_pdv(&self) -> Result<EmbeddedPdv<'_>>
pub fn as_embedded_pdv(&self) -> Result<EmbeddedPdv<'_>>
Attempt to create ASN.1 type EMBEDDED PDV
from this object.
Sourcepub fn as_endofcontent(&self) -> Result<EndOfContent>
pub fn as_endofcontent(&self) -> Result<EndOfContent>
Attempt to create ASN.1 type END OF CONTENT (not a real ASN.1 type)
from this object.
Sourcepub fn as_enumerated(&self) -> Result<Enumerated>
pub fn as_enumerated(&self) -> Result<Enumerated>
Attempt to create ASN.1 type ENUMERATED
from this object.
Sourcepub fn as_generalizedtime(&self) -> Result<GeneralizedTime>
pub fn as_generalizedtime(&self) -> Result<GeneralizedTime>
Attempt to create ASN.1 type GeneralizedTime
from this object.
Sourcepub fn as_generalstring(&self) -> Result<GeneralizedTime>
pub fn as_generalstring(&self) -> Result<GeneralizedTime>
Attempt to create ASN.1 type GeneralString
from this object.
Sourcepub fn as_graphicstring(&self) -> Result<GraphicString<'_>>
pub fn as_graphicstring(&self) -> Result<GraphicString<'_>>
Attempt to create ASN.1 type GraphicString
from this object.
Sourcepub fn as_ia5string(&self) -> Result<Ia5String<'_>>
pub fn as_ia5string(&self) -> Result<Ia5String<'_>>
Attempt to create ASN.1 type IA5String
from this object.
Sourcepub fn as_integer(&self) -> Result<Integer<'_>>
pub fn as_integer(&self) -> Result<Integer<'_>>
Attempt to create ASN.1 type INTEGER
from this object.
Sourcepub fn as_numericstring(&self) -> Result<NumericString<'_>>
pub fn as_numericstring(&self) -> Result<NumericString<'_>>
Attempt to create ASN.1 type NumericString
from this object.
Sourcepub fn as_objectdescriptor(&self) -> Result<ObjectDescriptor<'_>>
pub fn as_objectdescriptor(&self) -> Result<ObjectDescriptor<'_>>
Attempt to create ASN.1 type OBJECT IDENTIFIER
from this object.
Sourcepub fn as_octetstring(&self) -> Result<OctetString<'_>>
pub fn as_octetstring(&self) -> Result<OctetString<'_>>
Attempt to create ASN.1 type OCTET STRING
from this object.
Sourcepub fn as_oid(&self) -> Result<Oid<'_>>
pub fn as_oid(&self) -> Result<Oid<'_>>
Attempt to create ASN.1 type OBJECT IDENTIFIER
from this object.
Sourcepub fn as_relative_oid(&self) -> Result<Oid<'a>>
pub fn as_relative_oid(&self) -> Result<Oid<'a>>
Attempt to create ASN.1 type RELATIVE-OID
from this object.
Sourcepub fn as_printablestring(&self) -> Result<PrintableString<'_>>
pub fn as_printablestring(&self) -> Result<PrintableString<'_>>
Attempt to create ASN.1 type PrintableString
from this object.
Sourcepub fn as_sequence(&self) -> Result<Sequence<'_>>
pub fn as_sequence(&self) -> Result<Sequence<'_>>
Attempt to create ASN.1 type SEQUENCE
from this object.
Sourcepub fn as_string(&self) -> Result<String>
pub fn as_string(&self) -> Result<String>
Attempt to create ASN.1 type UTF8String
from this object.
Sourcepub fn as_teletexstring(&self) -> Result<TeletexString<'_>>
pub fn as_teletexstring(&self) -> Result<TeletexString<'_>>
Attempt to create ASN.1 type TeletexString
from this object.
Sourcepub fn as_universalstring(&self) -> Result<UniversalString<'_>>
pub fn as_universalstring(&self) -> Result<UniversalString<'_>>
Attempt to create ASN.1 type UniversalString
from this object.
Sourcepub fn as_utctime(&self) -> Result<UtcTime>
pub fn as_utctime(&self) -> Result<UtcTime>
Attempt to create ASN.1 type UTCTime
from this object.
Sourcepub fn as_utf8string(&self) -> Result<Utf8String<'_>>
pub fn as_utf8string(&self) -> Result<Utf8String<'_>>
Attempt to create ASN.1 type UTF8String
from this object.
Sourcepub fn as_videotexstring(&self) -> Result<VideotexString<'_>>
pub fn as_videotexstring(&self) -> Result<VideotexString<'_>>
Attempt to create ASN.1 type VideotexString
from this object.
Sourcepub fn as_visiblestring(&self) -> Result<VisibleString<'_>>
pub fn as_visiblestring(&self) -> Result<VisibleString<'_>>
Attempt to create ASN.1 type VisibleString
from this object.
Sourcepub fn as_optional<'b, T>(&'b self) -> Result<Option<T>>
pub fn as_optional<'b, T>(&'b self) -> Result<Option<T>>
Attempt to create an Option<T>
from this object.
Sourcepub fn as_tagged_explicit<T, E, const CLASS: u8, const TAG: u32>(
&self,
) -> Result<TaggedValue<T, E, Explicit, CLASS, TAG>, E>
pub fn as_tagged_explicit<T, E, const CLASS: u8, const TAG: u32>( &self, ) -> Result<TaggedValue<T, E, Explicit, CLASS, TAG>, E>
Attempt to create a tagged value (EXPLICIT) from this object.
Trait Implementations§
Source§impl CheckDerConstraints for Any<'_>
impl CheckDerConstraints for Any<'_>
Source§impl<'a> FromBer<'a> for Any<'a>
impl<'a> FromBer<'a> for Any<'a>
Source§fn from_ber(bytes: &'a [u8]) -> ParseResult<'_, Self>
fn from_ber(bytes: &'a [u8]) -> ParseResult<'_, Self>
Source§impl<'a> FromDer<'a> for Any<'a>
impl<'a> FromDer<'a> for Any<'a>
Source§fn from_der(bytes: &'a [u8]) -> ParseResult<'_, Self>
fn from_der(bytes: &'a [u8]) -> ParseResult<'_, Self>
Source§impl ToDer for Any<'_>
impl ToDer for Any<'_>
Source§fn write_der_raw(&self, writer: &mut dyn Write) -> SerializeResult<usize>
fn write_der_raw(&self, writer: &mut dyn Write) -> SerializeResult<usize>
Similar to using to_der
, but uses header without computing length value
Source§fn to_der_len(&self) -> Result<usize>
fn to_der_len(&self) -> Result<usize>
Source§fn write_der_header(&self, writer: &mut dyn Write) -> SerializeResult<usize>
fn write_der_header(&self, writer: &mut dyn Write) -> SerializeResult<usize>
Source§fn write_der_content(&self, writer: &mut dyn Write) -> SerializeResult<usize>
fn write_der_content(&self, writer: &mut dyn Write) -> SerializeResult<usize>
Source§fn to_der_vec(&self) -> SerializeResult<Vec<u8>>
fn to_der_vec(&self) -> SerializeResult<Vec<u8>>
Vec<u8>
.Source§fn to_der_vec_raw(&self) -> SerializeResult<Vec<u8>>
fn to_der_vec_raw(&self) -> SerializeResult<Vec<u8>>
to_vec
, but uses provided values without changes.
This can generate an invalid encoding for a DER object.