#hex #base-16 #constant-time #portable #rfc #pure

no-std base16ct

Pure Rust implementation of Base16 a.k.a hexadecimal (RFC 4648) which avoids any usages of data-dependent branches/LUTs and thereby provides portable "best effort" constant-time operation and embedded-friendly no_std support

3 unstable releases

0.2.0 Feb 26, 2023
0.1.1 Jan 15, 2022
0.1.0 Jan 13, 2022
0.0.0 Jan 11, 2022

#2169 in Encoding

Download history 570127/week @ 2024-07-23 584334/week @ 2024-07-30 570977/week @ 2024-08-06 584514/week @ 2024-08-13 580651/week @ 2024-08-20 562900/week @ 2024-08-27 621264/week @ 2024-09-03 591208/week @ 2024-09-10 550480/week @ 2024-09-17 596484/week @ 2024-09-24 620431/week @ 2024-10-01 624792/week @ 2024-10-08 675740/week @ 2024-10-15 680837/week @ 2024-10-22 630169/week @ 2024-10-29 633295/week @ 2024-11-05

2,729,662 downloads per month
Used in 3,446 crates (70 directly)

Apache-2.0 OR MIT

17KB
224 lines

RustCrypto: Constant-Time Base16 (hexadecimal)

crate Docs Build Status Apache2/MIT licensed Rust Version Project Chat

Pure Rust implementation of Base16 (RFC 4648).

Implements lower and upper case Base16 variants without data-dependent branches or lookup tables, thereby providing portable "best effort" constant-time operation.

Supports no_std environments and avoids heap allocations in the core API (but also provides optional alloc support for convenience).

Documentation

Minimum Supported Rust Version

This crate requires Rust 1.60 at a minimum.

We may change the MSRV in the future, but it will be accompanied by a minor version bump.

License

Licensed under either of:

at your option.

Contribution

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.

No runtime deps

Features