# 🔐 keybob
[![travis](https://travis-ci.org/spacekookie/keybob.svg?branch=master)](https://travis-ci.org/spacekookie/keybob)
[![coveralls](https://coveralls.io/repos/github/spacekookie/keybob/badge.svg?branch=master&service=github)](https://coveralls.io/github/spacekookie/keybob?branch=master)
[![docs.rs](https://docs.rs/keybob/badge.svg)](https://docs.rs/keybob/)
[![crates.io](https://img.shields.io/crates/v/keybob.svg)](https://crates.io/crates/keybob)
[![downloads](https://img.shields.io/crates/d/keybob.svg)](https://crates.io/crates/keybob)
A cryptographic key utility crate.
## Features
- Create `Aes128` and `Aes256` keys from scratch
- Expand user passphrase via `pbkdf2` and `Blake2b`
- Custom `serde` Serialiser/ Deserialiser
- No heap-allocated structures required (exception: Serialisation currently uses `Vec<_>`)
```rust
extern crate keybob;
use keybob::{Key, KeyType};
/* Let's assume you want to use miscreant */
extern crate miscreant;
use miscreant::aead::{Aes256Siv, Algorithm};
fn main() {
let key = Key::new(KeyType::Aes256);
let aes = Aes256Siv::new(key.as_slice());
/* ... etc ... */
}
```