@@ -326,6 +326,14 @@ impl MechanismType {
326
326
/// HKDF-DATA mechanism
327
327
pub const HKDF_DATA : MechanismType = MechanismType { val : CKM_HKDF_DATA } ;
328
328
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
+
329
337
/// Create vendor defined mechanism
330
338
///
331
339
/// # Arguments
@@ -715,6 +723,8 @@ impl MechanismType {
715
723
CKM_HKDF_KEY_GEN => String :: from ( stringify ! ( CKM_HKDF_KEY_GEN ) ) ,
716
724
CKM_HKDF_DERIVE => String :: from ( stringify ! ( CKM_HKDF_DERIVE ) ) ,
717
725
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 ) ) ,
718
728
_ => format ! ( "unknown {mech:08x}" ) ,
719
729
}
720
730
}
@@ -799,6 +809,8 @@ impl TryFrom<CK_MECHANISM_TYPE> for MechanismType {
799
809
CKM_HKDF_KEY_GEN => Ok ( MechanismType :: HKDF_KEY_GEN ) ,
800
810
CKM_HKDF_DERIVE => Ok ( MechanismType :: HKDF_DERIVE ) ,
801
811
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 ) ,
802
814
other => {
803
815
error ! ( "Mechanism type {} is not supported." , other) ;
804
816
Err ( Error :: NotSupported )
@@ -1021,6 +1033,12 @@ pub enum Mechanism<'a> {
1021
1033
/// HKDF-DATA mechanism
1022
1034
HkdfData ( hkdf:: HkdfParams < ' a > ) ,
1023
1035
1036
+ // ML-KEM
1037
+ /// ML-KEM key pair generation mechanism
1038
+ MlKemKeyPairGen ,
1039
+ /// ML-KEM key encacpsulation/decapsulation mechanism
1040
+ MlKem ,
1041
+
1024
1042
/// Vendor defined mechanism
1025
1043
VendorDefined ( VendorDefinedMechanism < ' a > ) ,
1026
1044
}
@@ -1102,6 +1120,9 @@ impl Mechanism<'_> {
1102
1120
Mechanism :: HkdfDerive ( _) => MechanismType :: HKDF_DERIVE ,
1103
1121
Mechanism :: HkdfData ( _) => MechanismType :: HKDF_DATA ,
1104
1122
1123
+ Mechanism :: MlKemKeyPairGen => MechanismType :: ML_KEM_KEY_PAIR_GEN ,
1124
+ Mechanism :: MlKem => MechanismType :: ML_KEM ,
1125
+
1105
1126
Mechanism :: VendorDefined ( vm) => MechanismType {
1106
1127
val : vm. inner . mechanism ,
1107
1128
} ,
@@ -1198,7 +1219,9 @@ impl From<&Mechanism<'_>> for CK_MECHANISM {
1198
1219
| Mechanism :: Sha384KeyGen
1199
1220
| Mechanism :: Sha512KeyGen
1200
1221
| Mechanism :: GenericSecretKeyGen
1201
- | Mechanism :: HkdfKeyGen => CK_MECHANISM {
1222
+ | Mechanism :: HkdfKeyGen
1223
+ | Mechanism :: MlKemKeyPairGen
1224
+ | Mechanism :: MlKem => CK_MECHANISM {
1202
1225
mechanism,
1203
1226
pParameter : null_mut ( ) ,
1204
1227
ulParameterLen : 0 ,
0 commit comments