Expand description
§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 Implementation
- Asn1 Types
- UNFINISHED XER Implementation
Macros§
- Macro to create choice implementation for enum
- Macro to create enumeration implementation for enum
- Macro to create sequence implementation for a struct
- Deprecated!