pub trait Encoder {
type Ok;
type Error: Error + Into<EncodeError> + From<EncodeError>;
Show 38 methods
// Required methods
fn codec(&self) -> Codec;
fn encode_any(
&mut self,
tag: Tag,
value: &Any
) -> Result<Self::Ok, Self::Error>;
fn encode_bool(
&mut self,
tag: Tag,
value: bool
) -> Result<Self::Ok, Self::Error>;
fn encode_bit_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &BitStr
) -> Result<Self::Ok, Self::Error>;
fn encode_enumerated<E: Enumerated>(
&mut self,
tag: Tag,
value: &E
) -> Result<Self::Ok, Self::Error>;
fn encode_object_identifier(
&mut self,
tag: Tag,
value: &[u32]
) -> Result<Self::Ok, Self::Error>;
fn encode_integer(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &BigInt
) -> Result<Self::Ok, Self::Error>;
fn encode_null(&mut self, tag: Tag) -> Result<Self::Ok, Self::Error>;
fn encode_octet_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &[u8]
) -> Result<Self::Ok, Self::Error>;
fn encode_general_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &GeneralString
) -> Result<Self::Ok, Self::Error>;
fn encode_utf8_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &str
) -> Result<Self::Ok, Self::Error>;
fn encode_visible_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &VisibleString
) -> Result<Self::Ok, Self::Error>;
fn encode_ia5_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &Ia5String
) -> Result<Self::Ok, Self::Error>;
fn encode_printable_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &PrintableString
) -> Result<Self::Ok, Self::Error>;
fn encode_numeric_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &NumericString
) -> Result<Self::Ok, Self::Error>;
fn encode_teletex_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &TeletexString
) -> Result<Self::Ok, Self::Error>;
fn encode_bmp_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &BmpString
) -> Result<Self::Ok, Self::Error>;
fn encode_generalized_time(
&mut self,
tag: Tag,
value: &GeneralizedTime
) -> Result<Self::Ok, Self::Error>;
fn encode_utc_time(
&mut self,
tag: Tag,
value: &UtcTime
) -> Result<Self::Ok, Self::Error>;
fn encode_explicit_prefix<V: Encode>(
&mut self,
tag: Tag,
value: &V
) -> Result<Self::Ok, Self::Error>;
fn encode_sequence<C, F>(
&mut self,
tag: Tag,
encoder_scope: F
) -> Result<Self::Ok, Self::Error>
where C: Constructed,
F: FnOnce(&mut Self) -> Result<(), Self::Error>;
fn encode_sequence_of<E: Encode>(
&mut self,
tag: Tag,
value: &[E],
constraints: Constraints<'_>
) -> Result<Self::Ok, Self::Error>;
fn encode_set<C, F>(
&mut self,
tag: Tag,
value: F
) -> Result<Self::Ok, Self::Error>
where C: Constructed,
F: FnOnce(&mut Self) -> Result<(), Self::Error>;
fn encode_set_of<E: Encode>(
&mut self,
tag: Tag,
value: &SetOf<E>,
constraints: Constraints<'_>
) -> Result<Self::Ok, Self::Error>;
fn encode_some<E: Encode>(
&mut self,
value: &E
) -> Result<Self::Ok, Self::Error>;
fn encode_some_with_tag_and_constraints<E: Encode>(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &E
) -> Result<Self::Ok, Self::Error>;
fn encode_none<E: Encode>(&mut self) -> Result<Self::Ok, Self::Error>;
fn encode_none_with_tag(
&mut self,
tag: Tag
) -> Result<Self::Ok, Self::Error>;
fn encode_choice<E: Encode + Choice>(
&mut self,
constraints: Constraints<'_>,
tag: Tag,
identifier: &'static str,
encode_fn: impl FnOnce(&mut Self) -> Result<Tag, Self::Error>
) -> Result<Self::Ok, Self::Error>;
fn encode_extension_addition<E: Encode>(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: E
) -> Result<Self::Ok, Self::Error>;
fn encode_extension_addition_group<E>(
&mut self,
value: Option<&E>
) -> Result<Self::Ok, Self::Error>
where E: Encode + Constructed;
// Provided methods
fn encode_or_default<E: Encode + Default + PartialEq>(
&mut self,
value: &E
) -> Result<Self::Ok, Self::Error> { ... }
fn encode_with_tag_or_default<E: Encode + Default + PartialEq>(
&mut self,
tag: Tag,
value: &E
) -> Result<Self::Ok, Self::Error> { ... }
fn encode_some_with_tag<E: Encode>(
&mut self,
tag: Tag,
value: &E
) -> Result<Self::Ok, Self::Error> { ... }
fn encode_default<E: Encode + PartialEq>(
&mut self,
value: &E,
default: impl FnOnce() -> E
) -> Result<Self::Ok, Self::Error> { ... }
fn encode_default_with_tag<E: Encode + PartialEq>(
&mut self,
tag: Tag,
value: &E,
default: impl FnOnce() -> E
) -> Result<Self::Ok, Self::Error> { ... }
fn encode_default_with_tag_and_constraints<E: Encode + PartialEq>(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &E,
default: impl FnOnce() -> E
) -> Result<Self::Ok, Self::Error> { ... }
fn encode_default_with_constraints<E: Encode + PartialEq>(
&mut self,
constraints: Constraints<'_>,
value: &E,
default: impl FnOnce() -> E
) -> Result<Self::Ok, Self::Error> { ... }
}
Expand description
A data format encode any ASN.1 data type.
Required Associated Types§
type Ok
type Error: Error + Into<EncodeError> + From<EncodeError>
Required Methods§
sourcefn encode_any(&mut self, tag: Tag, value: &Any) -> Result<Self::Ok, Self::Error>
fn encode_any(&mut self, tag: Tag, value: &Any) -> Result<Self::Ok, Self::Error>
Encode an unknown ASN.1 value.
sourcefn encode_bool(
&mut self,
tag: Tag,
value: bool
) -> Result<Self::Ok, Self::Error>
fn encode_bool( &mut self, tag: Tag, value: bool ) -> Result<Self::Ok, Self::Error>
Encode a BOOL
value.
sourcefn encode_bit_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &BitStr
) -> Result<Self::Ok, Self::Error>
fn encode_bit_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &BitStr ) -> Result<Self::Ok, Self::Error>
Encode a BIT STRING
value.
sourcefn encode_enumerated<E: Enumerated>(
&mut self,
tag: Tag,
value: &E
) -> Result<Self::Ok, Self::Error>
fn encode_enumerated<E: Enumerated>( &mut self, tag: Tag, value: &E ) -> Result<Self::Ok, Self::Error>
Encode a ENUMERATED
value.
sourcefn encode_object_identifier(
&mut self,
tag: Tag,
value: &[u32]
) -> Result<Self::Ok, Self::Error>
fn encode_object_identifier( &mut self, tag: Tag, value: &[u32] ) -> Result<Self::Ok, Self::Error>
Encode a OBJECT IDENTIFIER
value.
sourcefn encode_integer(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &BigInt
) -> Result<Self::Ok, Self::Error>
fn encode_integer( &mut self, tag: Tag, constraints: Constraints<'_>, value: &BigInt ) -> Result<Self::Ok, Self::Error>
Encode a INTEGER
value.
sourcefn encode_octet_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &[u8]
) -> Result<Self::Ok, Self::Error>
fn encode_octet_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &[u8] ) -> Result<Self::Ok, Self::Error>
Encode a OCTET STRING
value.
sourcefn encode_general_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &GeneralString
) -> Result<Self::Ok, Self::Error>
fn encode_general_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &GeneralString ) -> Result<Self::Ok, Self::Error>
Encode a GeneralString
value.
sourcefn encode_utf8_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &str
) -> Result<Self::Ok, Self::Error>
fn encode_utf8_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &str ) -> Result<Self::Ok, Self::Error>
Encode a Utf8String
value.
sourcefn encode_visible_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &VisibleString
) -> Result<Self::Ok, Self::Error>
fn encode_visible_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &VisibleString ) -> Result<Self::Ok, Self::Error>
Encode a VisibleString
value.
sourcefn encode_ia5_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &Ia5String
) -> Result<Self::Ok, Self::Error>
fn encode_ia5_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &Ia5String ) -> Result<Self::Ok, Self::Error>
Encode a Ia5String
value.
sourcefn encode_printable_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &PrintableString
) -> Result<Self::Ok, Self::Error>
fn encode_printable_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &PrintableString ) -> Result<Self::Ok, Self::Error>
Encode a Ia5String
value.
sourcefn encode_numeric_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &NumericString
) -> Result<Self::Ok, Self::Error>
fn encode_numeric_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &NumericString ) -> Result<Self::Ok, Self::Error>
Encode a NumericString
value.
sourcefn encode_teletex_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &TeletexString
) -> Result<Self::Ok, Self::Error>
fn encode_teletex_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &TeletexString ) -> Result<Self::Ok, Self::Error>
Encode a TeletexString
value.
sourcefn encode_bmp_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &BmpString
) -> Result<Self::Ok, Self::Error>
fn encode_bmp_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &BmpString ) -> Result<Self::Ok, Self::Error>
Encode a BmpString
value.
sourcefn encode_generalized_time(
&mut self,
tag: Tag,
value: &GeneralizedTime
) -> Result<Self::Ok, Self::Error>
fn encode_generalized_time( &mut self, tag: Tag, value: &GeneralizedTime ) -> Result<Self::Ok, Self::Error>
Encode a GeneralizedTime
value.
sourcefn encode_utc_time(
&mut self,
tag: Tag,
value: &UtcTime
) -> Result<Self::Ok, Self::Error>
fn encode_utc_time( &mut self, tag: Tag, value: &UtcTime ) -> Result<Self::Ok, Self::Error>
Encode a UtcTime
value.
sourcefn encode_explicit_prefix<V: Encode>(
&mut self,
tag: Tag,
value: &V
) -> Result<Self::Ok, Self::Error>
fn encode_explicit_prefix<V: Encode>( &mut self, tag: Tag, value: &V ) -> Result<Self::Ok, Self::Error>
Encode a explicitly tagged value.
sourcefn encode_sequence<C, F>(
&mut self,
tag: Tag,
encoder_scope: F
) -> Result<Self::Ok, Self::Error>
fn encode_sequence<C, F>( &mut self, tag: Tag, encoder_scope: F ) -> Result<Self::Ok, Self::Error>
Encode a SEQUENCE
value.
sourcefn encode_sequence_of<E: Encode>(
&mut self,
tag: Tag,
value: &[E],
constraints: Constraints<'_>
) -> Result<Self::Ok, Self::Error>
fn encode_sequence_of<E: Encode>( &mut self, tag: Tag, value: &[E], constraints: Constraints<'_> ) -> Result<Self::Ok, Self::Error>
Encode a SEQUENCE OF
value.
sourcefn encode_set<C, F>(
&mut self,
tag: Tag,
value: F
) -> Result<Self::Ok, Self::Error>
fn encode_set<C, F>( &mut self, tag: Tag, value: F ) -> Result<Self::Ok, Self::Error>
Encode a SET
value.
sourcefn encode_set_of<E: Encode>(
&mut self,
tag: Tag,
value: &SetOf<E>,
constraints: Constraints<'_>
) -> Result<Self::Ok, Self::Error>
fn encode_set_of<E: Encode>( &mut self, tag: Tag, value: &SetOf<E>, constraints: Constraints<'_> ) -> Result<Self::Ok, Self::Error>
Encode a SET OF
value.
sourcefn encode_some<E: Encode>(&mut self, value: &E) -> Result<Self::Ok, Self::Error>
fn encode_some<E: Encode>(&mut self, value: &E) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_some_with_tag_and_constraints<E: Encode>(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &E
) -> Result<Self::Ok, Self::Error>
fn encode_some_with_tag_and_constraints<E: Encode>( &mut self, tag: Tag, constraints: Constraints<'_>, value: &E ) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_none<E: Encode>(&mut self) -> Result<Self::Ok, Self::Error>
fn encode_none<E: Encode>(&mut self) -> Result<Self::Ok, Self::Error>
Encode the absent value of an optional field.
sourcefn encode_none_with_tag(&mut self, tag: Tag) -> Result<Self::Ok, Self::Error>
fn encode_none_with_tag(&mut self, tag: Tag) -> Result<Self::Ok, Self::Error>
Encode the absent value with tag
of an optional field.
sourcefn encode_choice<E: Encode + Choice>(
&mut self,
constraints: Constraints<'_>,
tag: Tag,
identifier: &'static str,
encode_fn: impl FnOnce(&mut Self) -> Result<Tag, Self::Error>
) -> Result<Self::Ok, Self::Error>
fn encode_choice<E: Encode + Choice>( &mut self, constraints: Constraints<'_>, tag: Tag, identifier: &'static str, encode_fn: impl FnOnce(&mut Self) -> Result<Tag, Self::Error> ) -> Result<Self::Ok, Self::Error>
Encode a CHOICE
value.
sourcefn encode_extension_addition<E: Encode>(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: E
) -> Result<Self::Ok, Self::Error>
fn encode_extension_addition<E: Encode>( &mut self, tag: Tag, constraints: Constraints<'_>, value: E ) -> Result<Self::Ok, Self::Error>
Encode a extension addition value.
sourcefn encode_extension_addition_group<E>(
&mut self,
value: Option<&E>
) -> Result<Self::Ok, Self::Error>where
E: Encode + Constructed,
fn encode_extension_addition_group<E>(
&mut self,
value: Option<&E>
) -> Result<Self::Ok, Self::Error>where
E: Encode + Constructed,
Encode a extension addition group value.
Provided Methods§
sourcefn encode_or_default<E: Encode + Default + PartialEq>(
&mut self,
value: &E
) -> Result<Self::Ok, Self::Error>
fn encode_or_default<E: Encode + Default + PartialEq>( &mut self, value: &E ) -> Result<Self::Ok, Self::Error>
Encode the value a field or skip if it matches the default..
sourcefn encode_with_tag_or_default<E: Encode + Default + PartialEq>(
&mut self,
tag: Tag,
value: &E
) -> Result<Self::Ok, Self::Error>
fn encode_with_tag_or_default<E: Encode + Default + PartialEq>( &mut self, tag: Tag, value: &E ) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_some_with_tag<E: Encode>(
&mut self,
tag: Tag,
value: &E
) -> Result<Self::Ok, Self::Error>
fn encode_some_with_tag<E: Encode>( &mut self, tag: Tag, value: &E ) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_default<E: Encode + PartialEq>(
&mut self,
value: &E,
default: impl FnOnce() -> E
) -> Result<Self::Ok, Self::Error>
fn encode_default<E: Encode + PartialEq>( &mut self, value: &E, default: impl FnOnce() -> E ) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_default_with_tag<E: Encode + PartialEq>(
&mut self,
tag: Tag,
value: &E,
default: impl FnOnce() -> E
) -> Result<Self::Ok, Self::Error>
fn encode_default_with_tag<E: Encode + PartialEq>( &mut self, tag: Tag, value: &E, default: impl FnOnce() -> E ) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_default_with_tag_and_constraints<E: Encode + PartialEq>(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &E,
default: impl FnOnce() -> E
) -> Result<Self::Ok, Self::Error>
fn encode_default_with_tag_and_constraints<E: Encode + PartialEq>( &mut self, tag: Tag, constraints: Constraints<'_>, value: &E, default: impl FnOnce() -> E ) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_default_with_constraints<E: Encode + PartialEq>(
&mut self,
constraints: Constraints<'_>,
value: &E,
default: impl FnOnce() -> E
) -> Result<Self::Ok, Self::Error>
fn encode_default_with_constraints<E: Encode + PartialEq>( &mut self, constraints: Constraints<'_>, value: &E, default: impl FnOnce() -> E ) -> Result<Self::Ok, Self::Error>
Encode the present constrained value of an optional field.