117 lines
3.5 KiB
Rust
117 lines
3.5 KiB
Rust
mod common;
|
|
use common::hexstr;
|
|
use emsha::{Hash, Result, hmac, sha256};
|
|
|
|
#[test]
|
|
fn test_hmac_00() -> Result<()> {
|
|
let k: [u8; 20] = [
|
|
0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
|
|
0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
|
|
];
|
|
let input = b"Hi There";
|
|
let output = b"b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7";
|
|
let mut digest: [u8; sha256::SIZE] = [0; sha256::SIZE];
|
|
let mut hdigest: [u8; 64] = [0; 64];
|
|
|
|
let mut h = hmac::HMAC_SHA256::new(&k)?;
|
|
h.update(input)?;
|
|
h.finalize(&mut digest)?;
|
|
hexstr(&digest, &mut hdigest);
|
|
|
|
assert_eq!(&hdigest, output);
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn test_hmac_01() -> Result<()> {
|
|
let k: [u8; 4] = [0x4a, 0x65, 0x66, 0x65];
|
|
let input = b"what do ya want for nothing?";
|
|
let output = b"5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843";
|
|
let mut digest: [u8; sha256::SIZE] = [0; sha256::SIZE];
|
|
let mut hdigest: [u8; 64] = [0; 64];
|
|
|
|
let mut h = hmac::HMAC_SHA256::new(&k)?;
|
|
h.update(input)?;
|
|
h.finalize(&mut digest)?;
|
|
hexstr(&digest, &mut hdigest);
|
|
|
|
assert_eq!(&hdigest, output);
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn test_hmac_02() -> Result<()> {
|
|
let k: [u8; 20] = [
|
|
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
|
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
|
];
|
|
let input = &[0xddu8; 50];
|
|
let output = b"773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe";
|
|
let mut digest: [u8; sha256::SIZE] = [0; sha256::SIZE];
|
|
let mut hdigest: [u8; 64] = [0; 64];
|
|
|
|
let mut h = hmac::HMAC_SHA256::new(&k)?;
|
|
h.update(input)?;
|
|
h.finalize(&mut digest)?;
|
|
hexstr(&digest, &mut hdigest);
|
|
|
|
assert_eq!(&hdigest, output);
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn test_hmac_03() -> Result<()> {
|
|
let k: [u8; 25] = [
|
|
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
|
|
0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
|
|
0x15, 0x16, 0x17, 0x18, 0x19,
|
|
];
|
|
let input = &[0xcdu8; 50];
|
|
let output = b"82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b";
|
|
let mut digest: [u8; sha256::SIZE] = [0; sha256::SIZE];
|
|
let mut hdigest: [u8; 64] = [0; 64];
|
|
|
|
let mut h = hmac::HMAC_SHA256::new(&k)?;
|
|
h.update(input)?;
|
|
h.finalize(&mut digest)?;
|
|
hexstr(&digest, &mut hdigest);
|
|
|
|
assert_eq!(&hdigest, output);
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn test_hmac_04() -> Result<()> {
|
|
let k = [0xaau8; 131];
|
|
let input =
|
|
b"Test Using Larger Than Block-Size Key - Hash Key First";
|
|
let output = b"60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54";
|
|
let mut digest: [u8; sha256::SIZE] = [0; sha256::SIZE];
|
|
let mut hdigest: [u8; 64] = [0; 64];
|
|
|
|
let mut h = hmac::HMAC_SHA256::new(&k)?;
|
|
h.update(input)?;
|
|
h.finalize(&mut digest)?;
|
|
hexstr(&digest, &mut hdigest);
|
|
|
|
assert_eq!(&hdigest, output);
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn test_hmac_05() -> Result<()> {
|
|
let k = [0xaau8; 131];
|
|
let input = b"This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm.";
|
|
let output = b"9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2";
|
|
let mut digest: [u8; sha256::SIZE] = [0; sha256::SIZE];
|
|
let mut hdigest: [u8; 64] = [0; 64];
|
|
|
|
let mut h = hmac::HMAC_SHA256::new(&k)?;
|
|
h.update(input)?;
|
|
h.finalize(&mut digest)?;
|
|
hexstr(&digest, &mut hdigest);
|
|
|
|
assert_eq!(&hdigest, output);
|
|
Ok(())
|
|
}
|