Crate eagre_asn1 [−] [src]
eagre-asn1
eagre-asn1 is an asn1 library for Rust.
It makes heavy use of macros to make the interface easy to use.
Currently only DER and a very small bit of XER is supported.
Example
Say you have the following asn1 structure:
User ::= SEQUENCE {
username UTF8String,
passwordHash [CONTEXT 12] IMPLICIT OctetString,
age [APPLICATION 1] EXPLICIT Integer,
admin Boolean
}
In Rust it would look like this:
struct User { pub username: String, pub password_hash: Vec<u8>, pub age: i32, pub admin: bool, } der_sequence!{ User: username: NOTAG TYPE String, password_hash: IMPLICIT TAG CONTEXT 12; TYPE Vec<u8>, age: EXPLICIT TAG APPLICATION 1; TYPE i32, admin: NOTAG TYPE bool, }
And serializing is as easy as:
use eagre_asn1::der::DER; let some_user = User { ... }; let encoded = some_user.der_bytes().unwrap(); Send to far away planet let decoded = User::der_from_bytes(encoded).unwrap(); assert_eq!(some_user, decoded);
Modules
der |
DER Implementation |
types |
Asn1 Types |
xer |
UNFINISHED XER Implementation |
Macros
der_choice |
Macro to create choice implementation for enum |
der_enumerated |
Macro to create enumeration implementation for enum |
der_sequence |
Macro to create sequence implementation for a struct |
implement_xer |
Deprecated! |