A library for reading and writing ASN.1 data.
Example
To serialize ASN.1 data, you can use construct_der
.
extern crate yasna;
fn main() {
let der = yasna::construct_der(|writer| {
writer.write_sequence(|writer| {
writer.next().write_i64(10);
writer.next().write_bool(true);
})
});
println!("(10, true) = {:?}", der);
}
To deserialize ASN.1 data, you can use parse_ber
or parse_der
.
extern crate yasna;
fn main() {
let asn = yasna::parse_der(&[48, 6, 2, 1, 10, 1, 1, 255], |reader| {
reader.read_sequence(|reader| {
let i = try!(reader.next().read_i64());
let b = try!(reader.next().read_bool());
return Ok((i, b));
})
}).unwrap();
println!("{:?} = [48, 6, 2, 1, 10, 1, 1, 255]", asn);
}