#codec #serialization #crypto #no-std #define

no-std flexiber

Encoding and decoding of BER-TLV as described in ISO 7816-4, without allocations

2 releases

0.1.1 Nov 22, 2023
0.1.0 Nov 20, 2021

#517 in Encoding

Download history 57/week @ 2023-12-05 84/week @ 2023-12-12 101/week @ 2023-12-19 59/week @ 2023-12-26 24/week @ 2024-01-02 41/week @ 2024-01-09 34/week @ 2024-01-16 34/week @ 2024-01-23 60/week @ 2024-01-30 42/week @ 2024-02-06 103/week @ 2024-02-13 109/week @ 2024-02-20 154/week @ 2024-02-27 83/week @ 2024-03-05 96/week @ 2024-03-12 148/week @ 2024-03-19

497 downloads per month
Used in 5 crates (3 directly)

Apache-2.0 OR MIT

76KB
1.5K SLoC

flexiber

Encoding and decoding of BER-TLV as described in ISO 7816-4, without allocations.

Follows the approach taken in der, and then in simple-tlv.

License

flexiber is licensed under either of Apache License, Version 2.0 or MIT License at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


lib.rs:

flexiber

Implementation of the BER-TLV serialization format from ISO 7816-4:2005.

ITU-T X.690 (08/2015) defines the BER, CER and DER encoding rules for ASN.1

The exact same document is ISO/IET 8825-1, which is freely available, inconveniently packed as a single PDF in a ZIP file :)

Credits

This library is a remix of RustCrypto/utils/der.

The core idea taken from der is to have Encodable require an encoded_length method. By calling this recursively in a first pass, allocations required in other approaches are avoided.

Dependencies

~110–510KB
~11K SLoC