#serialization #crypto #codec #no-std

no-std simple-tlv

按照ISO 7816-4描述的简易-TLV的编码和解码,不进行内存分配

1 个不稳定版本

0.1.0 2021年2月19日

#2219 in 编码

Apache-2.0 OR MIT

63KB
1K SLoC

simple-tlv

按照ISO 7816-4描述的简易-TLV的编码和解码,不进行内存分配。

遵循der中采用的方法。

许可证

simple-tlv许可证为Apache License, Version 2.0MIT License,由您选择。
除非您明确说明,否则根据Apache-2.0许可证定义的任何有意提交以包含在作品中的贡献,都应如上双许可,不附加任何额外条款或条件。


lib.rs:

simple-tlv

实现ISO 7816-4:2005中的SIMPLE-TLV序列化格式。

5.2.1 SIMPLE-TLV数据对象

每个SIMPLE-TLV数据对象应包含两个或三个连续字段:一个必需的标签字段,一个必需的长度字段和一个条件值字段。记录(见7.3.1)可以是SIMPLE-TLV数据对象。

  • 标签字段由一个字节组成,表示从1到254的标签号。'00'和'FF'值对标签字段无效。如果记录是SIMPLE-TLV数据对象,则标签可以用作记录标识符。
  • 长度字段由一个或三个连续字节组成。
    • 如果第一个字节未设置为'FF',则长度字段由一个字节组成,表示从0到254的数字,表示为N。
    • 如果第一个字节设置为'FF',则长度字段继续在随后的两个字节中,任何值编码的数字从0到65,535,表示为N。
  • 如果N为零,则没有值字段,即数据对象为空。否则(N>0),值字段由N个连续字节组成。

致谢

这个库是RustCrypto/utils/der的一个混搭,着眼于

  • 不需要对ASN.1的引用(例如,因为SIMPLE-TLV没有任何这样的引用)
  • 不需要分配或memmoves(如ring, derp, x509:der)
  • 在SIMPLE-TLV的字节切片值之上添加一个类型层

der中吸取的核心思想是让Encodable需要一个encoded_length方法。通过在第一次遍历中递归调用此方法,可以避免其他方法中所需的分配。

依赖关系

~0–375KB