use rustls::crypto::SupportedKxGroup;
mod ec;
pub use ec::{SECP256R1, SECP384R1};
mod x25519;
pub use x25519::X25519;
#[cfg(ossl300)]
mod kem;
#[cfg(ossl300)]
pub use kem::{MLKEM768, X25519MLKEM768};
pub static DEFAULT_KX_GROUPS: &[&dyn SupportedKxGroup] = &[
#[cfg(all(ossl300, feature = "prefer-post-quantum"))]
X25519MLKEM768,
X25519,
SECP256R1,
SECP384R1,
#[cfg(all(ossl300, not(feature = "prefer-post-quantum")))]
X25519MLKEM768,
];
pub static ALL_KX_GROUPS: &[&dyn SupportedKxGroup] = &[
#[cfg(all(ossl300, feature = "prefer-post-quantum"))]
X25519MLKEM768,
X25519,
SECP256R1,
SECP384R1,
#[cfg(all(ossl300, not(feature = "prefer-post-quantum")))]
X25519MLKEM768,
#[cfg(ossl300)]
MLKEM768,
];
pub fn available_default_groups() -> Vec<&'static dyn SupportedKxGroup> {
DEFAULT_KX_GROUPS
.iter()
.copied()
.filter(|group| group.start().is_ok())
.collect()
}
pub fn available_groups() -> Vec<&'static dyn SupportedKxGroup> {
ALL_KX_GROUPS
.iter()
.copied()
.filter(|group| group.start().is_ok())
.collect()
}