#[cfg(all(not(feature = "x25519"), not(feature = "ed25519")))]
mod secp256k1;
#[cfg(all(not(feature = "x25519"), not(feature = "ed25519")))]
pub use secp256k1::{decapsulate, encapsulate, generate_keypair, PublicKey, SecretKey};
#[cfg(all(not(feature = "x25519"), not(feature = "ed25519")))]
pub(crate) use secp256k1::{parse_pk, parse_sk, pk_to_vec, Error};
#[cfg(feature = "x25519")]
mod x25519;
#[cfg(feature = "x25519")]
pub use x25519::{decapsulate, encapsulate, generate_keypair, PublicKey, SecretKey};
#[cfg(feature = "x25519")]
pub(crate) use x25519::{parse_pk, parse_sk, pk_to_vec, Error};
#[cfg(feature = "ed25519")]
mod ed25519;
#[cfg(feature = "ed25519")]
pub use ed25519::{decapsulate, encapsulate, generate_keypair, PublicKey, SecretKey};
#[cfg(feature = "ed25519")]
pub(crate) use ed25519::{parse_pk, parse_sk, pk_to_vec, Error};
#[cfg(test)]
mod tests {
use super::{decapsulate, encapsulate, generate_keypair};
#[test]
fn test_key_exchange() {
let (sk1, pk1) = generate_keypair();
let (sk2, pk2) = generate_keypair();
assert_eq!(
encapsulate(&sk2, &pk1, false).unwrap(),
decapsulate(&pk2, &sk1, false).unwrap()
);
}
}