@@ -326,6 +326,14 @@ impl MechanismType {
326326 /// HKDF-DATA mechanism
327327 pub const HKDF_DATA : MechanismType = MechanismType { val : CKM_HKDF_DATA } ;
328328
329+ // ML-KEM
330+ /// ML-KEM key pair generation mechanism
331+ pub const ML_KEM_KEY_PAIR_GEN : MechanismType = MechanismType {
332+ val : CKM_ML_KEM_KEY_PAIR_GEN ,
333+ } ;
334+ /// ML-KEM encapsulation and decapsulation mechanism
335+ pub const ML_KEM : MechanismType = MechanismType { val : CKM_ML_KEM } ;
336+
329337 /// Create vendor defined mechanism
330338 ///
331339 /// # Arguments
@@ -715,6 +723,8 @@ impl MechanismType {
715723 CKM_HKDF_KEY_GEN => String :: from ( stringify ! ( CKM_HKDF_KEY_GEN ) ) ,
716724 CKM_HKDF_DERIVE => String :: from ( stringify ! ( CKM_HKDF_DERIVE ) ) ,
717725 CKM_HKDF_DATA => String :: from ( stringify ! ( CKM_HKDF_DATA ) ) ,
726+ CKM_ML_KEM_KEY_PAIR_GEN => String :: from ( stringify ! ( CKM_ML_KEM_KEY_PAIR_GEN ) ) ,
727+ CKM_ML_KEM => String :: from ( stringify ! ( CKM_ML_KEM ) ) ,
718728 _ => format ! ( "unknown {mech:08x}" ) ,
719729 }
720730 }
@@ -799,6 +809,8 @@ impl TryFrom<CK_MECHANISM_TYPE> for MechanismType {
799809 CKM_HKDF_KEY_GEN => Ok ( MechanismType :: HKDF_KEY_GEN ) ,
800810 CKM_HKDF_DERIVE => Ok ( MechanismType :: HKDF_DERIVE ) ,
801811 CKM_HKDF_DATA => Ok ( MechanismType :: HKDF_DATA ) ,
812+ CKM_ML_KEM_KEY_PAIR_GEN => Ok ( MechanismType :: ML_KEM_KEY_PAIR_GEN ) ,
813+ CKM_ML_KEM => Ok ( MechanismType :: ML_KEM ) ,
802814 other => {
803815 error ! ( "Mechanism type {} is not supported." , other) ;
804816 Err ( Error :: NotSupported )
@@ -1021,6 +1033,12 @@ pub enum Mechanism<'a> {
10211033 /// HKDF-DATA mechanism
10221034 HkdfData ( hkdf:: HkdfParams < ' a > ) ,
10231035
1036+ // ML-KEM
1037+ /// ML-KEM key pair generation mechanism
1038+ MlKemKeyPairGen ,
1039+ /// ML-KEM key encacpsulation/decapsulation mechanism
1040+ MlKem ,
1041+
10241042 /// Vendor defined mechanism
10251043 VendorDefined ( VendorDefinedMechanism < ' a > ) ,
10261044}
@@ -1102,6 +1120,9 @@ impl Mechanism<'_> {
11021120 Mechanism :: HkdfDerive ( _) => MechanismType :: HKDF_DERIVE ,
11031121 Mechanism :: HkdfData ( _) => MechanismType :: HKDF_DATA ,
11041122
1123+ Mechanism :: MlKemKeyPairGen => MechanismType :: ML_KEM_KEY_PAIR_GEN ,
1124+ Mechanism :: MlKem => MechanismType :: ML_KEM ,
1125+
11051126 Mechanism :: VendorDefined ( vm) => MechanismType {
11061127 val : vm. inner . mechanism ,
11071128 } ,
@@ -1198,7 +1219,9 @@ impl From<&Mechanism<'_>> for CK_MECHANISM {
11981219 | Mechanism :: Sha384KeyGen
11991220 | Mechanism :: Sha512KeyGen
12001221 | Mechanism :: GenericSecretKeyGen
1201- | Mechanism :: HkdfKeyGen => CK_MECHANISM {
1222+ | Mechanism :: HkdfKeyGen
1223+ | Mechanism :: MlKemKeyPairGen
1224+ | Mechanism :: MlKem => CK_MECHANISM {
12021225 mechanism,
12031226 pParameter : null_mut ( ) ,
12041227 ulParameterLen : 0 ,
0 commit comments