@@ -264,6 +264,8 @@ impl MechanismType {
264264 pub const SHA512_RSA_PKCS_PSS : MechanismType = MechanismType {
265265 val : CKM_SHA512_RSA_PKCS_PSS ,
266266 } ;
267+
268+ // SHAn-HMAC
267269 /// SHA1-HMAC mechanism
268270 pub const SHA1_HMAC : MechanismType = MechanismType {
269271 val : CKM_SHA_1_HMAC ,
@@ -284,6 +286,29 @@ impl MechanismType {
284286 pub const SHA512_HMAC : MechanismType = MechanismType {
285287 val : CKM_SHA512_HMAC ,
286288 } ;
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+
287312 /// GENERIC-SECRET-KEY-GEN mechanism
288313 pub const GENERIC_SECRET_KEY_GEN : MechanismType = MechanismType {
289314 val : CKM_GENERIC_SECRET_KEY_GEN ,
@@ -420,6 +445,7 @@ impl MechanismType {
420445 CKM_SHA_1 => String :: from ( stringify ! ( CKM_SHA_1 ) ) ,
421446 CKM_SHA_1_HMAC => String :: from ( stringify ! ( CKM_SHA_1_HMAC ) ) ,
422447 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 ) ) ,
423449 CKM_RIPEMD128 => String :: from ( stringify ! ( CKM_RIPEMD128 ) ) ,
424450 CKM_RIPEMD128_HMAC => String :: from ( stringify ! ( CKM_RIPEMD128_HMAC ) ) ,
425451 CKM_RIPEMD128_HMAC_GENERAL => String :: from ( stringify ! ( CKM_RIPEMD128_HMAC_GENERAL ) ) ,
@@ -429,12 +455,15 @@ impl MechanismType {
429455 CKM_SHA256 => String :: from ( stringify ! ( CKM_SHA256 ) ) ,
430456 CKM_SHA256_HMAC => String :: from ( stringify ! ( CKM_SHA256_HMAC ) ) ,
431457 CKM_SHA256_HMAC_GENERAL => String :: from ( stringify ! ( CKM_SHA256_HMAC_GENERAL ) ) ,
458+ CKM_SHA256_KEY_GEN => String :: from ( stringify ! ( CKM_SHA256_KEY_GEN ) ) ,
432459 CKM_SHA384 => String :: from ( stringify ! ( CKM_SHA384 ) ) ,
433460 CKM_SHA384_HMAC => String :: from ( stringify ! ( CKM_SHA384_HMAC ) ) ,
434461 CKM_SHA384_HMAC_GENERAL => String :: from ( stringify ! ( CKM_SHA384_HMAC_GENERAL ) ) ,
462+ CKM_SHA384_KEY_GEN => String :: from ( stringify ! ( CKM_SHA384_KEY_GEN ) ) ,
435463 CKM_SHA512 => String :: from ( stringify ! ( CKM_SHA512 ) ) ,
436464 CKM_SHA512_HMAC => String :: from ( stringify ! ( CKM_SHA512_HMAC ) ) ,
437465 CKM_SHA512_HMAC_GENERAL => String :: from ( stringify ! ( CKM_SHA512_HMAC_GENERAL ) ) ,
466+ CKM_SHA512_KEY_GEN => String :: from ( stringify ! ( CKM_SHA512_KEY_GEN ) ) ,
438467 CKM_SECURID_KEY_GEN => String :: from ( stringify ! ( CKM_SECURID_KEY_GEN ) ) ,
439468 CKM_SECURID => String :: from ( stringify ! ( CKM_SECURID ) ) ,
440469 CKM_HOTP_KEY_GEN => String :: from ( stringify ! ( CKM_HOTP_KEY_GEN ) ) ,
@@ -661,6 +690,7 @@ impl MechanismType {
661690 CKM_SHA224_HMAC_GENERAL => String :: from ( stringify ! ( CKM_SHA224_HMAC_GENERAL ) ) ,
662691 CKM_SHA224_RSA_PKCS => String :: from ( stringify ! ( CKM_SHA224_RSA_PKCS ) ) ,
663692 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 ) ) ,
664694 CKM_SHA224_KEY_DERIVATION => String :: from ( stringify ! ( CKM_SHA224_KEY_DERIVATION ) ) ,
665695 CKM_CAMELLIA_ECB => String :: from ( stringify ! ( CKM_CAMELLIA_ECB ) ) ,
666696 CKM_CAMELLIA_CBC => String :: from ( stringify ! ( CKM_CAMELLIA_CBC ) ) ,
@@ -760,6 +790,11 @@ impl TryFrom<CK_MECHANISM_TYPE> for MechanismType {
760790 CKM_SHA256_HMAC => Ok ( MechanismType :: SHA256_HMAC ) ,
761791 CKM_SHA384_HMAC => Ok ( MechanismType :: SHA384_HMAC ) ,
762792 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 ) ,
763798 CKM_GENERIC_SECRET_KEY_GEN => Ok ( MechanismType :: GENERIC_SECRET_KEY_GEN ) ,
764799 CKM_HKDF_KEY_GEN => Ok ( MechanismType :: HKDF_KEY_GEN ) ,
765800 CKM_HKDF_DERIVE => Ok ( MechanismType :: HKDF_DERIVE ) ,
@@ -963,6 +998,18 @@ pub enum Mechanism<'a> {
963998 /// SHA512-HMAC mechanism
964999 Sha512Hmac ,
9651000
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+
9661013 /// GENERIC-SECRET-KEY-GEN mechanism
9671014 GenericSecretKeyGen ,
9681015
@@ -1043,6 +1090,12 @@ impl Mechanism<'_> {
10431090 Mechanism :: Sha384Hmac => MechanismType :: SHA384_HMAC ,
10441091 Mechanism :: Sha512Hmac => MechanismType :: SHA512_HMAC ,
10451092
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+
10461099 Mechanism :: GenericSecretKeyGen => MechanismType :: GENERIC_SECRET_KEY_GEN ,
10471100
10481101 Mechanism :: HkdfKeyGen => MechanismType :: HKDF_KEY_GEN ,
@@ -1139,6 +1192,11 @@ impl From<&Mechanism<'_>> for CK_MECHANISM {
11391192 | Mechanism :: Sha256Hmac
11401193 | Mechanism :: Sha384Hmac
11411194 | Mechanism :: Sha512Hmac
1195+ | Mechanism :: Sha1KeyGen
1196+ | Mechanism :: Sha224KeyGen
1197+ | Mechanism :: Sha256KeyGen
1198+ | Mechanism :: Sha384KeyGen
1199+ | Mechanism :: Sha512KeyGen
11421200 | Mechanism :: GenericSecretKeyGen
11431201 | Mechanism :: HkdfKeyGen => CK_MECHANISM {
11441202 mechanism,
0 commit comments