@@ -63,6 +63,10 @@ impl MechanismType {
6363 pub const AES_KEY_WRAP_PAD : MechanismType = MechanismType {
6464 val : CKM_AES_KEY_WRAP_PAD ,
6565 } ;
66+ /// AES key wrap mechanism. The CKM_AES_KEY_WRAP_KWP mechanism can wrap a key or encrypt block of data of any length.
67+ pub const AES_KEY_WRAP_KWP : MechanismType = MechanismType {
68+ val : CKM_AES_KEY_WRAP_KWP ,
69+ } ;
6670 /// AES-GCM mechanism
6771 pub const AES_GCM : MechanismType = MechanismType { val : CKM_AES_GCM } ;
6872
@@ -609,6 +613,7 @@ impl MechanismType {
609613 }
610614 CKM_AES_KEY_WRAP => String :: from ( stringify ! ( CKM_AES_KEY_WRAP ) ) ,
611615 CKM_AES_KEY_WRAP_PAD => String :: from ( stringify ! ( CKM_AES_KEY_WRAP_PAD ) ) ,
616+ CKM_AES_KEY_WRAP_KWP => String :: from ( stringify ! ( CKM_AES_KEY_WRAP_KWP ) ) ,
612617 CKM_RSA_PKCS_TPM_1_1 => String :: from ( stringify ! ( CKM_RSA_PKCS_TPM_1_1 ) ) ,
613618 CKM_RSA_PKCS_OAEP_TPM_1_1 => String :: from ( stringify ! ( CKM_RSA_PKCS_OAEP_TPM_1_1 ) ) ,
614619 CKM_EC_EDWARDS_KEY_PAIR_GEN => String :: from ( stringify ! ( CKM_EC_EDWARDS_KEY_PAIR_GEN ) ) ,
@@ -708,6 +713,8 @@ pub enum Mechanism<'a> {
708713 AesKeyWrap ,
709714 /// AES key wrap with padding block
710715 AesKeyWrapPad ,
716+ /// AES key wrap with padding (CKM_AES_KEY_WRAP_KWP)
717+ AesKeyWrapWithPadding ( Option < [ u8 ; 4 ] > ) ,
711718 /// AES-GCM mechanism
712719 AesGcm ( aead:: GcmParams < ' a > ) ,
713720 /// AES-CBC-ENCRYPT-DATA mechanism
@@ -863,6 +870,7 @@ impl Mechanism<'_> {
863870 Mechanism :: AesCbcPad ( _) => MechanismType :: AES_CBC_PAD ,
864871 Mechanism :: AesKeyWrap => MechanismType :: AES_KEY_WRAP ,
865872 Mechanism :: AesKeyWrapPad => MechanismType :: AES_KEY_WRAP_PAD ,
873+ Mechanism :: AesKeyWrapWithPadding ( _) => MechanismType :: AES_KEY_WRAP_KWP ,
866874 Mechanism :: AesGcm ( _) => MechanismType :: AES_GCM ,
867875 Mechanism :: AesCbcEncryptData ( _) => MechanismType :: AES_CBC_ENCRYPT_DATA ,
868876 Mechanism :: AesCMac => MechanismType :: AES_CMAC ,
@@ -945,11 +953,13 @@ impl From<&Mechanism<'_>> for CK_MECHANISM {
945953 | Mechanism :: Sha512RsaPkcsPss ( params) => make_mechanism ( mechanism, params) ,
946954 Mechanism :: RsaPkcsOaep ( params) => make_mechanism ( mechanism, params) ,
947955 Mechanism :: Ecdh1Derive ( params) => make_mechanism ( mechanism, params) ,
956+ Mechanism :: AesKeyWrapWithPadding ( Some ( params) ) => make_mechanism ( mechanism, params) ,
948957 // Mechanisms without parameters
949958 Mechanism :: AesKeyGen
950959 | Mechanism :: AesEcb
951960 | Mechanism :: AesKeyWrap
952961 | Mechanism :: AesKeyWrapPad
962+ | Mechanism :: AesKeyWrapWithPadding ( None )
953963 | Mechanism :: AesCMac
954964 | Mechanism :: RsaPkcsKeyPairGen
955965 | Mechanism :: RsaPkcs
0 commit comments