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!