diff --git a/src/mlkem.rs b/src/mlkem.rs index f7d2d35..41ed64c 100644 --- a/src/mlkem.rs +++ b/src/mlkem.rs @@ -81,3 +81,16 @@ pub fn mlkem_keygen() -> (MLKEMPrivKey, MLKEMPubKey) { (sk, pk) } + +pub fn mlkem_encap(pk: &MLKEMPubKey) -> (MLKEMCiphertext, MLKEMSharedKey) { + let ct = MLKEMCiphertext(SharedPtr::<1088>::new().unwrap()); + let ss = MLKEMSharedKey(SharedPtr::<32>::new().unwrap()); + + let mut agent = MLKEMAGENT.lock().unwrap(); + + unsafe { + agent.perform_ipc_call(1, &[ct.0.get_offset(), ss.0.get_offset(), pk.0.get_offset()]); + } + + (ct, ss) +}