Struct bsn1::Der [−][src]
pub struct Der { /* fields omitted */ }Expand description
Der owns DerRef and represents DER.
Implementations
Creates a new instance from id and contents .
Warnings
ASN.1 does not allow some universal identifier for DER, however, this function accepts
such an identifier.
For example, ‘Octet String’ must be primitive in DER, but this function will construct a
new instance even if id represenets constructed ‘Octet String.’
Examples
use bsn1::{Der, IdRef};
let id = IdRef::octet_string();
let contents: &[u8] = &[10, 20, 30];
let der = Der::new(id, contents);
assert_eq!(id, der.id());
assert_eq!(contents, der.contents());Creates a new instance from id and contents .
Warnings
ASN.1 does not allow some universal identifier for DER, however, this function accepts
such an identifier.
For example, ‘Octet String’ must be primitive in DER, but this function will construct a
new instance even if id represenets constructed ‘Octet String.’
Examples
use bsn1::{Der, IdRef};
let id = IdRef::sequence();
// Build instance using function 'from_id_iterator()'.
let contents: &[Der] = &[Der::utf8_string("foo"), Der::integer(29)];
let der = Der::from_id_iterator(id, contents.iter());
// Build instance using function 'new()'.
let contents: Vec<u8> = contents.iter()
.map(|i| Vec::from(i.as_ref() as &[u8]))
.flatten().collect();
let expected = Der::new(id, &contents);
assert_eq!(expected, der);Returns a new instance representing boolean.
Examples
use bsn1::{contents, Der, IdRef};
let val = true;
let der = Der::boolean(val);
assert_eq!(IdRef::boolean(), der.id());
assert_eq!(val, contents::to_bool_der(der.contents()).unwrap());Returns a new instance representing integer.
Type T should be the builtin primitive integer types (e.g., u8, u32, isize, i128, …)
Examples
use bsn1::{contents, Der, IdRef};
let val = 39;
let der = Der::integer(val);
assert_eq!(IdRef::integer(), der.id());
assert_eq!(val, contents::to_integer(der.contents()).unwrap());Returns a new instance representing utf8_string.
Examples
use bsn1::{Der, IdRef};
let val = &"foo";
let der = Der::utf8_string(val);
assert_eq!(IdRef::utf8_string(), der.id());
assert_eq!(val.as_bytes(), der.contents());Methods from Deref<Target = DerRef>
Returns a reference to IdRef of self .
Examples
use bsn1::{Der, IdRef};
let id = IdRef::octet_string();
let contents = &[1, 2, 3];
// 'DER' implements 'Deref<Target=DerRef>'
let der = Der::new(id, contents);
assert_eq!(id, der.id());Returns Length to represent the length of contents.
Note that DER does not allow indefinite Length.
The return value must be Length::Definite .
Warnings
Length stands for the length octets in DER.
The total bytes is greater than the value.
Examples
use bsn1::{Der, IdRef, Length};
let id = IdRef::octet_string();
let contents = &[1, 2, 3];
// 'DER' implements 'Deref<Target=DerRef>'
let der = Der::new(id, contents);
assert_eq!(Length::Definite(contents.len()), der.length());Returns a reference to the contents octets of self .
Examples
use bsn1::{Der, IdRef};
let id = IdRef::octet_string();
let contents = &[1, 2, 3];
// 'DER' implements 'Deref<Target=DerRef>'
let der = Der::new(id, contents);
assert_eq!(contents, der.contents());Trait Implementations
Parses bytes starting with DER octets and builds a new instance.
This function ignores extra octet(s) at the end of bytes if any.
Warnings
ASN.1 does not allow some universal identifier for DER, however, this function accepts
such an identifier.
For example, ‘Octet String’ must be primitive in DER, but this function returns Ok for
constructed Octet String DER.
Auto Trait Implementations
impl RefUnwindSafe for Der
impl UnwindSafe for Der
Blanket Implementations
Mutably borrows from an owned value. Read more