@@ -264,6 +264,8 @@ impl MechanismType {
264
264
pub const SHA512_RSA_PKCS_PSS : MechanismType = MechanismType {
265
265
val : CKM_SHA512_RSA_PKCS_PSS ,
266
266
} ;
267
+
268
+ // SHAn-HMAC
267
269
/// SHA1-HMAC mechanism
268
270
pub const SHA1_HMAC : MechanismType = MechanismType {
269
271
val : CKM_SHA_1_HMAC ,
@@ -284,6 +286,29 @@ impl MechanismType {
284
286
pub const SHA512_HMAC : MechanismType = MechanismType {
285
287
val : CKM_SHA512_HMAC ,
286
288
} ;
289
+
290
+ // SHA-n key generation (for use with the corresponding HMAC mechanism)
291
+ /// SHA-1 key generation mechanism
292
+ pub const SHA1_KEY_GEN : MechanismType = MechanismType {
293
+ val : CKM_SHA_1_KEY_GEN ,
294
+ } ;
295
+ /// SHA-224 key generation mechanism
296
+ pub const SHA224_KEY_GEN : MechanismType = MechanismType {
297
+ val : CKM_SHA224_KEY_GEN ,
298
+ } ;
299
+ /// SHA-256 key generation mechanism
300
+ pub const SHA256_KEY_GEN : MechanismType = MechanismType {
301
+ val : CKM_SHA256_KEY_GEN ,
302
+ } ;
303
+ /// SHA-384 key generation mechanism
304
+ pub const SHA384_KEY_GEN : MechanismType = MechanismType {
305
+ val : CKM_SHA384_KEY_GEN ,
306
+ } ;
307
+ /// SHA-512 key generation mechanism
308
+ pub const SHA512_KEY_GEN : MechanismType = MechanismType {
309
+ val : CKM_SHA512_KEY_GEN ,
310
+ } ;
311
+
287
312
/// GENERIC-SECRET-KEY-GEN mechanism
288
313
pub const GENERIC_SECRET_KEY_GEN : MechanismType = MechanismType {
289
314
val : CKM_GENERIC_SECRET_KEY_GEN ,
@@ -420,6 +445,7 @@ impl MechanismType {
420
445
CKM_SHA_1 => String :: from ( stringify ! ( CKM_SHA_1 ) ) ,
421
446
CKM_SHA_1_HMAC => String :: from ( stringify ! ( CKM_SHA_1_HMAC ) ) ,
422
447
CKM_SHA_1_HMAC_GENERAL => String :: from ( stringify ! ( CKM_SHA_1_HMAC_GENERAL ) ) ,
448
+ CKM_SHA_1_KEY_GEN => String :: from ( stringify ! ( CKM_SHA_1_KEY_GEN ) ) ,
423
449
CKM_RIPEMD128 => String :: from ( stringify ! ( CKM_RIPEMD128 ) ) ,
424
450
CKM_RIPEMD128_HMAC => String :: from ( stringify ! ( CKM_RIPEMD128_HMAC ) ) ,
425
451
CKM_RIPEMD128_HMAC_GENERAL => String :: from ( stringify ! ( CKM_RIPEMD128_HMAC_GENERAL ) ) ,
@@ -429,12 +455,15 @@ impl MechanismType {
429
455
CKM_SHA256 => String :: from ( stringify ! ( CKM_SHA256 ) ) ,
430
456
CKM_SHA256_HMAC => String :: from ( stringify ! ( CKM_SHA256_HMAC ) ) ,
431
457
CKM_SHA256_HMAC_GENERAL => String :: from ( stringify ! ( CKM_SHA256_HMAC_GENERAL ) ) ,
458
+ CKM_SHA256_KEY_GEN => String :: from ( stringify ! ( CKM_SHA256_KEY_GEN ) ) ,
432
459
CKM_SHA384 => String :: from ( stringify ! ( CKM_SHA384 ) ) ,
433
460
CKM_SHA384_HMAC => String :: from ( stringify ! ( CKM_SHA384_HMAC ) ) ,
434
461
CKM_SHA384_HMAC_GENERAL => String :: from ( stringify ! ( CKM_SHA384_HMAC_GENERAL ) ) ,
462
+ CKM_SHA384_KEY_GEN => String :: from ( stringify ! ( CKM_SHA384_KEY_GEN ) ) ,
435
463
CKM_SHA512 => String :: from ( stringify ! ( CKM_SHA512 ) ) ,
436
464
CKM_SHA512_HMAC => String :: from ( stringify ! ( CKM_SHA512_HMAC ) ) ,
437
465
CKM_SHA512_HMAC_GENERAL => String :: from ( stringify ! ( CKM_SHA512_HMAC_GENERAL ) ) ,
466
+ CKM_SHA512_KEY_GEN => String :: from ( stringify ! ( CKM_SHA512_KEY_GEN ) ) ,
438
467
CKM_SECURID_KEY_GEN => String :: from ( stringify ! ( CKM_SECURID_KEY_GEN ) ) ,
439
468
CKM_SECURID => String :: from ( stringify ! ( CKM_SECURID ) ) ,
440
469
CKM_HOTP_KEY_GEN => String :: from ( stringify ! ( CKM_HOTP_KEY_GEN ) ) ,
@@ -661,6 +690,7 @@ impl MechanismType {
661
690
CKM_SHA224_HMAC_GENERAL => String :: from ( stringify ! ( CKM_SHA224_HMAC_GENERAL ) ) ,
662
691
CKM_SHA224_RSA_PKCS => String :: from ( stringify ! ( CKM_SHA224_RSA_PKCS ) ) ,
663
692
CKM_SHA224_RSA_PKCS_PSS => String :: from ( stringify ! ( CKM_SHA224_RSA_PKCS_PSS ) ) ,
693
+ CKM_SHA224_KEY_GEN => String :: from ( stringify ! ( CKM_SHA224_KEY_GEN ) ) ,
664
694
CKM_SHA224_KEY_DERIVATION => String :: from ( stringify ! ( CKM_SHA224_KEY_DERIVATION ) ) ,
665
695
CKM_CAMELLIA_ECB => String :: from ( stringify ! ( CKM_CAMELLIA_ECB ) ) ,
666
696
CKM_CAMELLIA_CBC => String :: from ( stringify ! ( CKM_CAMELLIA_CBC ) ) ,
@@ -760,6 +790,11 @@ impl TryFrom<CK_MECHANISM_TYPE> for MechanismType {
760
790
CKM_SHA256_HMAC => Ok ( MechanismType :: SHA256_HMAC ) ,
761
791
CKM_SHA384_HMAC => Ok ( MechanismType :: SHA384_HMAC ) ,
762
792
CKM_SHA512_HMAC => Ok ( MechanismType :: SHA512_HMAC ) ,
793
+ CKM_SHA_1_KEY_GEN => Ok ( MechanismType :: SHA1_KEY_GEN ) ,
794
+ CKM_SHA224_KEY_GEN => Ok ( MechanismType :: SHA224_KEY_GEN ) ,
795
+ CKM_SHA256_KEY_GEN => Ok ( MechanismType :: SHA256_KEY_GEN ) ,
796
+ CKM_SHA384_KEY_GEN => Ok ( MechanismType :: SHA384_KEY_GEN ) ,
797
+ CKM_SHA512_KEY_GEN => Ok ( MechanismType :: SHA512_KEY_GEN ) ,
763
798
CKM_GENERIC_SECRET_KEY_GEN => Ok ( MechanismType :: GENERIC_SECRET_KEY_GEN ) ,
764
799
CKM_HKDF_KEY_GEN => Ok ( MechanismType :: HKDF_KEY_GEN ) ,
765
800
CKM_HKDF_DERIVE => Ok ( MechanismType :: HKDF_DERIVE ) ,
@@ -963,6 +998,18 @@ pub enum Mechanism<'a> {
963
998
/// SHA512-HMAC mechanism
964
999
Sha512Hmac ,
965
1000
1001
+ // SHA-n key generation (for use with the corresponding HMAC mechanism)
1002
+ /// SHA-1 key generation mechanism
1003
+ Sha1KeyGen ,
1004
+ /// SHA-224 key generation mechanism
1005
+ Sha224KeyGen ,
1006
+ /// SHA-256 key generation mechanism
1007
+ Sha256KeyGen ,
1008
+ /// SHA-384 key generation mechanism
1009
+ Sha384KeyGen ,
1010
+ /// SHA-512 key generation mechanism
1011
+ Sha512KeyGen ,
1012
+
966
1013
/// GENERIC-SECRET-KEY-GEN mechanism
967
1014
GenericSecretKeyGen ,
968
1015
@@ -1043,6 +1090,12 @@ impl Mechanism<'_> {
1043
1090
Mechanism :: Sha384Hmac => MechanismType :: SHA384_HMAC ,
1044
1091
Mechanism :: Sha512Hmac => MechanismType :: SHA512_HMAC ,
1045
1092
1093
+ Mechanism :: Sha1KeyGen => MechanismType :: SHA1_KEY_GEN ,
1094
+ Mechanism :: Sha224KeyGen => MechanismType :: SHA224_KEY_GEN ,
1095
+ Mechanism :: Sha256KeyGen => MechanismType :: SHA256_KEY_GEN ,
1096
+ Mechanism :: Sha384KeyGen => MechanismType :: SHA384_KEY_GEN ,
1097
+ Mechanism :: Sha512KeyGen => MechanismType :: SHA512_KEY_GEN ,
1098
+
1046
1099
Mechanism :: GenericSecretKeyGen => MechanismType :: GENERIC_SECRET_KEY_GEN ,
1047
1100
1048
1101
Mechanism :: HkdfKeyGen => MechanismType :: HKDF_KEY_GEN ,
@@ -1139,6 +1192,11 @@ impl From<&Mechanism<'_>> for CK_MECHANISM {
1139
1192
| Mechanism :: Sha256Hmac
1140
1193
| Mechanism :: Sha384Hmac
1141
1194
| Mechanism :: Sha512Hmac
1195
+ | Mechanism :: Sha1KeyGen
1196
+ | Mechanism :: Sha224KeyGen
1197
+ | Mechanism :: Sha256KeyGen
1198
+ | Mechanism :: Sha384KeyGen
1199
+ | Mechanism :: Sha512KeyGen
1142
1200
| Mechanism :: GenericSecretKeyGen
1143
1201
| Mechanism :: HkdfKeyGen => CK_MECHANISM {
1144
1202
mechanism,
0 commit comments