#[cfg(test)]
mod tests {
use crate::kpp::{KcapiKPP, ECC_CURVE_NIST_P256};
use crate::ACCESS_HEURISTIC;
#[test]
#[ignore]
fn test_ecdh_shared_secret() {
let (alice, alice_pub) = crate::kpp::ecdh_ephemeral_keygen(ECC_CURVE_NIST_P256)
.expect("Failed to generate Alice's ECDH key pair");
let (bob, bob_pub) = crate::kpp::ecdh_ephemeral_keygen(ECC_CURVE_NIST_P256)
.expect("Failed to generate Bob's ECDH key pair");
let alice_ss = alice
.ssgen(bob_pub, ACCESS_HEURISTIC)
.expect("Failed to generate Alice's shared secret");
let bob_ss = bob
.ssgen(alice_pub, ACCESS_HEURISTIC)
.expect("Failed to generate Bob's shared secret");
assert!(!alice_ss.is_empty());
assert_eq!(alice_ss, bob_ss);
}
#[test]
#[ignore]
fn test_ecdh_manual() {
let mut alice = KcapiKPP::new("ecdh", 0).expect("Failed to init Alice's KPP handle");
alice
.ecdh_setcurve(ECC_CURVE_NIST_P256)
.expect("Failed to set Alice's curve");
alice
.setkey(Vec::new())
.expect("Failed to set Alice's ephemeral key");
let alice_pub = alice
.keygen(ACCESS_HEURISTIC)
.expect("Failed to generate Alice's public key");
let mut bob = KcapiKPP::new("ecdh", 0).expect("Failed to init Bob's KPP handle");
bob.ecdh_setcurve(ECC_CURVE_NIST_P256)
.expect("Failed to set Bob's curve");
bob.setkey(Vec::new())
.expect("Failed to set Bob's ephemeral key");
let bob_pub = bob
.keygen(ACCESS_HEURISTIC)
.expect("Failed to generate Bob's public key");
let alice_ss = alice
.ssgen(bob_pub, ACCESS_HEURISTIC)
.expect("Failed to generate Alice's shared secret");
let bob_ss = bob
.ssgen(alice_pub, ACCESS_HEURISTIC)
.expect("Failed to generate Bob's shared secret");
assert_eq!(alice_ss, bob_ss);
}
}