use seckey::Bytes;
use super::StreamCipher;
#[derive(Debug, Clone)]
pub struct HC256 {
key: Bytes
}
impl StreamCipher for HC256 {
fn new(key: &[u8]) -> Self where Self: Sized {
assert_eq!(key.len(), Self::KEY_LENGTH);
HC256 { key: Bytes::new(key) }
}
const KEY_LENGTH: usize = 32;
const NONCE_LENGTH: usize = 32;
fn process(&self, nonce: &[u8], data: &[u8]) -> Vec<u8> {
assert_eq!(nonce.len(), Self::NONCE_LENGTH);
let mut output = vec![0; data.len()];
::hc256::HC256::new(&self.key, nonce)
.process(data, &mut output);
output
}
}