@@ -63,6 +63,10 @@ impl MechanismType {
63
63
pub const AES_KEY_WRAP_PAD : MechanismType = MechanismType {
64
64
val : CKM_AES_KEY_WRAP_PAD ,
65
65
} ;
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
+ } ;
66
70
/// AES-GCM mechanism
67
71
pub const AES_GCM : MechanismType = MechanismType { val : CKM_AES_GCM } ;
68
72
@@ -609,6 +613,7 @@ impl MechanismType {
609
613
}
610
614
CKM_AES_KEY_WRAP => String :: from ( stringify ! ( CKM_AES_KEY_WRAP ) ) ,
611
615
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 ) ) ,
612
617
CKM_RSA_PKCS_TPM_1_1 => String :: from ( stringify ! ( CKM_RSA_PKCS_TPM_1_1 ) ) ,
613
618
CKM_RSA_PKCS_OAEP_TPM_1_1 => String :: from ( stringify ! ( CKM_RSA_PKCS_OAEP_TPM_1_1 ) ) ,
614
619
CKM_EC_EDWARDS_KEY_PAIR_GEN => String :: from ( stringify ! ( CKM_EC_EDWARDS_KEY_PAIR_GEN ) ) ,
@@ -708,6 +713,8 @@ pub enum Mechanism<'a> {
708
713
AesKeyWrap ,
709
714
/// AES key wrap with padding block
710
715
AesKeyWrapPad ,
716
+ /// AES key wrap with padding (CKM_AES_KEY_WRAP_KWP)
717
+ AesKeyWrapWithPadding ( Option < [ u8 ; 4 ] > ) ,
711
718
/// AES-GCM mechanism
712
719
AesGcm ( aead:: GcmParams < ' a > ) ,
713
720
/// AES-CBC-ENCRYPT-DATA mechanism
@@ -863,6 +870,7 @@ impl Mechanism<'_> {
863
870
Mechanism :: AesCbcPad ( _) => MechanismType :: AES_CBC_PAD ,
864
871
Mechanism :: AesKeyWrap => MechanismType :: AES_KEY_WRAP ,
865
872
Mechanism :: AesKeyWrapPad => MechanismType :: AES_KEY_WRAP_PAD ,
873
+ Mechanism :: AesKeyWrapWithPadding ( _) => MechanismType :: AES_KEY_WRAP_KWP ,
866
874
Mechanism :: AesGcm ( _) => MechanismType :: AES_GCM ,
867
875
Mechanism :: AesCbcEncryptData ( _) => MechanismType :: AES_CBC_ENCRYPT_DATA ,
868
876
Mechanism :: AesCMac => MechanismType :: AES_CMAC ,
@@ -945,11 +953,13 @@ impl From<&Mechanism<'_>> for CK_MECHANISM {
945
953
| Mechanism :: Sha512RsaPkcsPss ( params) => make_mechanism ( mechanism, params) ,
946
954
Mechanism :: RsaPkcsOaep ( params) => make_mechanism ( mechanism, params) ,
947
955
Mechanism :: Ecdh1Derive ( params) => make_mechanism ( mechanism, params) ,
956
+ Mechanism :: AesKeyWrapWithPadding ( Some ( params) ) => make_mechanism ( mechanism, params) ,
948
957
// Mechanisms without parameters
949
958
Mechanism :: AesKeyGen
950
959
| Mechanism :: AesEcb
951
960
| Mechanism :: AesKeyWrap
952
961
| Mechanism :: AesKeyWrapPad
962
+ | Mechanism :: AesKeyWrapWithPadding ( None )
953
963
| Mechanism :: AesCMac
954
964
| Mechanism :: RsaPkcsKeyPairGen
955
965
| Mechanism :: RsaPkcs
0 commit comments