[−][src]Trait rdp::nla::asn1::ASN1
This trait is a wrapper around the yasna library to better declare ASN1 type
Required methods
fn write_asn1(&self, writer: DERWriter) -> RdpResult<()>
write type into a DERWriter stream
fn read_asn1(&mut self, reader: BERReader) -> RdpResult<()>
Read the type from an ASN1 BER reader
fn visit(&self) -> ASN1Type
To retrieve original type We use visitor pattern like in Message
Implementations on Foreign Types
impl ASN1 for bool
[src]
ASN1 for boolean
fn write_asn1(&self, writer: DERWriter) -> RdpResult<()>
[src]
Write an ASN1 boolean Node using a DERWriter
Example
let s = true; assert_eq!(to_der(&s), [1, 1, 255]);
fn read_asn1(&mut self, reader: BERReader) -> RdpResult<()>
[src]
Read an ASN1 Boolean using a BerReader
Example
let mut s = false; from_der(&mut s, &[1, 1, 255]).unwrap(); assert_eq!(s, true);
fn visit(&self) -> ASN1Type
[src]
Cast an ASN1 node into boolean
Example
let mut s = false; from_der(&mut s, &[1, 1, 255]).unwrap(); assert_eq!(cast!(ASN1Type::Bool, s).unwrap(), true);
Implementors
impl ASN1 for SequenceOf
[src]
fn write_asn1(&self, writer: DERWriter) -> RdpResult<()>
[src]
Write an ASN1 sequenceof model using a DERWriter
Example
let s = sequence_of![ 8 as Integer, 9 as Integer ]; assert_eq!(to_der(&s), [48, 6, 2, 1, 8, 2, 1, 9]);
fn read_asn1(&mut self, reader: BERReader) -> RdpResult<()>
[src]
Read an ASN1 sequenceof model using a BerReader
Example
let mut s = SequenceOf::reader(|| Box::new(0 as Integer)); from_der(&mut s, &[48, 6, 2, 1, 8, 2, 1, 9]).unwrap(); assert_eq!(s.inner.len(), 2);
fn visit(&self) -> ASN1Type
[src]
Use to cast an ASN1 node into SequenceOf
Example
let mut s = SequenceOf::reader(|| Box::new(0 as Integer)); from_der(&mut s, &[48, 6, 2, 1, 8, 2, 1, 9]).unwrap(); assert_eq!(cast!(ASN1Type::SequenceOf, s).unwrap().inner.len(), 2);
impl ASN1 for Enumerate
[src]
fn write_asn1(&self, writer: DERWriter) -> RdpResult<()>
[src]
Write an ASN1 Enumerate Node using a DERWriter
Example
let s = 4 as Enumerate; assert_eq!(to_der(&s), [10, 1, 4]);
fn read_asn1(&mut self, reader: BERReader) -> RdpResult<()>
[src]
Read an ASN1 Enumerate using a BerReader
Example
let mut s = 0 as Enumerate; from_der(&mut s, &[10, 1, 4]).unwrap(); assert_eq!(s, 4);
fn visit(&self) -> ASN1Type
[src]
Allow to cast an ASN1 node into enumerate using a BerReader
Example
let mut s = 0 as Enumerate; from_der(&mut s, &[10, 1, 4]).unwrap(); assert_eq!(cast!(ASN1Type::Enumerate, s).unwrap(), 4);
impl ASN1 for Integer
[src]
fn write_asn1(&self, writer: DERWriter) -> RdpResult<()>
[src]
Write an ASN1 Integer Node using a DERWriter
Example
let s = 8 as Integer; assert_eq!(to_der(&s), [2, 1, 8]);
fn read_asn1(&mut self, reader: BERReader) -> RdpResult<()>
[src]
Read an ASN1 Integer using a BerReader
Example
let mut s = 0 as Integer; from_der(&mut s, &[2, 1, 8]).unwrap(); assert_eq!(s, 8);
fn visit(&self) -> ASN1Type
[src]
Allow to cast a ASN1 node into Interger
Example
let mut s = 0 as Integer; from_der(&mut s, &[2, 1, 8]).unwrap(); assert_eq!(cast!(ASN1Type::U32, s).unwrap(), 8);
impl ASN1 for OctetString
[src]
fn write_asn1(&self, writer: DERWriter) -> RdpResult<()>
[src]
Write an ASN1 OctetString model using a DERWriter
Example
let s = vec![0, 1, 2, 3]; assert_eq!(to_der(&s), [4, 4, 0, 1, 2, 3]);
fn read_asn1(&mut self, reader: BERReader) -> RdpResult<()>
[src]
Read an ASN1 OctetString model using a BerReader
Example
let mut s = OctetString::new(); from_der(&mut s, &[4, 4, 0, 1, 2, 3]).unwrap(); assert_eq!(s.len(), 4);
fn visit(&self) -> ASN1Type
[src]
Use to cast an ASN1 node into SequenceOf
Example
let mut s = OctetString::new(); from_der(&mut s, &[4, 4, 0, 1, 2, 3]).unwrap(); assert_eq!(cast!(ASN1Type::OctetString, s).unwrap().len(), 4);
impl ASN1 for Sequence
[src]
fn write_asn1(&self, writer: DERWriter) -> RdpResult<()>
[src]
Write an ASN1 sequence Node using a DERWriter
Example
let s = sequence![ "field1" => 1 as Integer, "field2" => false ]; assert_eq!(to_der(&s), [48, 6, 2, 1, 1, 1, 1, 0]);
fn read_asn1(&mut self, reader: BERReader) -> RdpResult<()>
[src]
Read an ASN1 sequence of node using a BerReader
Example
let mut s = sequence![ "field1" => 1 as Integer, "field2" => true ]; from_der(&mut s, &[48, 6, 2, 1, 1, 1, 1, 0]).unwrap(); assert_eq!(cast!(ASN1Type::Bool, s["field2"]).unwrap(), false);
fn visit(&self) -> ASN1Type
[src]
Allow to cast an ASN1 node into sequence
Example
let mut s = sequence![ "field1" => 1 as Integer, "field2" => true ]; from_der(&mut s, &[48, 6, 2, 1, 1, 1, 1, 0]).unwrap(); assert_eq!(cast!(ASN1Type::Bool, cast!(ASN1Type::Sequence, s).unwrap()["field2"]).unwrap(), false);
impl<T: ASN1> ASN1 for ExplicitTag<T>
[src]
fn write_asn1(&self, writer: DERWriter) -> RdpResult<()>
[src]
Write an ASN1 Node with an explicit tag using a DERWriter
Example
let s = ExplicitTag::new(Tag::context(0), vec![0, 1, 2, 3]); assert_eq!(to_der(&s), [160, 6, 4, 4, 0, 1, 2, 3]);
fn read_asn1(&mut self, reader: BERReader) -> RdpResult<()>
[src]
Read an ASN1 Explicit tag using a BerReader
Example
let mut s = ExplicitTag::new(Tag::context(0), OctetString::new()); from_der(&mut s, &[160, 6, 4, 4, 0, 1, 2, 3]).unwrap(); assert_eq!(s.inner().len(), 4);
fn visit(&self) -> ASN1Type
[src]
Allow to cast the ASN1 inner type
Example
let mut s = ExplicitTag::new(Tag::context(0), OctetString::new()); from_der(&mut s, &[160, 6, 4, 4, 0, 1, 2, 3]).unwrap(); assert_eq!(cast!(ASN1Type::OctetString, s).unwrap(), &[0, 1, 2, 3]);
impl<T: ASN1> ASN1 for ImplicitTag<T>
[src]
fn write_asn1(&self, writer: DERWriter) -> RdpResult<()>
[src]
Write an ASN1 Node with an implicit tag using a DERWriter
Example
let s = ImplicitTag::new(Tag::context(0), vec![0, 1, 2, 3]); assert_eq!(to_der(&s), [128, 4, 0, 1, 2, 3]);
fn read_asn1(&mut self, reader: BERReader) -> RdpResult<()>
[src]
Read an ASN1 Implicit tag for a node using a BerReader
Example
let mut s = ImplicitTag::new(Tag::context(0), OctetString::new()); from_der(&mut s, &[128, 4, 0, 1, 2, 3]).unwrap(); assert_eq!(s.inner.len(), 4);
fn visit(&self) -> ASN1Type
[src]
Allow to cast the inner node
Example
let mut s = ImplicitTag::new(Tag::context(0), OctetString::new()); from_der(&mut s, &[128, 4, 0, 1, 2, 3]).unwrap(); assert_eq!(cast!(ASN1Type::OctetString, s).unwrap(), &[0, 1, 2, 3]);