use hpke_crypto::{Crypto, HpkeKemId};
#[test_case::test_matrix(
[
hpke_crypto::backend::HpkeCryptoAwsLc::new().unwrap(),
hpke_crypto::backend::HpkeCryptoGraviola::new().unwrap(),
],
[
hpke_crypto::backend::HpkeCryptoAwsLc::new().unwrap(),
hpke_crypto::backend::HpkeCryptoGraviola::new().unwrap(),
],
[
HpkeKemId::DHKEM_X25519_HKDF_SHA256,
HpkeKemId::DHKEM_P256_HKDF_SHA256,
HpkeKemId::DHKEM_P384_HKDF_SHA384,
]
)]
#[test_case::test_matrix(
[
hpke_crypto::backend::HpkeCryptoAwsLc::new().unwrap(),
],
[
hpke_crypto::backend::HpkeCryptoAwsLc::new().unwrap(),
],
[
HpkeKemId::DHKEM_P521_HKDF_SHA512,
]
)]
fn test_dh(mut backend_1: impl Crypto, mut backend_2: impl Crypto, alg: HpkeKemId) {
let key_pair_1 = backend_1
.kem_generate_key_pair(alg)
.unwrap();
let key_pair_2 = backend_2
.kem_generate_key_pair(alg)
.unwrap();
let dh1 = backend_1
.dh(alg, key_pair_1.sk(), key_pair_2.pk())
.unwrap();
let dh2 = backend_2
.dh(alg, key_pair_2.sk(), key_pair_1.pk())
.unwrap();
assert_eq!(dh1, dh2);
}