Build Status

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.

Documentation

Documentation can be found at https://rahix.github.io/eagre-asn1/

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:

```rust struct User { pub username: String, pub password_hash: Vec, pub age: i32, pub admin: bool, }

dersequence!{ User: username: NOTAG TYPE String, passwordhash: IMPLICIT TAG CONTEXT 12; TYPE Vec, age: EXPLICIT TAG APPLICATION 1; TYPE i32, admin: NOTAG TYPE bool, } ``` And serializing is as easy as:

```rust use eagre_asn1::der::DER;

let someuser = User { ... }; let encoded = someuser.derbytes().unwrap(); // Send to far away planet let decoded = User::derfrombytes(encoded).unwrap(); asserteq!(some_user, decoded); ```

Implemented Types

License

eagre-asn1 is licensed under either of

at your option.