3 个版本 (重大变更)

使用旧的 Rust 2015

0.3.0 2018 年 5 月 18 日
0.2.0 2016 年 8 月 18 日
0.1.0 2016 年 6 月 16 日

#10 in #asn1-der

MIT/Apache

51KB
1K SLoC

构建状态 eagre-asn1

eagre-asn1 是一个 Rust 的 asn1 库。

它使用了宏来简化接口的使用。

目前仅支持 DER 和非常少量的 xer。

文档

文档可以在 https://rahix.github.io/eagre-asn1/ 找到

示例

假设你有一个以下 asn1 结构

User ::= SEQUENCE {
	username         UTF8String,
	passwordHash     [CONTEXT 12] IMPLICIT OctetString,
	age              [APPLICATION 1] EXPLICIT Integer,
	admin            Boolean
}

在 Rust 中,它看起来像这样

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,
}

序列化就像这样简单

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);

实现类型

  • Any types::Any
  • BitString types::BitString
  • BMPString types::BMPString
  • Boolean bool
  • CharacterString types::CharacterString
  • Choice enum
  • Date types::Date
  • DateTime types::DateTime
  • Duration std::time::Duration
  • EmbeddedPDV types::EmbeddedPDV
  • Enumeration enum
  • External
  • GeneralString types::GeneralString
  • GraphicString types::GraphicString
  • IA5String types::IA5String
  • InstanceOf
  • Integer i32
  • IRI
  • Null types::Null
  • NumericString types::NumericString
  • ObjectClassField
  • ObjectIdentifier
  • OctetString Vec<u8>
  • 可打印字符串 types::PrintableString
  • 实数 f32
  • 相对IRI
  • 相对OID
  • 序列 struct
  • 序列 Vec<T>
  • 集合 struct
  • 集合 types::SetOf
  • T61String types::T61String
  • 时间 types::Time
  • 一天中的时间 types::TimeOfDay
  • 通用字符串 types::UniversalString
  • UTF8String String&str
  • 可视文本字符串 types::VideotexString
  • 可见字符串 types::VisibleString

许可证

eagre-asn1 使用以下任一许可证

任选其一。

依赖项

约165KB