Uses old Rust 2015
0.2.2 |
|
---|---|
0.2.1 |
|
0.2.0 |
|
0.1.1 |
|
0.0.6 |
|
#24 in #sha-512
13KB
214 lines
rigel
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.
Dependencies
~0.6–1MB
~20K SLoC