ICSF supports the following PKCS #11 key types (CK_KEY_TYPE). All of these key types are supported in software. Whether they are also supported in hardware will depend on the limitations of your cryptographic hardware configuration.
The following table shows the mechanisms supported by different hardware configurations. All the mechanisms are supported in software, and some may be available in hardware. If the mechanism is available in hardware, ICSF will use the hardware mechanism. If the mechanism is not available in hardware, ICSF will use the software mechanism. The following table also shows the flags returned by the C_GetMechanismInfo function in the CK_MECHANISM_INFO structure. Whether or not the CKF_HW flag is returned in the CK_MECHANISM_INFO structure indicates whether or not the mechanism is supported in the hardware.
Type (CK_MECHANISM_TYPE) | Size factor | Flags |
---|---|---|
CKM_RSA_PKCS_KEY_PAIR_GEN | Bits | [CKF_HW] CKF_GENERATE_KEY_PAIR |
CKM_DES_KEY_GEN7 | not applicable | [CKF_HW] CKF_GENERATE |
CKM_DES2_KEY_GEN7 | not applicable | [CKF_HW] CKF_GENERATE |
CKM_DES3_KEY_GEN | not applicable | [CKF_HW] CKF_GENERATE |
CKM_RSA_PKCS5, 6 | Bits | [CKF_HW] CKF_ENCRYPT CKF_DECRYPT |
CKM_RSA_X_5095, 6, 7 | Bits | [CKF_HW] CKF_ENCRYPT CKF_DECRYPT |
CKM_MD2_RSA_PKCS5, 6 | Bits | CKF_SIGN CKF_VERIFY |
CKM_MD5_RSA_PKCS5, 6 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA1_RSA_PKCS5, 6 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA224_RSA_PKCS5, 6 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA256_RSA_PKCS5, 6 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA384_RSA_PKCS5, 6 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA512_RSA_PKCS5, 6 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_DES_ECB7 | not applicable | [CKF_HW] CKF_ENCRYPT CKF_DECRYPT |
CKM_DES_CBC7 | not applicable | [CKF_HW] CKF_ENCRYPT CKF_DECRYPT |
CKM_DES_CBC_PAD7 | not applicable | [CKF_HW] CKF_ENCRYPT CKF_DECRYPT |
CKM_DES3_ECB3 | not applicable | [CKF_HW] CKF_ENCRYPT CKF_DECRYPT |
CKM_DES3_CBC3 | not applicable | [CKF_HW] CKF_ENCRYPT CKF_DECRYPT |
CKM_DES3_CBC_PAD3 | not applicable | [CKF_HW] CKF_ENCRYPT CKF_DECRYPT |
CKM_SHA_1 | not applicable | [CKF_HW] CKF_DIGEST |
CKM_SHA224 | not applicable | [CKF_HW] CKF_DIGEST |
CKM_SHA256 | not applicable | [CKF_HW] CKF_DIGEST |
CKM_SHA384 | not applicable | [CKF_HW] CKF_DIGEST |
CKM_SHA512 | not applicable | [CKF_HW] CKF_DIGEST |
CKM_RIPEMD160 | not applicable | CKF_DIGEST |
CKM_MD2 | not applicable | CKF_DIGEST |
CKM_MD5 | not applicable | CKF_DIGEST |
CKM_AES_KEY_GEN | Bytes | [CKF_HW] CKF_GENERATE |
CKM_AES_ECB3 | Bytes | [CKF_HW] CKF_ENCRYPT CKF_DECRYPT |
CKM_AES_CBC3 | Bytes | [CKF_HW] CKF_ENCRYPT CKF_DECRYPT |
CKM_AES_CBC_PAD3 | Bytes | [CKF_HW] CKF_ENCRYPT CKF_DECRYPT |
CKM_AES_GCM3, 7 | Bytes | CKF_ENCRYPT CKF_DECRYPT |
CKM_DSA_KEY_PAIR_GEN | Bits | [CKF_HW] CKF_GENERATE_KEY_PAIR |
CKM_DH_PKCS_KEY_PAIR_GEN | Bits | [CKF_HW] CKF_GENERATE_KEY_PAIR |
CKM_EC_KEY_PAIR_GEN | Bits | [CKF_HW] CKF_GENERATE_KEY_PAIR CKF_EC_F_P1 CKF_EC_NAMEDCURVE2 CKF_EC_UNCOMPRESS |
CKM_DSA_PARAMETER_GEN | Bits | [CKF_HW] CKF_GENERATE |
CKM_DH_PKCS_PARAMETER_GEN | Bits | [CKF_HW] CKF_GENERATE |
CKM_BLOWFISH_KEY_GEN7 | Bytes | [CKF_HW] CKF_GENERATE |
CKM_RC4_KEY_GEN7 | Bits | [CKF_HW] CKF_GENERATE |
CKM_SSL3_PRE_MASTER_KEY_GEN7 | Bytes | [CKF_HW] CKF_GENERATE |
CKM_TLS_PRE_MASTER_KEY_GEN7 | Bytes | [CKF_HW] CKF_GENERATE |
CKM_GENERIC_SECRET_KEY_GEN3 | Bits | [CKF_HW] CKF_GENERATE |
CKM_BLOWFISH_CBC4, 7 | Bytes | CKF_ENCRYPT CKF_DECRYPT |
CKM_RC44, 7 | Bits | CKF_ENCRYPT CKF_DECRYPT |
CKM_DSA_SHA1 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_DSA | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_ECDSA_SHA1 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY CKF_EC_F_P1 CKF_EC_NAMEDCURVE2 CKF_EC_UNCOMPRESS |
CKM_ECDSA | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY CKF_EC_F_P1 CKF_EC_NAMEDCURVE2 CKF_EC_UNCOMPRESS |
CKM_MD5_HMAC | not applicable | CKF_SIGN CKF_VERIFY |
CKM_SHA_1_HMAC | not applicable | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA224_HMAC | not applicable | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA256_HMAC | not applicable | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA384_HMAC | not applicable | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA512_HMAC | not applicable | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SSL3_MD5_MAC7 | Bits | CKF_SIGN CKF_VERIFY |
CKM_SSL3_SHA1_MAC7 | Bits | CKF_SIGN CKF_VERIFY |
CKM_DH_PKCS_DERIVE | Bits | [CKF_HW] CKF_DERIVE |
CKM_ECDH1_DERIVE | Bits | [CKF_HW] CKF_DERIVE CKF_EC_F_P1 CKF_EC_NAMEDCURVE2 CKF_EC_UNCOMPRESS |
CKM_SSL3_MASTER_KEY_DERIVE7 | Bytes | CKF_DERIVE |
CKM_SSL3_MASTER_KEY_DERIVE_DH7 | Bytes | CKF_DERIVE |
CKM_SSL3_KEY_AND_MAC_DERIVE7 | not applicable | CKF_DERIVE |
CKM_TLS_MASTER_KEY_DERIVE7 | Bytes | CKF_DERIVE |
CKM_TLS_MASTER_KEY_DERIVE_DH7 | Bytes | CKF_DERIVE |
CKM_TLS_KEY_AND_MAC_DERIVE7 | not applicable | CKF_DERIVE |
CKM_TLS_PRF7 | not applicable | CKF_DERIVE |
CKM_IBM_ATTRIBUTEBOUND_WRAP8 (vendor specific mechanism - 0x80020004). IBM proprietary wrap/unwrap mechanism that includes the Boolean usage attributes along with the key data. Only supported for secure keys that have the CKA_IBM_ATTRBOUND attribute set TRUE | not applicable | [CKF_HW] CKF_WRAP CKF_UNWRAP |
CKM_PBE_SHA1_DES3_EDE_CBC | not applicable | [CKF_HW] CKF_GENERATE |
CKM_RSA_PKCS_PSS9 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA1_RSA_PKCS_PSS9 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA224_RSA_PKCS_PSS9 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA256_RSA_PKCS_PSS9 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA384_RSA_PKCS_PSS9 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
CKM_SHA512_RSA_PKCS_PSS9 | Bits | [CKF_HW] CKF_SIGN CKF_VERIFY |
Footnotes for Table 1
1 The PKCS #11 standard designates two ways of implementing Elliptic Curve Cryptography, nicknamed Fp and F2m. z/OS PKCS #11 supports the Fp variety only.
Parameters ::= CHOICE {
ecParameters ECParameters,
namedCurve OBJECT IDENTIFIER,
implicitlyCA NULL }
z/OS PKCS #11 supports the
specification of CKA_EC_PARAMS attribute using the namedCurved CHOICE.
The following NIST-recommended named curves are supported:In addition, z/OS PKCS #11 has limited support for the ecParameters CHOICE. When specified, the DER encoding must contain the optional cofactor field and must not contain the optional Curve.seed field. Also, calls to C_GetAttributeValue to retrieve the CKA_EC_PARAMS attribute will always return the value in the namedCurve form regardless of how the attribute was specified when the object was created. Due to these limitations, the CKF_EC_ECPARAMETERS flag is not turned on for the applicable mechanisms.
3 Mechanism not present on a system that is export controlled.
4 Mechanism limited to 56-bit on a system that is export controlled.
6 RSA public or private keys that have a public exponent greater than 8 bytes in length can only be used when a coprocessor or accelerator is present.
7 Mechanism supported for clear keys only.
8 Mechanism supported for secure keys only.
typedef struct CK_RSA_PKCS_PSS_PARAMS {
CK_MECHANISM_TYPE hashAlg;
CK_RSA_PKCS_MGF_TYPE mgf;
CK_ULONG sLen;
} CK_RSA_PKCS_PSS_PARAMS;
Machine type and cryptographic hardware | Mechanisms supported | Notes |
---|---|---|
z890, z990 - PCIXCC | CKM_DES_KEY_GEN |
This is the base set. RSA private key operations limited to 1024 bits in length (maximum) and no key pair generation capability. |
z890, z990 - CEX2C | PCIXCC set plus: |
RSA private key operations limited to 40496 bits in length (maximum). |
z9 - CEX2C | PCIXCC set plus: |
AES key operations limited to 128 bits in length (maximum). |
z10 - CEX2C or CEX3C | z9 CEX2C set plus: |
AES key operations limited to 256 bits in length (maximum). |
IBM zEnterprise 196 - CEX3C | z9 CEX2C set plus: |
AES key operations limited to 256 bits in length
(maximum). RSA private key operations limited to 4096 bits in length (maximum). |
IBM zEnterprise EC12 or IBM zEnterprise BC12 with an Enterprise PKCS #11 coprocessor | z10 set plus: |
Requires the Sept. 2013 or later licensed internal code (LIC) |
IBM z13 | zEC12 and zBC12 set |
Algorithm | Mechanisms | Usage disallowed |
---|---|---|
RIPEMD | CKM_RIPEMD160 | All |
MD2 | CKM_MD2, CKM_MD2_RSA_PKCS | All |
MD5 | CKM_MD5, CKM_MD5_RSA_PKCS, CKM_MD5_HMAC | All |
SSL3 | CKM_SSL3_MD5_MAC, CKM_SSL3_SHA1_MAC, CKM_SSL3_MASTER_KEY_DERIVE, CKM_SSL3_MASTER_KEY_DERIVE_DH, CKM_SSL3_KEY_AND_MAC_DERIVE | All |
TLS | CKM_TLS_MASTER_KEY_DERIVE, CKM_TLS_MASTER_KEY_DERIVE_DH, CKM_TLS_KEY_AND_MAC_DERIVE | Base key sizes less than 10 bytes |
Diffie Hellman | CKM_DH_PKCS_DERIVE | Prime size less than 1024 bits |
CKM_DH_PKCS_PARAMETER_GEN | Prime sizes other than 1024 or 2048 bits | |
DSA | CKM_DSA_SHA1, CKM_DSA | Prime sizes less than 1024 bits |
DSA | CKM_DSA_PARAMETER_GEN, CKM_DSA_KEY_PAIR_GEN or Sign | Combinations other than the following:
|
Single DES | CKM_DES_ECB, CKM_DES_CBC, CKM_DES_CBC_PAD | All |
Triple DES | CKM_DES3_ECB, CKM_DES3_CBC, CKM_DES3_CBC_PAD | Two key Triple DES |
Blowfish | CKM_BLOWFISH_KEY_GEN, CKM_BLOWFISH_CBC | All |
RC4 | CKM_RC4 | All |
RSA | CKM_RSA_X_509 | All |
RSA | CKM_RSA_PKCS | Key sizes less than 1024 bits |
RSA | CKM_RSA_PKCS_KEY_PAIR_GEN or Sign without an active accelerator | Key sizes that are less than 1024 bits or not a multiple of 256 bits or public key exponents less than 0x010001 |
HMAC | CKM_SHA_1, CKM_SHA224, CKM_SHA256, CKM_SHA384, CKM_SHA512 | Base key sizes less than one half the output size |
AES GCM | CKM_AES_GCM | GCM encryption or GMAC generation with externally generated initialization vectors. Initialization vector lengths other than 12 bytes. Tag byte sizes 4 and 8 |