Thales ProtectServer
ProtectServer is the HSM line Thales acquired with Eracom, and ProtectToolkit is the SDK that ships with it. Its PKCS#11 library defines its own constants on top of the base specification: extra return values above the vendor range, extra mechanisms, and a set of BIP32 derivation calls that put hierarchical deterministic key derivation inside the cryptographic boundary. The return value table below is the list Thales publishes, reduced to names and numbers. The mechanism table is what the 7.3 software library reports when asked, and a section below says what moved between 5.9 and 7.3.
Not to be confused with
Thales Luna. Both are sold by Thales today and both speak PKCS#11, but they are unrelated product lines with unrelated vendor namespaces. ProtectServer came from Eracom by way of SafeNet. Luna came from Chrysalis by way of SafeNet and uses LUNA_RET_ names. A constant documented for one is not a constant in the other, and where the names do coincide the numbers can differ.
From 5.9 to 7.3
I probed both SDKs’ software tokens the same way. The documented error table did not change at all: the same 66 names at the same numbers on the 5.9 and the ProtectToolkit 7 documentation pages. The mechanism list grew from 265 to 279. The additions in the standard range are the Edwards and Montgomery key pair generators andCKM_EDDSA at their specification numbers, CKM_AES_CTR, CKM_AES_CMAC_GENERAL, CKM_AES_GMAC, and the two CKM_AES_KEY_WRAP mechanisms. Nine new vendor-range values appeared, which the public documentation for 7 names but does not number, and its new TR-31 wrap and unwrap mechanisms are presumably among them. Three values went away, one of them CKM_AES_CTS and two in the vendor range. One mechanism changed its flags: CKM_AES_GCM gained wrap and unwrap.
The hardware library, libcthsm.so, would not initialise on a machine with no HSM reachable. It returned CKR_GENERAL_ERROR from C_Initialize, which is the specification’s “library unusable” code used for a missing device.Return values
Every CKR_ constant the vendor documents above
0x80000000. The base specification defines
none of them, so a value in this range means nothing until you know
which library returned it.
| Constant | Hex | Decimal |
|---|---|---|
CKR_BIP32_CHILD_INDEX_INVALID | 0x8000007B | 2147483771 |
CKR_BIP32_INVALID_HARDENED_DERIVATION | 0x8000007C | 2147483772 |
CKR_BIP32_MASTER_SEED_LEN_INVALID | 0x8000007D | 2147483773 |
CKR_BIP32_MASTER_SEED_INVALID | 0x8000007E | 2147483774 |
CKR_BIP32_INVALID_KEY_PATH_LEN | 0x8000007F | 2147483775 |
CKR_OTP_PIN_INCORRECT | 0x8000008B | 2147483787 |
CKR_OTP_PIN_LEN_RANGE | 0x8000008C | 2147483788 |
CKR_OTP_PIN_ALREADY_INITIALIZED | 0x8000008D | 2147483789 |
CKR_OTP_PIN_NOT_INITIALIZED | 0x8000008E | 2147483790 |
CKR_ACCESS_DENIED | 0x80000102 | 2147483906 |
CKR_ENCODE_ERROR | 0x80000104 | 2147483908 |
CKR_SO_NOT_LOGGED_IN | 0x80000106 | 2147483910 |
CKR_CERT_NOT_VALIDATED | 0x80000107 | 2147483911 |
CKR_PIN_ALREADY_INITIALIZED | 0x80000108 | 2147483912 |
CKR_RESPONSE_INVALID | 0x80000111 | 2147483921 |
CKR_EVENT_LOG_NOT_FULL | 0x80000113 | 2147483923 |
CKR_OBJECT_READ_ONLY | 0x80000114 | 2147483924 |
CKR_TOKEN_NOT_INITIALIZED | 0x80000116 | 2147483926 |
CKR_NOT_ADMIN_TOKEN | 0x80000117 | 2147483927 |
CKR_CERTIFICATE_NOT_YET_ACTIVE | 0x80000120 | 2147483936 |
CKR_CERTIFICATE_EXPIRED | 0x80000121 | 2147483937 |
CKR_OPERATION_NOT_PERMITTED | 0x80000131 | 2147483953 |
CKR_PKCS12_DECODE | 0x80000132 | 2147483954 |
CKR_PKCS12_UNSUPPORTED_SAFEBAG_TYPE | 0x80000133 | 2147483955 |
CKR_PKCS12_UNSUPPORTED_PRIVACY_MODE | 0x80000134 | 2147483956 |
CKR_PKCS12_UNSUPPORTED_INTEGRITY_MODE | 0x80000135 | 2147483957 |
CKR_KEY_NOT_ACTIVE | 0x80000136 | 2147483958 |
CKR_ET_NOT_ODD_PARITY | 0x80000140 | 2147483968 |
CKR_NEED_IV_UPDATE | 0x80000310 | 2147484432 |
CKR_CANNOT_DERIVE_KEYS | 0x80000381 | 2147484545 |
CKR_BAD_REQ_SIGNATURE | 0x80000382 | 2147484546 |
CKR_BAD_REPLY_SIGNATURE | 0x80000383 | 2147484547 |
CKR_SMS_ERROR | 0x80000384 | 2147484548 |
CKR_BAD_PROTECTION | 0x80000385 | 2147484549 |
CKR_DEVICE_RESET | 0x80000386 | 2147484550 |
CKR_NO_SESSION_KEYS | 0x80000387 | 2147484551 |
CKR_BAD_REPLY | 0x80000388 | 2147484552 |
CKR_KEY_ROLLOVER | 0x80000389 | 2147484553 |
CKR_HOST_ERROR | 0x80001000 | 2147487744 |
CKR_BAD_REQUEST | 0x80001001 | 2147487745 |
CKR_BAD_ATTRIBUTE_PACKING | 0x80001002 | 2147487746 |
CKR_BAD_ATTRIBUTE_COUNT | 0x80001003 | 2147487747 |
CKR_BAD_PARAM_PACKING | 0x80001004 | 2147487748 |
CKR_MSG_ERROR | 0x80001300 | 2147488512 |
CKR_HIMK_NOT_FOUND | 0x80001400 | 2147488768 |
CKR_WLD_ERROR | 0x80002000 | 2147491840 |
CKR_WLD_CONFIG_NOT_FOUND | 0x80002001 | 2147491841 |
CKR_WLD_CONFIG_ITEM_READ_FAILED | 0x80002002 | 2147491842 |
CKR_WLD_CONFIG_NO_TOKEN_LABEL | 0x80002003 | 2147491843 |
CKR_WLD_CONFIG_TOKEN_LABEL_LEN | 0x80002004 | 2147491844 |
CKR_WLD_CONFIG_TOKEN_SERIAL_NUM_LEN | 0x80002005 | 2147491845 |
CKR_WLD_CONFIG_SLOT_DESCRIPTION_LEN | 0x80002006 | 2147491846 |
CKR_WLD_CONFIG_ITEM_FORMAT_INVALID | 0x80002007 | 2147491847 |
CKR_WLD_LOGIN_CACHE_INCONSISTENT | 0x80002010 | 2147491856 |
CKR_HA_ERROR | 0x80003000 | 2147495936 |
CKR_HA_MAX_SLOTS_INVALID_LEN | 0x80003001 | 2147495937 |
CKR_HA_SESSION_HANDLE_INVALID | 0x80003002 | 2147495938 |
CKR_HA_SESSION_INVALID | 0x80003003 | 2147495939 |
CKR_HA_OBJECT_INDEX_INVALID | 0x80003004 | 2147495940 |
CKR_HA_CANNOT_RECOVER_KEY | 0x80003005 | 2147495941 |
CKR_HA_NO_HSM | 0x80003006 | 2147495942 |
CKR_HA_OUT_OF_OBJS | 0x80003007 | 2147495943 |
CKR_SECURITY_FLAGS_INCOMPATIBLE | 0x80003500 | 2147497216 |
CKR_FM_ERROR | 0x80004000 | 2147500032 |
CKR_FM_NOT_REGISTERED | 0x80004001 | 2147500033 |
CKR_FM_DISPATCH_BLOCKED | 0x80004002 | 2147500034 |
documented · ProtectToolkit 7.3 · 2026-09-10
Mechanisms the token actually exposes
Read from a live token rather than from a document. The library
returns a list of integers, then names each one's key size range and the
operations it is good for. That last part lives in
C_GetMechanismInfo rather than in the mechanism list, and
most vendor status tools leave it out. OpenSC's pkcs11-tool
--list-mechanisms is the exception. The same rows sit beside every
other library's on the mechanism
table.
279 mechanisms, 93 of them vendor-defined.
266 set CKF_HW, which claims the operation is done in
hardware.
This token is the software-only one that ships with the SDK, so on this library that flag is a statement about the mechanism's implementation path and not evidence of a physical device. The vendor's public documentation lists its mechanisms by name but does not publish their numbers.
93 of the listed values carry no
name here, because no public source gives a name for the number.
1 set a flag bit the specification does not
define.
| Mechanism | Hex | Keys | Operations |
|---|---|---|---|
CKM_RSA_PKCS_KEY_PAIR_GEN | 0x00000000 | 512–4096 | hardware, generate_key_pair |
CKM_RSA_PKCS | 0x00000001 | 512–4096 | hardware, encrypt, decrypt, sign, sign_recover, verify, verify_recover, wrap, unwrap |
CKM_RSA_9796 | 0x00000002 | 512–4096 | hardware, sign, sign_recover, verify, verify_recover |
CKM_RSA_X_509 | 0x00000003 | 512–4096 | hardware, encrypt, decrypt, sign, sign_recover, verify, verify_recover, wrap, unwrap |
CKM_MD2_RSA_PKCS | 0x00000004 | 512–4096 | hardware, sign, verify |
CKM_MD5_RSA_PKCS | 0x00000005 | 512–4096 | hardware, sign, verify |
CKM_SHA1_RSA_PKCS | 0x00000006 | 512–4096 | hardware, sign, verify |
CKM_RIPEMD128_RSA_PKCS | 0x00000007 | 512–4096 | hardware, sign, verify |
CKM_RIPEMD160_RSA_PKCS | 0x00000008 | 512–4096 | hardware, sign, verify |
CKM_RSA_PKCS_OAEP | 0x00000009 | 512–4096 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_RSA_X9_31_KEY_PAIR_GEN | 0x0000000A | 1024–4096 | hardware, generate_key_pair |
CKM_RSA_PKCS_PSS | 0x0000000D | 512–4096 | hardware, sign, verify |
CKM_SHA1_RSA_PKCS_PSS | 0x0000000E | 512–4096 | hardware, sign, verify |
CKM_DSA_KEY_PAIR_GEN | 0x00000010 | 512–3072 | hardware, generate_key_pair |
CKM_DSA | 0x00000011 | 512–3072 | hardware, sign, verify |
CKM_DSA_SHA1 | 0x00000012 | 512–3072 | hardware, sign, verify |
CKM_DSA_SHA224 | 0x00000013 | 1024–3072 | hardware, sign, verify |
CKM_DSA_SHA256 | 0x00000014 | 1024–3072 | hardware, sign, verify |
CKM_DSA_SHA384 | 0x00000015 | 1024–3072 | hardware, sign, verify |
CKM_DSA_SHA512 | 0x00000016 | 1024–3072 | hardware, sign, verify |
CKM_DH_PKCS_KEY_PAIR_GEN | 0x00000020 | 512–4096 | hardware, generate_key_pair |
CKM_DH_PKCS_DERIVE | 0x00000021 | 512–4096 | hardware, derive |
CKM_X9_42_DH_KEY_PAIR_GEN | 0x00000030 | 1024–4096 | hardware, generate_key_pair |
CKM_X9_42_DH_DERIVE | 0x00000031 | 1024–4096 | hardware, derive |
CKM_SHA256_RSA_PKCS | 0x00000040 | 512–4096 | hardware, sign, verify |
CKM_SHA384_RSA_PKCS | 0x00000041 | 640–4096 | hardware, sign, verify |
CKM_SHA512_RSA_PKCS | 0x00000042 | 768–4096 | hardware, sign, verify |
CKM_SHA256_RSA_PKCS_PSS | 0x00000043 | 512–4096 | hardware, sign, verify |
CKM_SHA384_RSA_PKCS_PSS | 0x00000044 | 640–4096 | hardware, sign, verify |
CKM_SHA512_RSA_PKCS_PSS | 0x00000045 | 768–4096 | hardware, sign, verify |
CKM_SHA224_RSA_PKCS | 0x00000046 | 512–4096 | hardware, sign, verify |
CKM_SHA224_RSA_PKCS_PSS | 0x00000047 | 512–4096 | hardware, sign, verify |
CKM_SHA3_256_RSA_PKCS | 0x00000060 | 512–4096 | hardware, sign, verify |
CKM_SHA3_384_RSA_PKCS | 0x00000061 | 640–4096 | hardware, sign, verify |
CKM_SHA3_512_RSA_PKCS | 0x00000062 | 768–4096 | hardware, sign, verify |
CKM_SHA3_256_RSA_PKCS_PSS | 0x00000063 | 512–4096 | hardware, sign, verify |
CKM_SHA3_384_RSA_PKCS_PSS | 0x00000064 | 640–4096 | hardware, sign, verify |
CKM_SHA3_512_RSA_PKCS_PSS | 0x00000065 | 768–4096 | hardware, sign, verify |
CKM_SHA3_224_RSA_PKCS | 0x00000066 | 512–4096 | hardware, sign, verify |
CKM_SHA3_224_RSA_PKCS_PSS | 0x00000067 | 512–4096 | hardware, sign, verify |
CKM_RC2_KEY_GEN | 0x00000100 | 1–128 | hardware, generate |
CKM_RC2_ECB | 0x00000101 | 1–128 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_RC2_CBC | 0x00000102 | 1–128 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_RC2_MAC | 0x00000103 | 1–128 | hardware, sign, verify |
CKM_RC2_MAC_GENERAL | 0x00000104 | 1–128 | hardware, sign, verify |
CKM_RC2_CBC_PAD | 0x00000105 | 1–128 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_RC4_KEY_GEN | 0x00000110 | 1–256 | hardware, generate |
CKM_RC4 | 0x00000111 | 1–256 | hardware, encrypt, decrypt |
CKM_DES_KEY_GEN | 0x00000120 | 8–8 | hardware, generate |
CKM_DES_ECB | 0x00000121 | 8–8 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_DES_CBC | 0x00000122 | 8–8 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_DES_MAC | 0x00000123 | 8–8 | hardware, sign, verify |
CKM_DES_MAC_GENERAL | 0x00000124 | 8–8 | hardware, sign, verify |
CKM_DES_CBC_PAD | 0x00000125 | 8–8 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_DES2_KEY_GEN | 0x00000130 | 16–16 | hardware, generate |
CKM_DES3_KEY_GEN | 0x00000131 | 24–24 | hardware, generate |
CKM_DES3_ECB | 0x00000132 | 16–24 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_DES3_CBC | 0x00000133 | 16–24 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_DES3_MAC | 0x00000134 | 16–24 | hardware, sign, verify |
CKM_DES3_MAC_GENERAL | 0x00000135 | 16–24 | hardware, sign, verify |
CKM_DES3_CBC_PAD | 0x00000136 | 16–24 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_DES3_CMAC_GENERAL | 0x00000137 | 16–24 | hardware, sign, verify |
CKM_DES3_CMAC | 0x00000138 | 16–24 | hardware, sign, verify |
CKM_MD2 | 0x00000200 | - | hardware, digest |
CKM_MD2_HMAC | 0x00000201 | - | hardware, sign, verify |
CKM_MD2_HMAC_GENERAL | 0x00000202 | - | hardware, sign, verify |
CKM_MD5 | 0x00000210 | - | hardware, digest |
CKM_MD5_HMAC | 0x00000211 | - | hardware, sign, verify |
CKM_MD5_HMAC_GENERAL | 0x00000212 | - | hardware, sign, verify |
CKM_SHA_1 | 0x00000220 | - | hardware, digest |
CKM_SHA_1_HMAC | 0x00000221 | - | hardware, sign, verify |
CKM_SHA_1_HMAC_GENERAL | 0x00000222 | - | hardware, sign, verify |
CKM_RIPEMD128 | 0x00000230 | - | hardware, digest |
CKM_RIPEMD128_HMAC | 0x00000231 | - | hardware, sign, verify |
CKM_RIPEMD128_HMAC_GENERAL | 0x00000232 | - | hardware, sign, verify |
CKM_RIPEMD160 | 0x00000240 | - | hardware, digest |
CKM_RIPEMD160_HMAC | 0x00000241 | - | hardware, sign, verify |
CKM_RIPEMD160_HMAC_GENERAL | 0x00000242 | - | hardware, sign, verify |
CKM_SHA256 | 0x00000250 | - | hardware, digest |
CKM_SHA256_HMAC | 0x00000251 | - | hardware, sign, verify |
CKM_SHA256_HMAC_GENERAL | 0x00000252 | - | hardware, sign, verify |
CKM_SHA224 | 0x00000255 | - | hardware, digest |
CKM_SHA224_HMAC | 0x00000256 | - | hardware, sign, verify |
CKM_SHA224_HMAC_GENERAL | 0x00000257 | - | hardware, sign, verify |
CKM_SHA384 | 0x00000260 | - | hardware, digest |
CKM_SHA384_HMAC | 0x00000261 | - | hardware, sign, verify |
CKM_SHA384_HMAC_GENERAL | 0x00000262 | - | hardware, sign, verify |
CKM_SHA512 | 0x00000270 | - | hardware, digest |
CKM_SHA512_HMAC | 0x00000271 | - | hardware, sign, verify |
CKM_SHA512_HMAC_GENERAL | 0x00000272 | - | hardware, sign, verify |
CKM_SHA3_256 | 0x000002B0 | - | hardware, digest |
CKM_SHA3_256_HMAC | 0x000002B1 | - | hardware, sign, verify |
CKM_SHA3_256_HMAC_GENERAL | 0x000002B2 | - | hardware, sign, verify |
CKM_SHA3_224 | 0x000002B5 | - | hardware, digest |
CKM_SHA3_224_HMAC | 0x000002B6 | - | hardware, sign, verify |
CKM_SHA3_224_HMAC_GENERAL | 0x000002B7 | - | hardware, sign, verify |
CKM_SHA3_384 | 0x000002C0 | - | hardware, digest |
CKM_SHA3_384_HMAC | 0x000002C1 | - | hardware, sign, verify |
CKM_SHA3_384_HMAC_GENERAL | 0x000002C2 | - | hardware, sign, verify |
CKM_SHA3_512 | 0x000002D0 | - | hardware, digest |
CKM_SHA3_512_HMAC | 0x000002D1 | - | hardware, sign, verify |
CKM_SHA3_512_HMAC_GENERAL | 0x000002D2 | - | hardware, sign, verify |
CKM_CAST5_KEY_GEN | 0x00000320 | 1–16 | hardware, generate |
CKM_CAST5_ECB | 0x00000321 | 1–16 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_CAST5_CBC | 0x00000322 | 1–16 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_CAST5_MAC | 0x00000323 | 1–16 | hardware, sign, verify |
CKM_CAST5_MAC_GENERAL | 0x00000324 | 1–16 | hardware, sign, verify |
CKM_CAST5_CBC_PAD | 0x00000325 | 1–16 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_IDEA_KEY_GEN | 0x00000340 | 16–16 | hardware, generate |
CKM_IDEA_ECB | 0x00000341 | 16–16 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_IDEA_CBC | 0x00000342 | 16–16 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_IDEA_MAC | 0x00000343 | 16–16 | hardware, sign, verify |
CKM_IDEA_MAC_GENERAL | 0x00000344 | 16–16 | hardware, sign, verify |
CKM_IDEA_CBC_PAD | 0x00000345 | 16–16 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_GENERIC_SECRET_KEY_GEN | 0x00000350 | - | hardware, generate |
CKM_SSL3_PRE_MASTER_KEY_GEN | 0x00000370 | 48–48 | hardware, generate |
CKM_SSL3_MASTER_KEY_DERIVE | 0x00000371 | 48–48 | hardware, derive |
CKM_SSL3_KEY_AND_MAC_DERIVE | 0x00000372 | 48–48 | hardware, derive |
CKM_SSL3_MD5_MAC | 0x00000380 | - | hardware, sign, verify |
CKM_SSL3_SHA1_MAC | 0x00000381 | - | hardware, sign, verify |
CKM_MD5_KEY_DERIVATION | 0x00000390 | - | hardware, derive |
CKM_MD2_KEY_DERIVATION | 0x00000391 | - | hardware, derive |
CKM_SHA1_KEY_DERIVATION | 0x00000392 | - | hardware, derive |
CKM_SHA256_KEY_DERIVATION | 0x00000393 | - | hardware, derive |
CKM_SHA384_KEY_DERIVATION | 0x00000394 | - | hardware, derive |
CKM_SHA512_KEY_DERIVATION | 0x00000395 | - | hardware, derive |
CKM_SHA224_KEY_DERIVATION | 0x00000396 | - | hardware, derive |
CKM_SHA3_256_KEY_DERIVATION | 0x00000397 | - | hardware, derive |
CKM_SHA3_224_KEY_DERIVATION | 0x00000398 | - | hardware, derive |
CKM_SHA3_384_KEY_DERIVATION | 0x00000399 | - | hardware, derive |
CKM_SHA3_512_KEY_DERIVATION | 0x0000039A | - | hardware, derive |
CKM_PBE_MD2_DES_CBC | 0x000003A0 | 8–8 | hardware, generate |
CKM_PBE_MD5_DES_CBC | 0x000003A1 | 8–8 | hardware, generate |
CKM_PBE_MD5_CAST5_CBC | 0x000003A4 | 16–16 | hardware, generate |
CKM_PBE_SHA1_CAST5_CBC | 0x000003A5 | 16–16 | hardware, generate |
CKM_PBE_SHA1_RC4_128 | 0x000003A6 | 16–16 | hardware, generate |
CKM_PBE_SHA1_RC4_40 | 0x000003A7 | 5–5 | hardware, generate |
CKM_PBE_SHA1_DES3_EDE_CBC | 0x000003A8 | 24–24 | hardware, generate |
CKM_PBE_SHA1_DES2_EDE_CBC | 0x000003A9 | 16–16 | hardware, generate |
CKM_PBE_SHA1_RC2_128_CBC | 0x000003AA | 16–16 | hardware, generate |
CKM_PBE_SHA1_RC2_40_CBC | 0x000003AB | 5–5 | hardware, generate |
CKM_PBA_SHA1_WITH_SHA1_HMAC | 0x000003C0 | 20–20 | hardware, generate |
CKM_KEY_WRAP_SET_OAEP | 0x00000401 | 512–4096 | hardware, wrap, unwrap |
CKM_ARIA_KEY_GEN | 0x00000560 | 16–32 | hardware, generate |
CKM_ARIA_ECB | 0x00000561 | 16–32 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_ARIA_CBC | 0x00000562 | 16–32 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_ARIA_MAC | 0x00000563 | 16–32 | hardware, sign, verify |
CKM_ARIA_MAC_GENERAL | 0x00000564 | 16–32 | hardware, sign, verify |
CKM_ARIA_CBC_PAD | 0x00000565 | 16–32 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_ECDSA_KEY_PAIR_GEN | 0x00001040 | 64–571 | hardware, generate_key_pair, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
CKM_ECDSA | 0x00001041 | 64–571 | hardware, sign, verify, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
CKM_ECDSA_SHA1 | 0x00001042 | 64–571 | hardware, sign, verify, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
CKM_ECDSA_SHA3_224 | 0x00001047 | 64–571 | hardware, sign, verify, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
CKM_ECDSA_SHA3_256 | 0x00001048 | 64–571 | hardware, sign, verify, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
CKM_ECDSA_SHA3_384 | 0x00001049 | 64–571 | hardware, sign, verify, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
CKM_ECDSA_SHA3_512 | 0x0000104A | 64–571 | hardware, sign, verify, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
CKM_ECDH1_DERIVE | 0x00001050 | 64–571 | hardware, derive, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
CKM_EC_EDWARDS_KEY_PAIR_GEN | 0x00001055 | 64–571 | generate_key_pair, ec_f_p, ec_oid, ec_uncompress |
CKM_EC_MONTGOMERY_KEY_PAIR_GEN | 0x00001056 | 64–571 | hardware, generate_key_pair, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
CKM_EDDSA | 0x00001057 | 64–571 | sign, verify, ec_f_p, ec_oid, ec_uncompress |
CKM_AES_KEY_GEN | 0x00001080 | 16–32 | hardware, generate |
CKM_AES_ECB | 0x00001081 | 16–32 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_AES_CBC | 0x00001082 | 16–32 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_AES_MAC | 0x00001083 | 16–32 | hardware, sign, verify |
CKM_AES_MAC_GENERAL | 0x00001084 | 16–32 | hardware, sign, verify |
CKM_AES_CBC_PAD | 0x00001085 | 16–32 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_AES_CTR | 0x00001086 | 16–32 | hardware, encrypt, decrypt |
CKM_AES_GCM | 0x00001087 | 16–32 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_AES_CCM | 0x00001088 | 16–32 | hardware, encrypt, decrypt |
CKM_AES_CMAC | 0x0000108A | 16–32 | hardware, sign, verify |
CKM_AES_CMAC_GENERAL | 0x0000108B | 16–32 | hardware, sign, verify |
CKM_AES_GMAC | 0x0000108E | 16–32 | hardware, sign, verify |
CKM_BLOWFISH_KEY_GEN | 0x00001090 | 16–32 | hardware, wrap, unwrap |
CKM_BLOWFISH_CBC | 0x00001091 | 16–32 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_DES_ECB_ENCRYPT_DATA | 0x00001100 | 8–8 | hardware, derive |
CKM_DES_CBC_ENCRYPT_DATA | 0x00001101 | 8–8 | hardware, derive |
CKM_DES3_ECB_ENCRYPT_DATA | 0x00001102 | 16–24 | hardware, derive |
CKM_DES3_CBC_ENCRYPT_DATA | 0x00001103 | 16–24 | hardware, derive |
CKM_AES_ECB_ENCRYPT_DATA | 0x00001104 | 16–32 | hardware, derive |
CKM_AES_CBC_ENCRYPT_DATA | 0x00001105 | 16–32 | hardware, derive |
CKM_DSA_PARAMETER_GEN | 0x00002000 | 512–3072 | hardware, generate |
CKM_DH_PKCS_PARAMETER_GEN | 0x00002001 | 512–4096 | hardware, generate |
CKM_X9_42_DH_PARAMETER_GEN | 0x00002002 | 1024–4096 | hardware, generate |
CKM_AES_OFB | 0x00002104 | 16–32 | hardware, encrypt, decrypt, wrap, unwrap |
CKM_AES_KEY_WRAP | 0x00002109 | 16–32 | hardware, wrap, unwrap |
CKM_AES_KEY_WRAP_PAD | 0x0000210A | 16–32 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x80000013 | 512–3072 | hardware, sign, verify |
| vendor-defined, unnamed | 0x80000032 | 1024–3072 | hardware, sign, verify |
| vendor-defined, unnamed | 0x80000033 | 1024–3072 | hardware, sign, verify |
| vendor-defined, unnamed | 0x80000034 | 1024–3072 | hardware, sign, verify |
| vendor-defined, unnamed | 0x80000035 | 1024–3072 | hardware, sign, verify |
| vendor-defined, unnamed | 0x80000036 | 1024–3072 | hardware, sign, verify |
| vendor-defined, unnamed | 0x80000037 | 1024–3072 | hardware, sign, verify |
| vendor-defined, unnamed | 0x80000101 | 1–128 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x80000121 | 8–8 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x80000122 | 64–571 | hardware, sign, verify, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80000123 | 64–571 | hardware, sign, verify, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80000124 | 64–571 | hardware, sign, verify, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80000125 | 64–571 | hardware, sign, verify, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80000132 | 16–24 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x80000134 | 16–24 | hardware, sign, verify |
| vendor-defined, unnamed | 0x80000135 | 16–24 | hardware, sign, verify |
| vendor-defined, unnamed | 0x80000161 | 64–571 | hardware, sign, verify, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80000170 | 16–32 | hardware, wrap, unwrap |
| vendor-defined, unnamed | 0x80000171 | 16–32 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x80000172 | 16–24 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x80000200 | - | hardware, digest |
| vendor-defined, unnamed | 0x80000204 | - | hardware, digest |
| vendor-defined, unnamed | 0x80000205 | - | hardware, digest |
| vendor-defined, unnamed | 0x80000321 | 1–16 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x80000341 | 16–16 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x8000038E | 8–8 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x8000038F | 16–24 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x80000400 | 2048–4096 | hardware, generate_key_pair |
| vendor-defined, unnamed | 0x80000411 | 16–32 | hardware, unwrap |
| vendor-defined, unnamed | 0x80000412 | 16–32 | hardware, wrap |
| vendor-defined, unnamed | 0x80000413 | 16–32 | hardware, wrap |
| vendor-defined, unnamed | 0x80000500 | 8–8 | hardware, derive |
| vendor-defined, unnamed | 0x80000501 | 8–8 | hardware, derive |
| vendor-defined, unnamed | 0x80000502 | 16–24 | hardware, derive |
| vendor-defined, unnamed | 0x80000503 | 16–24 | hardware, derive |
| vendor-defined, unnamed | 0x80000510 | 16–24 | hardware, sign, verify |
| vendor-defined, unnamed | 0x80000511 | 16–16 | hardware, derive |
| vendor-defined, unnamed | 0x80000512 | 16–16 | hardware, sign |
| vendor-defined, unnamed | 0x80000513 | 16–32 | hardware, sign |
| vendor-defined, unnamed | 0x80000514 | 16–32 | hardware, derive |
| vendor-defined, unnamed | 0x80000515 | - | hardware, digest |
| vendor-defined, unnamed | 0x80000600 | 512–4096 | hardware, sign |
| vendor-defined, unnamed | 0x80000935 | - | hardware, derive |
| vendor-defined, unnamed | 0x80000940 | 8–8 | hardware, encrypt, decrypt |
| vendor-defined, unnamed | 0x80000941 | 16–24 | hardware, encrypt, decrypt |
| vendor-defined, unnamed | 0x80000950 | - | hardware, wrap, unwrap |
| vendor-defined, unnamed | 0x80000951 | - | hardware, derive |
| vendor-defined, unnamed | 0x80000952 | - | hardware, derive |
| vendor-defined, unnamed | 0x80000953 | - | hardware, derive |
| vendor-defined, unnamed | 0x80000954 | - | hardware, wrap, unwrap |
| vendor-defined, unnamed | 0x80000955 | - | hardware, derive |
| vendor-defined, unnamed | 0x80000961 | - | hardware, wrap, unwrap |
| vendor-defined, unnamed | 0x80000962 | - | hardware, wrap, unwrap |
| vendor-defined, unnamed | 0x80000963 | 16–32 | hardware, wrap, unwrap |
| vendor-defined, unnamed | 0x80000964 | 16–16 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x80000965 | 16–32 | hardware, wrap, unwrap |
| vendor-defined, unnamed | 0x80000966 | 16–32 | hardware, encrypt, decrypt |
| vendor-defined, unnamed | 0x80000970 | 16–32 | hardware, wrap, unwrap |
| vendor-defined, unnamed | 0x80000971 | - | hardware, wrap, unwrap |
| vendor-defined, unnamed | 0x800009A0 | 1–0 | generate |
| vendor-defined, unnamed | 0x800009A1 | 1–0 | generate |
| vendor-defined, unnamed | 0x800009B0 | 16–16 | hardware, sign, verify |
| vendor-defined, unnamed | 0x800009C0 | - | hardware, derive |
| vendor-defined, unnamed | 0x800009D0 | 16–16 | hardware, generate |
| vendor-defined, unnamed | 0x800009D1 | 16–16 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x800009D2 | 16–16 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x800009D3 | 16–16 | hardware, sign, verify |
| vendor-defined, unnamed | 0x800009D4 | 16–16 | hardware, sign, verify |
| vendor-defined, unnamed | 0x800009D5 | 16–16 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x800009D6 | 16–16 | hardware, encrypt, decrypt, wrap, unwrap |
| vendor-defined, unnamed | 0x800009E0 | 2048–4096 | hardware, wrap, unwrap |
| vendor-defined, unnamed | 0x800009F0 | - | hardware, derive |
| vendor-defined, unnamed | 0x800009F1 | - | hardware, derive |
| vendor-defined, unnamed | 0x800009F2 | - | hardware, wrap, unwrap |
| vendor-defined, unnamed | 0x800009F3 | - | hardware, wrap, unwrap |
| vendor-defined, unnamed | 0x80000A00 | 64–571 | hardware, encrypt, decrypt, ec_f_p, ec_f_2m, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80000A10 | 1024–4096 | hardware, extension + undefined bit 0x40000000 |
| vendor-defined, unnamed | 0x80000C09 | 64–571 | sign, verify, ec_f_p, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80000C0A | 64–571 | sign, verify, ec_f_p, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80000C0B | 64–571 | sign, verify, ec_f_p, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80000C0C | 64–571 | sign, verify, ec_f_p, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80000C0D | 64–571 | sign, verify, ec_f_p, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80000E00 | 64–571 | hardware, derive, ec_f_p, ec_uncompress |
| vendor-defined, unnamed | 0x80000E01 | 64–571 | hardware, derive, ec_f_p, ec_uncompress |
| vendor-defined, unnamed | 0x80001000 | 521–521 | hardware, generate_key_pair |
| vendor-defined, unnamed | 0x80001001 | 521–521 | hardware, generate |
| vendor-defined, unnamed | 0x80001002 | 16–32 | hardware, derive |
| vendor-defined, unnamed | 0x80001003 | 16–32 | hardware, derive |
| vendor-defined, unnamed | 0x80001004 | 32–32 | hardware, encrypt, decrypt |
| vendor-defined, unnamed | 0x80001C0A | 64–571 | sign, verify, ec_f_p, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80001C0B | 64–571 | sign, verify, ec_f_p, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80001C0C | 64–571 | sign, verify, ec_f_p, ec_oid, ec_uncompress |
| vendor-defined, unnamed | 0x80001C0D | 64–571 | sign, verify, ec_f_p, ec_oid, ec_uncompress |
observed · Software Only
7.3 · Cryptoki 2.20 ·
slot 0 ·
C_GetMechanismInfo · 2026-09-10
This library is one column of Same name, different number, the table of constants that carry one name and more than one value.
Return values with a note for this library
CKR_GENERAL_ERROR· Not a failed call but a broken library. The specification says nothing further will work, so retrying it is wasted effort.CKR_MECHANISM_INVALID· The mechanism is unknown here, or not valid for the operation you used it in. Check the slot's own list rather than the header you compiled against.CKR_PIN_LOCKED· The token has locked the PIN after too many failed attempts. On most HSMs this is not something you can wait out, and on some it destroys the partition.
How this page was made
The return value table is the vendor's own published list, reduced to the constant name and its number. Nothing else from that document is reproduced, and nothing on this page comes from the SDK itself. The mechanism table is from the read-only probe against the software-only token that ships with the SDK. Values below the vendor range are named from the base specification. Values above it are left as numbers, because the vendor does not publish the numbers.
Scope. The return values are the ones Thales documents for ProtectToolkit-C, the same list for 5.9 and 7, which is what the library is specified to return and not necessarily what any particular firmware implements. The mechanism list is read from the software-only token that ships with ProtectToolkit 7.3.1 (with the 5.9 differences stated above), which is not a ProtectServer card and is not running in FIPS mode. A hardware token under a restrictive security policy exposes fewer mechanisms and narrower key size ranges. Treat all of it as what the library offers, not as what a configured HSM will let you do.
Sources
- PTK-C vendor-defined error codes, ProtectToolkit 7, Thales. Read 2026-09-10. Used for return value names and integer values.
- PTK-C vendor-defined error codes, ProtectToolkit 5.9, Thales. Read 2026-09-10. Used for confirming the table is unchanged since 5.9.
- ProtectToolkit-C mechanisms, ProtectToolkit 7, Thales. Read 2026-09-10. Used for the names of the mechanisms added in 7, which it lists without numbers.
- ProtectToolkit-C mechanisms, ProtectToolkit 5.9, Thales. Read 2026-09-10. Used for confirming that the vendor mechanisms are documented by name only, without numbers.
Names and numbers only. No vendor documentation text is reproduced here.