use crate::buffer::BufferError;
use crate::digest::Digest;
use crate::kdf::Kdf;
#[test]
fn de_none() {
let buf = [0x00, 0x00, 0x00, 0x00];
assert_eq!(Kdf::get_from_buffer(&mut &buf[..]).unwrap(), Kdf::None);
}
#[test]
fn de_pbkdf2() {
let buf = [
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 1, 2, 3, ];
assert_eq!(
Kdf::get_from_buffer(&mut &buf[..]).unwrap(),
Kdf::Pbkdf2 {
digest: Digest::Sha1,
iterations: 65536,
salt: vec![1, 2, 3]
}
);
}
#[test]
fn de_eof() {
let buf = [0x00, 0x00, 0x00];
let err = Kdf::get_from_buffer(&mut &buf[..]).unwrap_err();
assert!(matches!(err, BufferError::UnexpectedEof));
}
#[test]
fn de_invalid() {
let buf = [0x00, 0x00, 0x00, 0x02];
let err = Kdf::get_from_buffer(&mut &buf[..]).unwrap_err();
assert_eq!(err.to_string(), "no Kdf at 2");
}
#[test]
fn ser_none() {
let mut buf = vec![];
Kdf::None.put_into_buffer(&mut buf).unwrap();
assert_eq!(buf, [0x00, 0x00, 0x00, 0x00,]);
}
#[test]
fn ser_pbkdf2() {
let mut buf = vec![];
Kdf::Pbkdf2 {
digest: Digest::Sha1,
iterations: 65536,
salt: vec![1, 2, 3],
}
.put_into_buffer(&mut buf)
.unwrap();
assert_eq!(
buf,
[
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x000, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 1, 2, 3 ]
);
}
#[test]
fn ser_write_zero() {
let mut buf = [0; 3];
let err = Kdf::None.put_into_buffer(&mut &mut buf[..]).unwrap_err();
assert!(matches!(err, BufferError::WriteZero));
}