use keys::{KeyGenOption, PrivateKey, PublicKey, SessionKey};
use CryptoError;
pub trait KeyExchangeScheme {
fn new() -> Self;
fn keypair(
&self,
options: Option<KeyGenOption>,
) -> Result<(PublicKey, PrivateKey), CryptoError>;
fn compute_shared_secret(
&self,
local_private_key: &PrivateKey,
remote_public_key: &PublicKey,
) -> Result<SessionKey, CryptoError>;
fn shared_secret_size() -> usize;
fn public_key_size() -> usize;
fn private_key_size() -> usize;
}
#[cfg(any(feature = "x25519", feature = "x25519_asm"))]
pub mod x25519;
#[cfg(any(
feature = "ecdh_secp256k1",
feature = "ecdh_secp256k1_native",
feature = "ecdh_secp256k1_asm"
))]
pub mod secp256k1;