wolfcrypt-ring-testing 0.2.0

Tests and benchmarks for wolfcrypt-ring-compat
use wolfcrypt_ring_compat::aead::quic::{HeaderProtectionKey, AES_128, AES_256, CHACHA20};
use wolfcrypt_ring_compat::{hkdf, test};

#[test]
fn test_key_type_header_protection_key() {
    let key_bytes = test::from_dirty_hex(r"d480429666d48b400633921c5407d1d1");
    let info = test::from_dirty_hex(r"f0f1f2f3f4f5f6f7f8f9");
    let info_wrap = [info.as_slice()];
    let sample = test::from_dirty_hex(r"b0b1b2b3b4b5b6b7b8b9babbbcbdbebf");

    let prk = hkdf::Prk::new_less_safe(hkdf::HKDF_SHA256, &key_bytes);
    let okm = prk.expand(&info_wrap, &AES_128).unwrap();
    let hpk = HeaderProtectionKey::from(okm);
    assert_eq!(&AES_128, hpk.algorithm());
    assert_eq!(16, AES_128.key_len());
    assert_eq!(16, AES_128.sample_len());
    assert_eq!(32, AES_256.key_len());
    assert_eq!(16, AES_256.sample_len());
    assert_eq!(32, CHACHA20.key_len());
    assert_eq!(16, CHACHA20.sample_len());
    let mask = hpk.new_mask(&sample).unwrap();

    let ring_prk = ring::hkdf::Prk::new_less_safe(ring::hkdf::HKDF_SHA256, &key_bytes);
    let ring_okm = ring_prk
        .expand(&info_wrap, &ring::aead::quic::AES_128)
        .unwrap();
    let ring_hpk = ring::aead::quic::HeaderProtectionKey::from(ring_okm);
    let ring_mask = ring_hpk.new_mask(&sample).unwrap();
    assert_eq!(mask, ring_mask);
}