use pyo3::prelude::*;
pub(super) use super::cms::kem::{PyCMSORIforKEMOtherInfo, PyKEMRecipientInfo};
pub(super) fn register_kem_submodule(parent: &Bound<'_, PyModule>) -> PyResult<()> {
let py = parent.py();
let m = PyModule::new(py, "kem")?;
m.add_class::<PyKEMRecipientInfo>()?;
m.add_class::<PyCMSORIforKEMOtherInfo>()?;
m.add(
"ID_ML_KEM_512",
super::oid_const(py, synta_certificate::oids::ML_KEM_512),
)?;
m.add(
"ID_ML_KEM_768",
super::oid_const(py, synta_certificate::oids::ML_KEM_768),
)?;
m.add(
"ID_ML_KEM_1024",
super::oid_const(py, synta_certificate::oids::ML_KEM_1024),
)?;
m.add(
"ID_ORI",
super::oid_const(py, synta_certificate::cms_kem_types::ID_ORI),
)?;
m.add(
"ID_ORI_KEM",
super::oid_const(py, synta_certificate::cms_kem_types::ID_ORI_KEM),
)?;
crate::install_submodule(
parent,
&m,
"synta.kem",
Some(concat!(
"synta.kem — KEM algorithm types (RFC 9629 / FIPS 203).\n\n",
"Provides KEMRecipientInfo and CMSORIforKEMOtherInfo for decoding\n",
"quantum-safe KEM recipient structures from CMS EnvelopedData, along\n",
"with ML-KEM (FIPS 203) and CMS-KEM OID constants.\n\n",
"The KEMRecipientInfo SEQUENCE is carried as an OtherRecipientInfo\n",
"alternative inside CMS EnvelopedData, identified by id-ori-kem\n",
"(1.2.840.113549.1.9.16.13.3).",
)),
)
}