rigel 0.2.2

Minimal HMAC-SHA512 implementation optimized for embedded devices
Documentation
# rigel
![Build Status](https://travis-ci.org/brycx/rigel.svg?branch=master) [![codecov](https://codecov.io/gh/brycx/rigel/branch/master/graph/badge.svg)](https://codecov.io/gh/brycx/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](https://brycx.github.io/2018/08/06/hmac-and-precomputation-optimization.html).


### 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:***
```rust
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:***
```rust
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
```rust
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.