rigel

Crates.iorigel
lib.rsrigel
version0.2.2
sourcesrc
created_at2018-08-03 20:57:50.422982
updated_at2018-12-24 12:58:03.437104
descriptionMinimal HMAC-SHA512 implementation optimized for embedded devices
homepage
repositoryhttps://github.com/brycx/rigel
max_upload_size
id77408
size14,925
Johannes (brycx)

documentation

https://docs.rs/rigel

README

rigel

Build Status codecov

About

rigel is a minimal implementation of HMAC with SHA512, which is optimized for use with embedded devices. rigel minimizes the amount of allocations made, while still upholding performance speed.

You can read more about these optimizations here.

Rust nightly

rigel requires Rust nightly.

Security

This library has at no point received any formal cryptographic/security audit. It should be used at own risk.

Example

One-shot API:

extern crate rigel;

let mac = rigel::hmac_sha512("Secret key".as_bytes(), "Message".as_bytes());

assert!(rigel::verify(&mac, "Secret key".as_bytes(), "Message".as_bytes()));

Streaming API:

extern crate rigel;

let mut mac = rigel::init("Secret key".as_bytes());
mac.update("Message".as_bytes());
let res = mac.finalize();
assert!(mac.verify(&res, "Secret key".as_bytes(), "Message".as_bytes()));

let mut mac_out = [0u8; 64];
mac.reset();
mac.update("Other message".as_bytes());
mac.finalize_with_dst(&mut mac_out);

Performance

test RustCrypto     ... bench:       2,185 ns/iter (+/- 241)
test orion          ... bench:       2,350 ns/iter (+/- 60)
test rigel_one_shot ... bench:       2,070 ns/iter (+/- 43)
test rigel_stream   ... bench:       2,122 ns/iter (+/- 35)
test ring           ... bench:       3,357 ns/iter (+/- 91)

This was benchmarked on a MacBook Air 1,6 GHz Intel Core i5, 4GB.

License

rigel is licensed under the MIT license. See the LICENSE file for more information.

Commit count: 50

cargo fmt