Files
emsha-rs/tests/hmac.rs

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(())
}