diff options
Diffstat (limited to 'security/nss/cmd/lib/pk11table.c')
-rw-r--r-- | security/nss/cmd/lib/pk11table.c | 1517 |
1 files changed, 1517 insertions, 0 deletions
diff --git a/security/nss/cmd/lib/pk11table.c b/security/nss/cmd/lib/pk11table.c new file mode 100644 index 000000000..15c0a8d1e --- /dev/null +++ b/security/nss/cmd/lib/pk11table.c @@ -0,0 +1,1517 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "pk11table.h" + +const char *_valueString[] = { + "None", + "Variable", + "CK_ULONG", + "Data", + "UTF8", + "CK_INFO", + "CK_SLOT_INFO", + "CK_TOKEN_INFO", + "CK_SESSION_INFO", + "CK_ATTRIBUTE", + "CK_MECHANISM", + "CK_MECHANISM_INFO", + "CK_C_INITIALIZE_ARGS", + "CK_FUNCTION_LIST" +}; + +const char **valueString = &_valueString[0]; +const int valueCount = sizeof(_valueString) / sizeof(_valueString[0]); + +const char *_constTypeString[] = { + "None", + "Bool", + "InfoFlags", + "SlotFlags", + "TokenFlags", + "SessionFlags", + "MechanismFlags", + "InitializeFlags", + "Users", + "SessionState", + "Object", + "Hardware", + "KeyType", + "CertificateType", + "Attribute", + "Mechanism", + "Result", + "Trust", + "AvailableSizes", + "CurrentSize" +}; + +const char **constTypeString = &_constTypeString[0]; +const int constTypeCount = sizeof(_constTypeString) / sizeof(_constTypeString[0]); + +#define mkEntry(x, t) \ + { \ + #x, x, Const##t, ConstNone \ + } +#define mkEntry2(x, t, t2) \ + { \ + #x, x, Const##t, Const##t2 \ + } + +const Constant _consts[] = { + mkEntry(CK_FALSE, Bool), + mkEntry(CK_TRUE, Bool), + + mkEntry(CKF_TOKEN_PRESENT, SlotFlags), + mkEntry(CKF_REMOVABLE_DEVICE, SlotFlags), + mkEntry(CKF_HW_SLOT, SlotFlags), + + mkEntry(CKF_RNG, TokenFlags), + mkEntry(CKF_WRITE_PROTECTED, TokenFlags), + mkEntry(CKF_LOGIN_REQUIRED, TokenFlags), + mkEntry(CKF_USER_PIN_INITIALIZED, TokenFlags), + mkEntry(CKF_RESTORE_KEY_NOT_NEEDED, TokenFlags), + mkEntry(CKF_CLOCK_ON_TOKEN, TokenFlags), + mkEntry(CKF_PROTECTED_AUTHENTICATION_PATH, TokenFlags), + mkEntry(CKF_DUAL_CRYPTO_OPERATIONS, TokenFlags), + mkEntry(CKF_TOKEN_INITIALIZED, TokenFlags), + mkEntry(CKF_SECONDARY_AUTHENTICATION, TokenFlags), + mkEntry(CKF_USER_PIN_COUNT_LOW, TokenFlags), + mkEntry(CKF_USER_PIN_FINAL_TRY, TokenFlags), + mkEntry(CKF_USER_PIN_LOCKED, TokenFlags), + mkEntry(CKF_USER_PIN_TO_BE_CHANGED, TokenFlags), + mkEntry(CKF_SO_PIN_COUNT_LOW, TokenFlags), + mkEntry(CKF_SO_PIN_FINAL_TRY, TokenFlags), + mkEntry(CKF_SO_PIN_LOCKED, TokenFlags), + mkEntry(CKF_SO_PIN_TO_BE_CHANGED, TokenFlags), + + mkEntry(CKF_RW_SESSION, SessionFlags), + mkEntry(CKF_SERIAL_SESSION, SessionFlags), + + mkEntry(CKF_HW, MechanismFlags), + mkEntry(CKF_ENCRYPT, MechanismFlags), + mkEntry(CKF_DECRYPT, MechanismFlags), + mkEntry(CKF_DIGEST, MechanismFlags), + mkEntry(CKF_SIGN, MechanismFlags), + mkEntry(CKF_SIGN_RECOVER, MechanismFlags), + mkEntry(CKF_VERIFY, MechanismFlags), + mkEntry(CKF_VERIFY_RECOVER, MechanismFlags), + mkEntry(CKF_GENERATE, MechanismFlags), + mkEntry(CKF_GENERATE_KEY_PAIR, MechanismFlags), + mkEntry(CKF_WRAP, MechanismFlags), + mkEntry(CKF_UNWRAP, MechanismFlags), + mkEntry(CKF_DERIVE, MechanismFlags), + mkEntry(CKF_EC_FP, MechanismFlags), + mkEntry(CKF_EC_F_2M, MechanismFlags), + mkEntry(CKF_EC_ECPARAMETERS, MechanismFlags), + mkEntry(CKF_EC_NAMEDCURVE, MechanismFlags), + mkEntry(CKF_EC_UNCOMPRESS, MechanismFlags), + mkEntry(CKF_EC_COMPRESS, MechanismFlags), + + mkEntry(CKF_LIBRARY_CANT_CREATE_OS_THREADS, InitializeFlags), + mkEntry(CKF_OS_LOCKING_OK, InitializeFlags), + + mkEntry(CKU_SO, Users), + mkEntry(CKU_USER, Users), + + mkEntry(CKS_RO_PUBLIC_SESSION, SessionState), + mkEntry(CKS_RO_USER_FUNCTIONS, SessionState), + mkEntry(CKS_RW_PUBLIC_SESSION, SessionState), + mkEntry(CKS_RW_USER_FUNCTIONS, SessionState), + mkEntry(CKS_RW_SO_FUNCTIONS, SessionState), + + mkEntry(CKO_DATA, Object), + mkEntry(CKO_CERTIFICATE, Object), + mkEntry(CKO_PUBLIC_KEY, Object), + mkEntry(CKO_PRIVATE_KEY, Object), + mkEntry(CKO_SECRET_KEY, Object), + mkEntry(CKO_HW_FEATURE, Object), + mkEntry(CKO_DOMAIN_PARAMETERS, Object), + mkEntry(CKO_KG_PARAMETERS, Object), + mkEntry(CKO_NSS_CRL, Object), + mkEntry(CKO_NSS_SMIME, Object), + mkEntry(CKO_NSS_TRUST, Object), + mkEntry(CKO_NSS_BUILTIN_ROOT_LIST, Object), + + mkEntry(CKH_MONOTONIC_COUNTER, Hardware), + mkEntry(CKH_CLOCK, Hardware), + + mkEntry(CKK_RSA, KeyType), + mkEntry(CKK_DSA, KeyType), + mkEntry(CKK_DH, KeyType), + mkEntry(CKK_ECDSA, KeyType), + mkEntry(CKK_EC, KeyType), + mkEntry(CKK_X9_42_DH, KeyType), + mkEntry(CKK_KEA, KeyType), + mkEntry(CKK_GENERIC_SECRET, KeyType), + mkEntry(CKK_RC2, KeyType), + mkEntry(CKK_RC4, KeyType), + mkEntry(CKK_DES, KeyType), + mkEntry(CKK_DES2, KeyType), + mkEntry(CKK_DES3, KeyType), + mkEntry(CKK_CAST, KeyType), + mkEntry(CKK_CAST3, KeyType), + mkEntry(CKK_CAST5, KeyType), + mkEntry(CKK_CAST128, KeyType), + mkEntry(CKK_RC5, KeyType), + mkEntry(CKK_IDEA, KeyType), + mkEntry(CKK_SKIPJACK, KeyType), + mkEntry(CKK_BATON, KeyType), + mkEntry(CKK_JUNIPER, KeyType), + mkEntry(CKK_CDMF, KeyType), + mkEntry(CKK_AES, KeyType), + mkEntry(CKK_CAMELLIA, KeyType), + mkEntry(CKK_NSS_PKCS8, KeyType), + + mkEntry(CKC_X_509, CertType), + mkEntry(CKC_X_509_ATTR_CERT, CertType), + + mkEntry2(CKA_CLASS, Attribute, Object), + mkEntry2(CKA_TOKEN, Attribute, Bool), + mkEntry2(CKA_PRIVATE, Attribute, Bool), + mkEntry2(CKA_LABEL, Attribute, None), + mkEntry2(CKA_APPLICATION, Attribute, None), + mkEntry2(CKA_VALUE, Attribute, None), + mkEntry2(CKA_OBJECT_ID, Attribute, None), + mkEntry2(CKA_CERTIFICATE_TYPE, Attribute, CertType), + mkEntry2(CKA_ISSUER, Attribute, None), + mkEntry2(CKA_SERIAL_NUMBER, Attribute, None), + mkEntry2(CKA_AC_ISSUER, Attribute, None), + mkEntry2(CKA_OWNER, Attribute, None), + mkEntry2(CKA_ATTR_TYPES, Attribute, None), + mkEntry2(CKA_TRUSTED, Attribute, Bool), + mkEntry2(CKA_KEY_TYPE, Attribute, KeyType), + mkEntry2(CKA_SUBJECT, Attribute, None), + mkEntry2(CKA_ID, Attribute, None), + mkEntry2(CKA_SENSITIVE, Attribute, Bool), + mkEntry2(CKA_ENCRYPT, Attribute, Bool), + mkEntry2(CKA_DECRYPT, Attribute, Bool), + mkEntry2(CKA_WRAP, Attribute, Bool), + mkEntry2(CKA_UNWRAP, Attribute, Bool), + mkEntry2(CKA_SIGN, Attribute, Bool), + mkEntry2(CKA_SIGN_RECOVER, Attribute, Bool), + mkEntry2(CKA_VERIFY, Attribute, Bool), + mkEntry2(CKA_VERIFY_RECOVER, Attribute, Bool), + mkEntry2(CKA_DERIVE, Attribute, Bool), + mkEntry2(CKA_START_DATE, Attribute, None), + mkEntry2(CKA_END_DATE, Attribute, None), + mkEntry2(CKA_MODULUS, Attribute, None), + mkEntry2(CKA_MODULUS_BITS, Attribute, None), + mkEntry2(CKA_PUBLIC_EXPONENT, Attribute, None), + mkEntry2(CKA_PRIVATE_EXPONENT, Attribute, None), + mkEntry2(CKA_PRIME_1, Attribute, None), + mkEntry2(CKA_PRIME_2, Attribute, None), + mkEntry2(CKA_EXPONENT_1, Attribute, None), + mkEntry2(CKA_EXPONENT_2, Attribute, None), + mkEntry2(CKA_COEFFICIENT, Attribute, None), + mkEntry2(CKA_PRIME, Attribute, None), + mkEntry2(CKA_SUBPRIME, Attribute, None), + mkEntry2(CKA_BASE, Attribute, None), + mkEntry2(CKA_PRIME_BITS, Attribute, None), + mkEntry2(CKA_SUB_PRIME_BITS, Attribute, None), + mkEntry2(CKA_VALUE_BITS, Attribute, None), + mkEntry2(CKA_VALUE_LEN, Attribute, None), + mkEntry2(CKA_EXTRACTABLE, Attribute, Bool), + mkEntry2(CKA_LOCAL, Attribute, Bool), + mkEntry2(CKA_NEVER_EXTRACTABLE, Attribute, Bool), + mkEntry2(CKA_ALWAYS_SENSITIVE, Attribute, Bool), + mkEntry2(CKA_KEY_GEN_MECHANISM, Attribute, Mechanism), + mkEntry2(CKA_MODIFIABLE, Attribute, Bool), + mkEntry2(CKA_ECDSA_PARAMS, Attribute, None), + mkEntry2(CKA_EC_PARAMS, Attribute, None), + mkEntry2(CKA_EC_POINT, Attribute, None), + mkEntry2(CKA_SECONDARY_AUTH, Attribute, None), + mkEntry2(CKA_AUTH_PIN_FLAGS, Attribute, None), + mkEntry2(CKA_HW_FEATURE_TYPE, Attribute, Hardware), + mkEntry2(CKA_RESET_ON_INIT, Attribute, Bool), + mkEntry2(CKA_HAS_RESET, Attribute, Bool), + mkEntry2(CKA_NSS_URL, Attribute, None), + mkEntry2(CKA_NSS_EMAIL, Attribute, None), + mkEntry2(CKA_NSS_SMIME_INFO, Attribute, None), + mkEntry2(CKA_NSS_SMIME_TIMESTAMP, Attribute, None), + mkEntry2(CKA_NSS_PKCS8_SALT, Attribute, None), + mkEntry2(CKA_NSS_PASSWORD_CHECK, Attribute, None), + mkEntry2(CKA_NSS_EXPIRES, Attribute, None), + mkEntry2(CKA_NSS_KRL, Attribute, None), + mkEntry2(CKA_NSS_PQG_COUNTER, Attribute, None), + mkEntry2(CKA_NSS_PQG_SEED, Attribute, None), + mkEntry2(CKA_NSS_PQG_H, Attribute, None), + mkEntry2(CKA_NSS_PQG_SEED_BITS, Attribute, None), + mkEntry2(CKA_TRUST_DIGITAL_SIGNATURE, Attribute, Trust), + mkEntry2(CKA_TRUST_NON_REPUDIATION, Attribute, Trust), + mkEntry2(CKA_TRUST_KEY_ENCIPHERMENT, Attribute, Trust), + mkEntry2(CKA_TRUST_DATA_ENCIPHERMENT, Attribute, Trust), + mkEntry2(CKA_TRUST_KEY_AGREEMENT, Attribute, Trust), + mkEntry2(CKA_TRUST_KEY_CERT_SIGN, Attribute, Trust), + mkEntry2(CKA_TRUST_CRL_SIGN, Attribute, Trust), + mkEntry2(CKA_TRUST_SERVER_AUTH, Attribute, Trust), + mkEntry2(CKA_TRUST_CLIENT_AUTH, Attribute, Trust), + mkEntry2(CKA_TRUST_CODE_SIGNING, Attribute, Trust), + mkEntry2(CKA_TRUST_EMAIL_PROTECTION, Attribute, Trust), + mkEntry2(CKA_TRUST_IPSEC_END_SYSTEM, Attribute, Trust), + mkEntry2(CKA_TRUST_IPSEC_TUNNEL, Attribute, Trust), + mkEntry2(CKA_TRUST_IPSEC_USER, Attribute, Trust), + mkEntry2(CKA_TRUST_TIME_STAMPING, Attribute, Trust), + mkEntry2(CKA_CERT_SHA1_HASH, Attribute, None), + mkEntry2(CKA_CERT_MD5_HASH, Attribute, None), + mkEntry2(CKA_NETSCAPE_DB, Attribute, None), + mkEntry2(CKA_NETSCAPE_TRUST, Attribute, Trust), + + mkEntry(CKM_RSA_PKCS, Mechanism), + mkEntry(CKM_RSA_9796, Mechanism), + mkEntry(CKM_RSA_X_509, Mechanism), + mkEntry(CKM_RSA_PKCS_KEY_PAIR_GEN, Mechanism), + mkEntry(CKM_MD2_RSA_PKCS, Mechanism), + mkEntry(CKM_MD5_RSA_PKCS, Mechanism), + mkEntry(CKM_SHA1_RSA_PKCS, Mechanism), + mkEntry(CKM_RIPEMD128_RSA_PKCS, Mechanism), + mkEntry(CKM_RIPEMD160_RSA_PKCS, Mechanism), + mkEntry(CKM_RSA_PKCS_OAEP, Mechanism), + mkEntry(CKM_RSA_X9_31_KEY_PAIR_GEN, Mechanism), + mkEntry(CKM_RSA_X9_31, Mechanism), + mkEntry(CKM_SHA1_RSA_X9_31, Mechanism), + mkEntry(CKM_DSA_KEY_PAIR_GEN, Mechanism), + mkEntry(CKM_DSA, Mechanism), + mkEntry(CKM_DSA_SHA1, Mechanism), + mkEntry(CKM_DH_PKCS_KEY_PAIR_GEN, Mechanism), + mkEntry(CKM_DH_PKCS_DERIVE, Mechanism), + mkEntry(CKM_X9_42_DH_DERIVE, Mechanism), + mkEntry(CKM_X9_42_DH_HYBRID_DERIVE, Mechanism), + mkEntry(CKM_X9_42_MQV_DERIVE, Mechanism), + mkEntry(CKM_SHA256_RSA_PKCS, Mechanism), + mkEntry(CKM_SHA384_RSA_PKCS, Mechanism), + mkEntry(CKM_SHA512_RSA_PKCS, Mechanism), + mkEntry(CKM_RC2_KEY_GEN, Mechanism), + mkEntry(CKM_RC2_ECB, Mechanism), + mkEntry(CKM_RC2_CBC, Mechanism), + mkEntry(CKM_RC2_MAC, Mechanism), + mkEntry(CKM_RC2_MAC_GENERAL, Mechanism), + mkEntry(CKM_RC2_CBC_PAD, Mechanism), + mkEntry(CKM_RC4_KEY_GEN, Mechanism), + mkEntry(CKM_RC4, Mechanism), + mkEntry(CKM_DES_KEY_GEN, Mechanism), + mkEntry(CKM_DES_ECB, Mechanism), + mkEntry(CKM_DES_CBC, Mechanism), + mkEntry(CKM_DES_MAC, Mechanism), + mkEntry(CKM_DES_MAC_GENERAL, Mechanism), + mkEntry(CKM_DES_CBC_PAD, Mechanism), + mkEntry(CKM_DES2_KEY_GEN, Mechanism), + mkEntry(CKM_DES3_KEY_GEN, Mechanism), + mkEntry(CKM_DES3_ECB, Mechanism), + mkEntry(CKM_DES3_CBC, Mechanism), + mkEntry(CKM_DES3_MAC, Mechanism), + mkEntry(CKM_DES3_MAC_GENERAL, Mechanism), + mkEntry(CKM_DES3_CBC_PAD, Mechanism), + mkEntry(CKM_CDMF_KEY_GEN, Mechanism), + mkEntry(CKM_CDMF_ECB, Mechanism), + mkEntry(CKM_CDMF_CBC, Mechanism), + mkEntry(CKM_CDMF_MAC, Mechanism), + mkEntry(CKM_CDMF_MAC_GENERAL, Mechanism), + mkEntry(CKM_CDMF_CBC_PAD, Mechanism), + mkEntry(CKM_MD2, Mechanism), + mkEntry(CKM_MD2_HMAC, Mechanism), + mkEntry(CKM_MD2_HMAC_GENERAL, Mechanism), + mkEntry(CKM_MD5, Mechanism), + mkEntry(CKM_MD5_HMAC, Mechanism), + mkEntry(CKM_MD5_HMAC_GENERAL, Mechanism), + mkEntry(CKM_SHA_1, Mechanism), + mkEntry(CKM_SHA_1_HMAC, Mechanism), + mkEntry(CKM_SHA_1_HMAC_GENERAL, Mechanism), + mkEntry(CKM_RIPEMD128, Mechanism), + mkEntry(CKM_RIPEMD128_HMAC, Mechanism), + mkEntry(CKM_RIPEMD128_HMAC_GENERAL, Mechanism), + mkEntry(CKM_RIPEMD160, Mechanism), + mkEntry(CKM_RIPEMD160_HMAC, Mechanism), + mkEntry(CKM_RIPEMD160_HMAC_GENERAL, Mechanism), + mkEntry(CKM_SHA256, Mechanism), + mkEntry(CKM_SHA256_HMAC_GENERAL, Mechanism), + mkEntry(CKM_SHA256_HMAC, Mechanism), + mkEntry(CKM_SHA384, Mechanism), + mkEntry(CKM_SHA384_HMAC_GENERAL, Mechanism), + mkEntry(CKM_SHA384_HMAC, Mechanism), + mkEntry(CKM_SHA512, Mechanism), + mkEntry(CKM_SHA512_HMAC_GENERAL, Mechanism), + mkEntry(CKM_SHA512_HMAC, Mechanism), + mkEntry(CKM_CAST_KEY_GEN, Mechanism), + mkEntry(CKM_CAST_ECB, Mechanism), + mkEntry(CKM_CAST_CBC, Mechanism), + mkEntry(CKM_CAST_MAC, Mechanism), + mkEntry(CKM_CAST_MAC_GENERAL, Mechanism), + mkEntry(CKM_CAST_CBC_PAD, Mechanism), + mkEntry(CKM_CAST3_KEY_GEN, Mechanism), + mkEntry(CKM_CAST3_ECB, Mechanism), + mkEntry(CKM_CAST3_CBC, Mechanism), + mkEntry(CKM_CAST3_MAC, Mechanism), + mkEntry(CKM_CAST3_MAC_GENERAL, Mechanism), + mkEntry(CKM_CAST3_CBC_PAD, Mechanism), + mkEntry(CKM_CAST5_KEY_GEN, Mechanism), + mkEntry(CKM_CAST128_KEY_GEN, Mechanism), + mkEntry(CKM_CAST5_ECB, Mechanism), + mkEntry(CKM_CAST128_ECB, Mechanism), + mkEntry(CKM_CAST5_CBC, Mechanism), + mkEntry(CKM_CAST128_CBC, Mechanism), + mkEntry(CKM_CAST5_MAC, Mechanism), + mkEntry(CKM_CAST128_MAC, Mechanism), + mkEntry(CKM_CAST5_MAC_GENERAL, Mechanism), + mkEntry(CKM_CAST128_MAC_GENERAL, Mechanism), + mkEntry(CKM_CAST5_CBC_PAD, Mechanism), + mkEntry(CKM_CAST128_CBC_PAD, Mechanism), + mkEntry(CKM_RC5_KEY_GEN, Mechanism), + mkEntry(CKM_RC5_ECB, Mechanism), + mkEntry(CKM_RC5_CBC, Mechanism), + mkEntry(CKM_RC5_MAC, Mechanism), + mkEntry(CKM_RC5_MAC_GENERAL, Mechanism), + mkEntry(CKM_RC5_CBC_PAD, Mechanism), + mkEntry(CKM_IDEA_KEY_GEN, Mechanism), + mkEntry(CKM_IDEA_ECB, Mechanism), + mkEntry(CKM_IDEA_CBC, Mechanism), + mkEntry(CKM_IDEA_MAC, Mechanism), + mkEntry(CKM_IDEA_MAC_GENERAL, Mechanism), + mkEntry(CKM_IDEA_CBC_PAD, Mechanism), + mkEntry(CKM_GENERIC_SECRET_KEY_GEN, Mechanism), + mkEntry(CKM_CONCATENATE_BASE_AND_KEY, Mechanism), + mkEntry(CKM_CONCATENATE_BASE_AND_DATA, Mechanism), + mkEntry(CKM_CONCATENATE_DATA_AND_BASE, Mechanism), + mkEntry(CKM_XOR_BASE_AND_DATA, Mechanism), + mkEntry(CKM_EXTRACT_KEY_FROM_KEY, Mechanism), + mkEntry(CKM_SSL3_PRE_MASTER_KEY_GEN, Mechanism), + mkEntry(CKM_SSL3_MASTER_KEY_DERIVE, Mechanism), + mkEntry(CKM_SSL3_KEY_AND_MAC_DERIVE, Mechanism), + mkEntry(CKM_SSL3_MASTER_KEY_DERIVE_DH, Mechanism), + mkEntry(CKM_TLS_PRE_MASTER_KEY_GEN, Mechanism), + mkEntry(CKM_TLS_MASTER_KEY_DERIVE, Mechanism), + mkEntry(CKM_NSS_TLS_MASTER_KEY_DERIVE_SHA256, Mechanism), + mkEntry(CKM_TLS_KEY_AND_MAC_DERIVE, Mechanism), + mkEntry(CKM_NSS_TLS_KEY_AND_MAC_DERIVE_SHA256, Mechanism), + mkEntry(CKM_TLS_MASTER_KEY_DERIVE_DH, Mechanism), + mkEntry(CKM_NSS_TLS_MASTER_KEY_DERIVE_DH_SHA256, Mechanism), + mkEntry(CKM_SSL3_MD5_MAC, Mechanism), + mkEntry(CKM_SSL3_SHA1_MAC, Mechanism), + mkEntry(CKM_MD5_KEY_DERIVATION, Mechanism), + mkEntry(CKM_MD2_KEY_DERIVATION, Mechanism), + mkEntry(CKM_SHA1_KEY_DERIVATION, Mechanism), + mkEntry(CKM_SHA256_KEY_DERIVATION, Mechanism), + mkEntry(CKM_SHA384_KEY_DERIVATION, Mechanism), + mkEntry(CKM_SHA512_KEY_DERIVATION, Mechanism), + mkEntry(CKM_PBE_MD2_DES_CBC, Mechanism), + mkEntry(CKM_PBE_MD5_DES_CBC, Mechanism), + mkEntry(CKM_PBE_MD5_CAST_CBC, Mechanism), + mkEntry(CKM_PBE_MD5_CAST3_CBC, Mechanism), + mkEntry(CKM_PBE_MD5_CAST5_CBC, Mechanism), + mkEntry(CKM_PBE_MD5_CAST128_CBC, Mechanism), + mkEntry(CKM_PBE_SHA1_CAST5_CBC, Mechanism), + mkEntry(CKM_PBE_SHA1_CAST128_CBC, Mechanism), + mkEntry(CKM_PBE_SHA1_RC4_128, Mechanism), + mkEntry(CKM_PBE_SHA1_RC4_40, Mechanism), + mkEntry(CKM_PBE_SHA1_DES3_EDE_CBC, Mechanism), + mkEntry(CKM_PBE_SHA1_DES2_EDE_CBC, Mechanism), + mkEntry(CKM_PBE_SHA1_RC2_128_CBC, Mechanism), + mkEntry(CKM_PBE_SHA1_RC2_40_CBC, Mechanism), + mkEntry(CKM_PKCS5_PBKD2, Mechanism), + mkEntry(CKM_PBA_SHA1_WITH_SHA1_HMAC, Mechanism), + mkEntry(CKM_KEY_WRAP_LYNKS, Mechanism), + mkEntry(CKM_KEY_WRAP_SET_OAEP, Mechanism), + mkEntry(CKM_SKIPJACK_KEY_GEN, Mechanism), + mkEntry(CKM_SKIPJACK_ECB64, Mechanism), + mkEntry(CKM_SKIPJACK_CBC64, Mechanism), + mkEntry(CKM_SKIPJACK_OFB64, Mechanism), + mkEntry(CKM_SKIPJACK_CFB64, Mechanism), + mkEntry(CKM_SKIPJACK_CFB32, Mechanism), + mkEntry(CKM_SKIPJACK_CFB16, Mechanism), + mkEntry(CKM_SKIPJACK_CFB8, Mechanism), + mkEntry(CKM_SKIPJACK_WRAP, Mechanism), + mkEntry(CKM_SKIPJACK_PRIVATE_WRAP, Mechanism), + mkEntry(CKM_SKIPJACK_RELAYX, Mechanism), + mkEntry(CKM_KEA_KEY_PAIR_GEN, Mechanism), + mkEntry(CKM_KEA_KEY_DERIVE, Mechanism), + mkEntry(CKM_FORTEZZA_TIMESTAMP, Mechanism), + mkEntry(CKM_BATON_KEY_GEN, Mechanism), + mkEntry(CKM_BATON_ECB128, Mechanism), + mkEntry(CKM_BATON_ECB96, Mechanism), + mkEntry(CKM_BATON_CBC128, Mechanism), + mkEntry(CKM_BATON_COUNTER, Mechanism), + mkEntry(CKM_BATON_SHUFFLE, Mechanism), + mkEntry(CKM_BATON_WRAP, Mechanism), + mkEntry(CKM_ECDSA_KEY_PAIR_GEN, Mechanism), + mkEntry(CKM_EC_KEY_PAIR_GEN, Mechanism), + mkEntry(CKM_ECDSA, Mechanism), + mkEntry(CKM_ECDSA_SHA1, Mechanism), + mkEntry(CKM_ECDH1_DERIVE, Mechanism), + mkEntry(CKM_ECDH1_COFACTOR_DERIVE, Mechanism), + mkEntry(CKM_ECMQV_DERIVE, Mechanism), + mkEntry(CKM_JUNIPER_KEY_GEN, Mechanism), + mkEntry(CKM_JUNIPER_ECB128, Mechanism), + mkEntry(CKM_JUNIPER_CBC128, Mechanism), + mkEntry(CKM_JUNIPER_COUNTER, Mechanism), + mkEntry(CKM_JUNIPER_SHUFFLE, Mechanism), + mkEntry(CKM_JUNIPER_WRAP, Mechanism), + mkEntry(CKM_FASTHASH, Mechanism), + mkEntry(CKM_AES_KEY_GEN, Mechanism), + mkEntry(CKM_AES_ECB, Mechanism), + mkEntry(CKM_AES_CBC, Mechanism), + mkEntry(CKM_AES_MAC, Mechanism), + mkEntry(CKM_AES_MAC_GENERAL, Mechanism), + mkEntry(CKM_AES_CBC_PAD, Mechanism), + mkEntry(CKM_CAMELLIA_KEY_GEN, Mechanism), + mkEntry(CKM_CAMELLIA_ECB, Mechanism), + mkEntry(CKM_CAMELLIA_CBC, Mechanism), + mkEntry(CKM_CAMELLIA_MAC, Mechanism), + mkEntry(CKM_CAMELLIA_MAC_GENERAL, Mechanism), + mkEntry(CKM_CAMELLIA_CBC_PAD, Mechanism), + mkEntry(CKM_SEED_KEY_GEN, Mechanism), + mkEntry(CKM_SEED_ECB, Mechanism), + mkEntry(CKM_SEED_CBC, Mechanism), + mkEntry(CKM_SEED_MAC, Mechanism), + mkEntry(CKM_SEED_MAC_GENERAL, Mechanism), + mkEntry(CKM_SEED_CBC_PAD, Mechanism), + mkEntry(CKM_SEED_ECB_ENCRYPT_DATA, Mechanism), + mkEntry(CKM_SEED_CBC_ENCRYPT_DATA, Mechanism), + mkEntry(CKM_DSA_PARAMETER_GEN, Mechanism), + mkEntry(CKM_DH_PKCS_PARAMETER_GEN, Mechanism), + mkEntry(CKM_NSS_AES_KEY_WRAP, Mechanism), + mkEntry(CKM_NSS_AES_KEY_WRAP_PAD, Mechanism), + mkEntry(CKM_NETSCAPE_PBE_SHA1_DES_CBC, Mechanism), + mkEntry(CKM_NETSCAPE_PBE_SHA1_TRIPLE_DES_CBC, Mechanism), + mkEntry(CKM_NETSCAPE_PBE_SHA1_40_BIT_RC2_CBC, Mechanism), + mkEntry(CKM_NETSCAPE_PBE_SHA1_128_BIT_RC2_CBC, Mechanism), + mkEntry(CKM_NETSCAPE_PBE_SHA1_40_BIT_RC4, Mechanism), + mkEntry(CKM_NETSCAPE_PBE_SHA1_128_BIT_RC4, Mechanism), + mkEntry(CKM_NETSCAPE_PBE_SHA1_FAULTY_3DES_CBC, Mechanism), + mkEntry(CKM_NETSCAPE_PBE_SHA1_HMAC_KEY_GEN, Mechanism), + mkEntry(CKM_NETSCAPE_PBE_MD5_HMAC_KEY_GEN, Mechanism), + mkEntry(CKM_NETSCAPE_PBE_MD2_HMAC_KEY_GEN, Mechanism), + mkEntry(CKM_TLS_PRF_GENERAL, Mechanism), + mkEntry(CKM_NSS_TLS_PRF_GENERAL_SHA256, Mechanism), + + mkEntry(CKR_OK, Result), + mkEntry(CKR_CANCEL, Result), + mkEntry(CKR_HOST_MEMORY, Result), + mkEntry(CKR_SLOT_ID_INVALID, Result), + mkEntry(CKR_GENERAL_ERROR, Result), + mkEntry(CKR_FUNCTION_FAILED, Result), + mkEntry(CKR_ARGUMENTS_BAD, Result), + mkEntry(CKR_NO_EVENT, Result), + mkEntry(CKR_NEED_TO_CREATE_THREADS, Result), + mkEntry(CKR_CANT_LOCK, Result), + mkEntry(CKR_ATTRIBUTE_READ_ONLY, Result), + mkEntry(CKR_ATTRIBUTE_SENSITIVE, Result), + mkEntry(CKR_ATTRIBUTE_TYPE_INVALID, Result), + mkEntry(CKR_ATTRIBUTE_VALUE_INVALID, Result), + mkEntry(CKR_DATA_INVALID, Result), + mkEntry(CKR_DATA_LEN_RANGE, Result), + mkEntry(CKR_DEVICE_ERROR, Result), + mkEntry(CKR_DEVICE_MEMORY, Result), + mkEntry(CKR_DEVICE_REMOVED, Result), + mkEntry(CKR_ENCRYPTED_DATA_INVALID, Result), + mkEntry(CKR_ENCRYPTED_DATA_LEN_RANGE, Result), + mkEntry(CKR_FUNCTION_CANCELED, Result), + mkEntry(CKR_FUNCTION_NOT_PARALLEL, Result), + mkEntry(CKR_FUNCTION_NOT_SUPPORTED, Result), + mkEntry(CKR_KEY_HANDLE_INVALID, Result), + mkEntry(CKR_KEY_SIZE_RANGE, Result), + mkEntry(CKR_KEY_TYPE_INCONSISTENT, Result), + mkEntry(CKR_KEY_NOT_NEEDED, Result), + mkEntry(CKR_KEY_CHANGED, Result), + mkEntry(CKR_KEY_NEEDED, Result), + mkEntry(CKR_KEY_INDIGESTIBLE, Result), + mkEntry(CKR_KEY_FUNCTION_NOT_PERMITTED, Result), + mkEntry(CKR_KEY_NOT_WRAPPABLE, Result), + mkEntry(CKR_KEY_UNEXTRACTABLE, Result), + mkEntry(CKR_KEY_PARAMS_INVALID, Result), + mkEntry(CKR_MECHANISM_INVALID, Result), + mkEntry(CKR_MECHANISM_PARAM_INVALID, Result), + mkEntry(CKR_OBJECT_HANDLE_INVALID, Result), + mkEntry(CKR_OPERATION_ACTIVE, Result), + mkEntry(CKR_OPERATION_NOT_INITIALIZED, Result), + mkEntry(CKR_PIN_INCORRECT, Result), + mkEntry(CKR_PIN_INVALID, Result), + mkEntry(CKR_PIN_LEN_RANGE, Result), + mkEntry(CKR_PIN_EXPIRED, Result), + mkEntry(CKR_PIN_LOCKED, Result), + mkEntry(CKR_SESSION_CLOSED, Result), + mkEntry(CKR_SESSION_COUNT, Result), + mkEntry(CKR_SESSION_HANDLE_INVALID, Result), + mkEntry(CKR_SESSION_PARALLEL_NOT_SUPPORTED, Result), + mkEntry(CKR_SESSION_READ_ONLY, Result), + mkEntry(CKR_SESSION_EXISTS, Result), + mkEntry(CKR_SESSION_READ_ONLY_EXISTS, Result), + mkEntry(CKR_SESSION_READ_WRITE_SO_EXISTS, Result), + mkEntry(CKR_SIGNATURE_INVALID, Result), + mkEntry(CKR_SIGNATURE_LEN_RANGE, Result), + mkEntry(CKR_TEMPLATE_INCOMPLETE, Result), + mkEntry(CKR_TEMPLATE_INCONSISTENT, Result), + mkEntry(CKR_TOKEN_NOT_PRESENT, Result), + mkEntry(CKR_TOKEN_NOT_RECOGNIZED, Result), + mkEntry(CKR_TOKEN_WRITE_PROTECTED, Result), + mkEntry(CKR_UNWRAPPING_KEY_HANDLE_INVALID, Result), + mkEntry(CKR_UNWRAPPING_KEY_SIZE_RANGE, Result), + mkEntry(CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT, Result), + mkEntry(CKR_USER_ALREADY_LOGGED_IN, Result), + mkEntry(CKR_USER_NOT_LOGGED_IN, Result), + mkEntry(CKR_USER_PIN_NOT_INITIALIZED, Result), + mkEntry(CKR_USER_TYPE_INVALID, Result), + mkEntry(CKR_USER_ANOTHER_ALREADY_LOGGED_IN, Result), + mkEntry(CKR_USER_TOO_MANY_TYPES, Result), + mkEntry(CKR_WRAPPED_KEY_INVALID, Result), + mkEntry(CKR_WRAPPED_KEY_LEN_RANGE, Result), + mkEntry(CKR_WRAPPING_KEY_HANDLE_INVALID, Result), + mkEntry(CKR_WRAPPING_KEY_SIZE_RANGE, Result), + mkEntry(CKR_WRAPPING_KEY_TYPE_INCONSISTENT, Result), + mkEntry(CKR_RANDOM_SEED_NOT_SUPPORTED, Result), + mkEntry(CKR_RANDOM_NO_RNG, Result), + mkEntry(CKR_DOMAIN_PARAMS_INVALID, Result), + mkEntry(CKR_BUFFER_TOO_SMALL, Result), + mkEntry(CKR_SAVED_STATE_INVALID, Result), + mkEntry(CKR_INFORMATION_SENSITIVE, Result), + mkEntry(CKR_STATE_UNSAVEABLE, Result), + mkEntry(CKR_CRYPTOKI_NOT_INITIALIZED, Result), + mkEntry(CKR_CRYPTOKI_ALREADY_INITIALIZED, Result), + mkEntry(CKR_MUTEX_BAD, Result), + mkEntry(CKR_MUTEX_NOT_LOCKED, Result), + mkEntry(CKR_VENDOR_DEFINED, Result), + + mkEntry(CKT_NSS_TRUSTED, Trust), + mkEntry(CKT_NSS_TRUSTED_DELEGATOR, Trust), + mkEntry(CKT_NSS_NOT_TRUSTED, Trust), + mkEntry(CKT_NSS_MUST_VERIFY_TRUST, Trust), + mkEntry(CKT_NSS_TRUST_UNKNOWN, Trust), + mkEntry(CKT_NSS_VALID_DELEGATOR, Trust), + + mkEntry(CK_EFFECTIVELY_INFINITE, AvailableSizes), + mkEntry(CK_UNAVAILABLE_INFORMATION, CurrentSize), +}; + +const Constant *consts = &_consts[0]; +const unsigned int constCount = sizeof(_consts) / sizeof(_consts[0]); + +const Commands _commands[] = { + { "C_Initialize", + F_C_Initialize, + "C_Initialize pInitArgs\n\n" + "C_Initialize initializes the PKCS #11 library.\n" + " pInitArgs if this is not NULL_PTR it gets cast to and dereferenced\n", + { ArgInitializeArgs, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "C_Finalize", + F_C_Finalize, + "C_Finalize pReserved\n\n" + "C_Finalize indicates that an application is done with the PKCS #11 library.\n" + " pReserved reserved. Should be NULL_PTR\n", + { ArgInitializeArgs, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "C_GetInfo", + F_C_GetInfo, + "C_GetInfo pInfo\n\n" + "C_GetInfo returns general information about PKCS #11.\n" + " pInfo location that receives information\n", + { ArgInfo | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "C_GetFunctionList", + F_C_GetFunctionList, + "C_GetFunctionList ppFunctionList\n\n" + "C_GetFunctionList returns the function list.\n" + " ppFunctionList receives pointer to function list\n", + { ArgFunctionList | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_GetSlotList", + F_C_GetSlotList, + "C_GetSlotList tokenPresent pSlotList pulCount\n\n" + "C_GetSlotList obtains a list of slots in the system.\n" + " tokenPresent only slots with tokens?\n" + " pSlotList receives array of slot IDs\n" + " pulCount receives number of slots\n", + { ArgULong, ArgULong | ArgArray | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_GetSlotInfo", + F_C_GetSlotInfo, + "C_GetSlotInfo slotID pInfo\n\n" + "C_GetSlotInfo obtains information about a particular slot in the system.\n" + " slotID the ID of the slot\n" + " pInfo receives the slot information\n", + { ArgULong, ArgSlotInfo | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_GetTokenInfo", + F_C_GetTokenInfo, + "C_GetTokenInfo slotID pInfo\n\n" + "C_GetTokenInfo obtains information about a particular token in the system.\n" + " slotID ID of the token's slot\n" + " pInfo receives the token information\n", + { ArgULong, ArgTokenInfo | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_GetMechanismList", + F_C_GetMechanismList, + "C_GetMechanismList slotID pMechanismList pulCount\n\n" + "C_GetMechanismList obtains a list of mechanism types supported by a token.\n" + " slotID ID of token's slot\n" + " pMechanismList gets mech. array\n" + " pulCount gets # of mechs.\n", + { ArgULong, ArgULong | ArgArray | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_GetMechanismInfo", + F_C_GetMechanismInfo, + "C_GetMechanismInfo slotID type pInfo\n\n" + "C_GetMechanismInfo obtains information about a particular mechanism possibly\n" + "supported by a token.\n" + " slotID ID of the token's slot\n" + " type type of mechanism\n" + " pInfo receives mechanism info\n", + { ArgULong, ArgULong, ArgMechanismInfo | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_InitToken", + F_C_InitToken, + "C_InitToken slotID pPin ulPinLen pLabel\n\n" + "C_InitToken initializes a token.\n" + " slotID ID of the token's slot\n" + " pPin the SO's initial PIN\n" + " ulPinLen length in bytes of the PIN\n" + " pLabel 32-byte token label (blank padded)\n", + { ArgULong, ArgUTF8, ArgULong, ArgUTF8, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "C_InitPIN", + F_C_InitPIN, + "C_InitPIN hSession pPin ulPinLen\n\n" + "C_InitPIN initializes the normal user's PIN.\n" + " hSession the session's handle\n" + " pPin the normal user's PIN\n" + " ulPinLen length in bytes of the PIN\n", + { ArgULong, ArgUTF8, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "C_SetPIN", + F_C_SetPIN, + "C_SetPIN hSession pOldPin ulOldLen pNewPin ulNewLen\n\n" + "C_SetPIN modifies the PIN of the user who is logged in.\n" + " hSession the session's handle\n" + " pOldPin the old PIN\n" + " ulOldLen length of the old PIN\n" + " pNewPin the new PIN\n" + " ulNewLen length of the new PIN\n", + { ArgULong, ArgUTF8, ArgULong, ArgUTF8, ArgULong, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "C_OpenSession", + F_C_OpenSession, + "C_OpenSession slotID flags phSession\n\n" + "C_OpenSession opens a session between an application and a token.\n" + " slotID the slot's ID\n" + " flags from\n" + " phSession gets session handle\n", + { ArgULong, ArgULong, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_CloseSession", + F_C_CloseSession, + "C_CloseSession hSession\n\n" + "C_CloseSession closes a session between an application and a token.\n" + " hSession the session's handle\n", + { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "C_CloseAllSessions", + F_C_CloseAllSessions, + "C_CloseAllSessions slotID\n\n" + "C_CloseAllSessions closes all sessions with a token.\n" + " slotID the token's slot\n", + { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "C_GetSessionInfo", + F_C_GetSessionInfo, + "C_GetSessionInfo hSession pInfo\n\n" + "C_GetSessionInfo obtains information about the session.\n" + " hSession the session's handle\n" + " pInfo receives session info\n", + { ArgULong, ArgSessionInfo | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_GetOperationState", + F_C_GetOperationState, + "C_GetOperationState hSession pOpState pulOpStateLen\n\n" + "C_GetOperationState obtains the state of the cryptographic operation in a\n" + "session.\n" + " hSession session's handle\n" + " pOpState gets state\n" + " pulOpStateLen gets state length\n", + { ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_SetOperationState", + F_C_SetOperationState, + "C_SetOperationState hSession pOpState ulOpStateLen hEncKey hAuthKey\n\n" + "C_SetOperationState restores the state of the cryptographic operation in a\n" + "session.\n" + " hSession session's handle\n" + " pOpState holds state\n" + " ulOpStateLen holds state length\n" + " hEncKey en/decryption key\n" + " hAuthnKey sign/verify key\n", + { ArgULong, ArgChar | ArgOut, ArgULong, ArgULong, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_Login", + F_C_Login, + "C_Login hSession userType pPin ulPinLen\n\n" + "C_Login logs a user into a token.\n" + " hSession the session's handle\n" + " userType the user type\n" + " pPin the user's PIN\n" + " ulPinLen the length of the PIN\n", + { ArgULong, ArgULong, ArgVar, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "C_Logout", + F_C_Logout, + "C_Logout hSession\n\n" + "C_Logout logs a user out from a token.\n" + " hSession the session's handle\n", + { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "C_CreateObject", + F_C_CreateObject, + "C_CreateObject hSession pTemplate ulCount phObject\n\n" + "C_CreateObject creates a new object.\n" + " hSession the session's handle\n" + " pTemplate the object's template\n" + " ulCount attributes in template\n" + " phObject gets new object's handle.\n", + { ArgULong, ArgAttribute | ArgArray, ArgULong, ArgULong | ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_CopyObject", + F_C_CopyObject, + "C_CopyObject hSession hObject pTemplate ulCount phNewObject\n\n" + "C_CopyObject copies an object creating a new object for the copy.\n" + " hSession the session's handle\n" + " hObject the object's handle\n" + " pTemplate template for new object\n" + " ulCount attributes in template\n" + " phNewObject receives handle of copy\n", + { ArgULong, ArgULong, ArgAttribute | ArgArray, ArgULong, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_DestroyObject", + F_C_DestroyObject, + "C_DestroyObject hSession hObject\n\n" + "C_DestroyObject destroys an object.\n" + " hSession the session's handle\n" + " hObject the object's handle\n", + { ArgULong, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "C_GetObjectSize", + F_C_GetObjectSize, + "C_GetObjectSize hSession hObject pulSize\n\n" + "C_GetObjectSize gets the size of an object in bytes.\n" + " hSession the session's handle\n" + " hObject the object's handle\n" + " pulSize receives size of object\n", + { ArgULong, ArgULong, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_GetAttributeValue", + F_C_GetAttributeValue, + "C_GetAttributeValue hSession hObject pTemplate ulCount\n\n" + "C_GetAttributeValue obtains the value of one or more object attributes.\n" + " hSession the session's handle\n" + " hObject the object's handle\n" + " pTemplate specifies attrs; gets vals\n" + " ulCount attributes in template\n", + { ArgULong, ArgULong, ArgAttribute | ArgArray, ArgULong, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_SetAttributeValue", + F_C_SetAttributeValue, + "C_SetAttributeValue hSession hObject pTemplate ulCount\n\n" + "C_SetAttributeValue modifies the value of one or more object attributes\n" + " hSession the session's handle\n" + " hObject the object's handle\n" + " pTemplate specifies attrs and values\n" + " ulCount attributes in template\n", + { ArgULong, ArgULong, ArgAttribute | ArgArray, ArgULong, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_FindObjectsInit", + F_C_FindObjectsInit, + "C_FindObjectsInit hSession pTemplate ulCount\n\n" + "C_FindObjectsInit initializes a search for token and session objects that\n" + "match a template.\n" + " hSession the session's handle\n" + " pTemplate attribute values to match\n" + " ulCount attrs in search template\n", + { ArgULong, ArgAttribute | ArgArray, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_FindObjectsFinal", + F_C_FindObjectsFinal, + "C_FindObjectsFinal hSession\n\n" + "C_FindObjectsFinal finishes a search for token and session objects.\n" + " hSession the session's handle\n", + { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "C_FindObjects", + F_C_FindObjects, + "C_FindObjects hSession phObject ulMaxObjectCount pulObjectCount\n\n" + "C_FindObjects continues a search for token and session objects that match\n" + "a template obtaining additional object handles.\n" + " hSession session's handle\n" + " phObject gets obj. handles\n" + " ulMaxObjectCount max handles to get\n" + " pulObjectCount actual # returned\n", + { ArgULong, ArgULong | ArgOut, ArgULong, ArgULong | ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_EncryptInit", + F_C_EncryptInit, + "C_EncryptInit hSession pMechanism hKey\n\n" + "C_EncryptInit initializes an encryption operation.\n" + " hSession the session's handle\n" + " pMechanism the encryption mechanism\n" + " hKey handle of encryption key\n", + { ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "C_EncryptUpdate", + F_C_EncryptUpdate, + "C_EncryptUpdate hSession pPart ulPartLen pEncryptedPart pulEncryptedPartLen\n" + "\n" + "C_EncryptUpdate continues a multiple-part encryption operation.\n" + " hSession session's handle\n" + " pPart the plaintext data\n" + " ulPartLen plaintext data len\n" + " pEncryptedPart gets ciphertext\n" + " pulEncryptedPartLen gets c-text size\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_EncryptFinal", + F_C_EncryptFinal, + "C_EncryptFinal hSession pLastEncryptedPart pulLastEncryptedPartLen\n\n" + "C_EncryptFinal finishes a multiple-part encryption operation.\n" + " hSession session handle\n" + " pLastEncryptedPart last c-text\n" + " pulLastEncryptedPartLen gets last size\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_Encrypt", + F_C_Encrypt, + "C_Encrypt hSession pData ulDataLen pEncryptedData pulEncryptedDataLen\n\n" + "C_Encrypt encrypts single-part data.\n" + " hSession session's handle\n" + " pData the plaintext data\n" + " ulDataLen bytes of plaintext\n" + " pEncryptedData gets ciphertext\n" + " pulEncryptedDataLen gets c-text size\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_DecryptInit", + F_C_DecryptInit, + "C_DecryptInit hSession pMechanism hKey\n\n" + "C_DecryptInit initializes a decryption operation.\n" + " hSession the session's handle\n" + " pMechanism the decryption mechanism\n" + " hKey handle of decryption key\n", + { ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "C_DecryptUpdate", + F_C_DecryptUpdate, + "C_DecryptUpdate hSession pEncryptedPart ulEncryptedPartLen pPart pulPartLen\n" + "\n" + "C_DecryptUpdate continues a multiple-part decryption operation.\n" + " hSession session's handle\n" + " pEncryptedPart encrypted data\n" + " ulEncryptedPartLen input length\n" + " pPart gets plaintext\n" + " pulPartLen p-text size\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_DecryptFinal", + F_C_DecryptFinal, + "C_DecryptFinal hSession pLastPart pulLastPartLen\n\n" + "C_DecryptFinal finishes a multiple-part decryption operation.\n" + " hSession the session's handle\n" + " pLastPart gets plaintext\n" + " pulLastPartLen p-text size\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_Decrypt", + F_C_Decrypt, + "C_Decrypt hSession pEncryptedData ulEncryptedDataLen pData pulDataLen\n\n" + "C_Decrypt decrypts encrypted data in a single part.\n" + " hSession session's handle\n" + " pEncryptedData ciphertext\n" + " ulEncryptedDataLen ciphertext length\n" + " pData gets plaintext\n" + " pulDataLen gets p-text size\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_DigestInit", + F_C_DigestInit, + "C_DigestInit hSession pMechanism\n\n" + "C_DigestInit initializes a message-digesting operation.\n" + " hSession the session's handle\n" + " pMechanism the digesting mechanism\n", + { ArgULong, ArgMechanism, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "C_DigestUpdate", + F_C_DigestUpdate, + "C_DigestUpdate hSession pPart ulPartLen\n\n" + "C_DigestUpdate continues a multiple-part message-digesting operation.\n" + " hSession the session's handle\n" + " pPart data to be digested\n" + " ulPartLen bytes of data to be digested\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_DigestKey", + F_C_DigestKey, + "C_DigestKey hSession hKey\n\n" + "C_DigestKey continues a multi-part message-digesting operation by digesting\n" + "the value of a secret key as part of the data already digested.\n" + " hSession the session's handle\n" + " hKey secret key to digest\n", + { ArgULong, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "C_DigestFinal", + F_C_DigestFinal, + "C_DigestFinal hSession pDigest pulDigestLen\n\n" + "C_DigestFinal finishes a multiple-part message-digesting operation.\n" + " hSession the session's handle\n" + " pDigest gets the message digest\n" + " pulDigestLen gets byte count of digest\n", + { ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_Digest", + F_C_Digest, + "C_Digest hSession pData ulDataLen pDigest pulDigestLen\n\n" + "C_Digest digests data in a single part.\n" + " hSession the session's handle\n" + " pData data to be digested\n" + " ulDataLen bytes of data to digest\n" + " pDigest gets the message digest\n" + " pulDigestLen gets digest length\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_SignInit", + F_C_SignInit, + "C_SignInit hSession pMechanism hKey\n\n" + "C_SignInit initializes a signature (private key encryption operation where\n" + "the signature is (will be) an appendix to the data and plaintext cannot be\n" + "recovered from the signature.\n" + " hSession the session's handle\n" + " pMechanism the signature mechanism\n" + " hKey handle of signature key\n", + { ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "C_SignUpdate", + F_C_SignUpdate, + "C_SignUpdate hSession pPart ulPartLen\n\n" + "C_SignUpdate continues a multiple-part signature operation where the\n" + "signature is (will be) an appendix to the data and plaintext cannot be\n" + "recovered from the signature.\n" + " hSession the session's handle\n" + " pPart the data to sign\n" + " ulPartLen count of bytes to sign\n", + { ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_SignFinal", + F_C_SignFinal, + "C_SignFinal hSession pSignature pulSignatureLen\n\n" + "C_SignFinal finishes a multiple-part signature operation returning the\n" + "signature.\n" + " hSession the session's handle\n" + " pSignature gets the signature\n" + " pulSignatureLen gets signature length\n", + { ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_SignRecoverInit", + F_C_SignRecoverInit, + "C_SignRecoverInit hSession pMechanism hKey\n\n" + "C_SignRecoverInit initializes a signature operation where the data can be\n" + "recovered from the signature.\n" + " hSession the session's handle\n" + " pMechanism the signature mechanism\n" + " hKey handle of the signature key\n", + { ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "C_SignRecover", + F_C_SignRecover, + "C_SignRecover hSession pData ulDataLen pSignature pulSignatureLen\n\n" + "C_SignRecover signs data in a single operation where the data can be\n" + "recovered from the signature.\n" + " hSession the session's handle\n" + " pData the data to sign\n" + " ulDataLen count of bytes to sign\n" + " pSignature gets the signature\n" + " pulSignatureLen gets signature length\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_Sign", + F_C_Sign, + "C_Sign hSession pData ulDataLen pSignature pulSignatureLen\n\n" + "C_Sign signs (encrypts with private key) data in a single part where the\n" + "signature is (will be) an appendix to the data and plaintext cannot be\n" + "recovered from the signature.\n" + " hSession the session's handle\n" + " pData the data to sign\n" + " ulDataLen count of bytes to sign\n" + " pSignature gets the signature\n" + " pulSignatureLen gets signature length\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_VerifyInit", + F_C_VerifyInit, + "C_VerifyInit hSession pMechanism hKey\n\n" + "C_VerifyInit initializes a verification operation where the signature is an\n" + "appendix to the data and plaintext cannot cannot be recovered from the\n" + "signature (e.g. DSA).\n" + " hSession the session's handle\n" + " pMechanism the verification mechanism\n" + " hKey verification key\n", + { ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "C_VerifyUpdate", + F_C_VerifyUpdate, + "C_VerifyUpdate hSession pPart ulPartLen\n\n" + "C_VerifyUpdate continues a multiple-part verification operation where the\n" + "signature is an appendix to the data and plaintext cannot be recovered from\n" + "the signature.\n" + " hSession the session's handle\n" + " pPart signed data\n" + " ulPartLen length of signed data\n", + { ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_VerifyFinal", + F_C_VerifyFinal, + "C_VerifyFinal hSession pSignature ulSignatureLen\n\n" + "C_VerifyFinal finishes a multiple-part verification operation checking the\n" + "signature.\n" + " hSession the session's handle\n" + " pSignature signature to verify\n" + " ulSignatureLen signature length\n", + { ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "C_VerifyRecoverInit", + F_C_VerifyRecoverInit, + "C_VerifyRecoverInit hSession pMechanism hKey\n\n" + "C_VerifyRecoverInit initializes a signature verification operation where the\n" + "data is recovered from the signature.\n" + " hSession the session's handle\n" + " pMechanism the verification mechanism\n" + " hKey verification key\n", + { ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "C_VerifyRecover", + F_C_VerifyRecover, + "C_VerifyRecover hSession pSignature ulSignatureLen pData pulDataLen\n\n" + "C_VerifyRecover verifies a signature in a single-part operation where the\n" + "data is recovered from the signature.\n" + " hSession the session's handle\n" + " pSignature signature to verify\n" + " ulSignatureLen signature length\n" + " pData gets signed data\n" + " pulDataLen gets signed data len\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_Verify", + F_C_Verify, + "C_Verify hSession pData ulDataLen pSignature ulSignatureLen\n\n" + "C_Verify verifies a signature in a single-part operation where the signature\n" + "is an appendix to the data and plaintext cannot be recovered from the\n" + "signature.\n" + " hSession the session's handle\n" + " pData signed data\n" + " ulDataLen length of signed data\n" + " pSignature signature\n" + " ulSignatureLen signature length*/\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_DigestEncryptUpdate", + F_C_DigestEncryptUpdate, + "C_DigestEncryptUpdate hSession pPart ulPartLen pEncryptedPart \\\n" + " pulEncryptedPartLen\n\n" + "C_DigestEncryptUpdate continues a multiple-part digesting and encryption\n" + "operation.\n" + " hSession session's handle\n" + " pPart the plaintext data\n" + " ulPartLen plaintext length\n" + " pEncryptedPart gets ciphertext\n" + " pulEncryptedPartLen gets c-text length\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_DecryptDigestUpdate", + F_C_DecryptDigestUpdate, + "C_DecryptDigestUpdate hSession pEncryptedPart ulEncryptedPartLen pPart \\\n" + " pulPartLen\n\n" + "C_DecryptDigestUpdate continues a multiple-part decryption and digesting\n" + "operation.\n" + " hSession session's handle\n" + " pEncryptedPart ciphertext\n" + " ulEncryptedPartLen ciphertext length\n" + " pPart gets plaintext\n" + " pulPartLen gets plaintext len\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_SignEncryptUpdate", + F_C_SignEncryptUpdate, + "C_SignEncryptUpdate hSession pPart ulPartLen pEncryptedPart \\\n" + " pulEncryptedPartLen\n\n" + "C_SignEncryptUpdate continues a multiple-part signing and encryption\n" + "operation.\n" + " hSession session's handle\n" + " pPart the plaintext data\n" + " ulPartLen plaintext length\n" + " pEncryptedPart gets ciphertext\n" + " pulEncryptedPartLen gets c-text length\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_DecryptVerifyUpdate", + F_C_DecryptVerifyUpdate, + "C_DecryptVerifyUpdate hSession pEncryptedPart ulEncryptedPartLen pPart \\\n" + " pulPartLen\n\n" + "C_DecryptVerifyUpdate continues a multiple-part decryption and verify\n" + "operation.\n" + " hSession session's handle\n" + " pEncryptedPart ciphertext\n" + " ulEncryptedPartLen ciphertext length\n" + " pPart gets plaintext\n" + " pulPartLen gets p-text length\n", + { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_GenerateKeyPair", + F_C_GenerateKeyPair, + "C_GenerateKeyPair hSession pMechanism pPublicKeyTemplate \\\n" + " ulPublicKeyAttributeCount pPrivateKeyTemplate ulPrivateKeyAttributeCount \\\n" + " phPublicKey phPrivateKey\n\n" + "C_GenerateKeyPair generates a public-key/private-key pair creating new key\n" + "objects.\n" + " hSession sessionhandle\n" + " pMechanism key-genmech.\n" + " pPublicKeyTemplate templatefor pub. key\n" + " ulPublicKeyAttributeCount # pub. attrs.\n" + " pPrivateKeyTemplate templatefor priv. key\n" + " ulPrivateKeyAttributeCount # priv. attrs.\n" + " phPublicKey gets pub. keyhandle\n" + " phPrivateKey getspriv. keyhandle\n", + { ArgULong, ArgMechanism, ArgAttribute | ArgArray, ArgULong, + ArgAttribute | ArgArray, ArgULong, ArgULong | ArgOut, ArgULong | ArgOut, ArgNone, + ArgNone } }, + { "C_GenerateKey", + F_C_GenerateKey, + "C_GenerateKey hSession pMechanism pTemplate ulCount phKey\n\n" + "C_GenerateKey generates a secret key creating a new key object.\n" + " hSession the session's handle\n" + " pMechanism key generation mech.\n" + " pTemplate template for new key\n" + " ulCount # of attrs in template\n" + " phKey gets handle of new key\n", + { ArgULong, ArgMechanism, ArgAttribute | ArgArray, ArgULong, ArgULong | ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_WrapKey", + F_C_WrapKey, + "C_WrapKey hSession pMechanism hWrappingKey hKey pWrappedKey pulWrappedKeyLen\n\n" + "C_WrapKey wraps (i.e. encrypts) a key.\n" + " hSession the session's handle\n" + " pMechanism the wrapping mechanism\n" + " hWrappingKey wrapping key\n" + " hKey key to be wrapped\n" + " pWrappedKey gets wrapped key\n" + " pulWrappedKeyLen gets wrapped key size\n", + { ArgULong, ArgMechanism, ArgULong, ArgULong, ArgULong, ArgChar | ArgOut, + ArgULong | ArgOut, ArgNone, ArgNone, ArgNone } }, + { "C_UnwrapKey", + F_C_UnwrapKey, + "C_UnwrapKey hSession pMechanism hUnwrappingKey pWrappedKey ulWrappedKeyLen \\\n" + " pTemplate ulAttributeCount phKey\n\n" + "C_UnwrapKey unwraps (decrypts) a wrapped key creating a new key object.\n" + " hSession session's handle\n" + " pMechanism unwrapping mech.\n" + " hUnwrappingKey unwrapping key\n" + " pWrappedKey the wrapped key\n" + " ulWrappedKeyLen wrapped key len\n" + " pTemplate new key template\n" + " ulAttributeCount template length\n" + " phKey gets new handle\n", + { ArgULong, ArgMechanism, ArgULong, ArgChar, ArgULong, ArgAttribute | ArgArray, + ArgULong, ArgULong | ArgOut, ArgNone, ArgNone } }, + { "C_DeriveKey", + F_C_DeriveKey, + "C_DeriveKey hSession pMechanism hBaseKey pTemplate ulAttributeCount phKey\n\n" + "C_DeriveKey derives a key from a base key creating a new key object.\n" + " hSession session's handle\n" + " pMechanism key deriv. mech.\n" + " hBaseKey base key\n" + " pTemplate new key template\n" + " ulAttributeCount template length\n" + " phKey gets new handle\n", + { ArgULong, ArgMechanism, ArgULong, ArgAttribute | ArgArray, ArgULong, + ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone } }, + { "C_SeedRandom", + F_C_SeedRandom, + "C_SeedRandom hSession pSeed ulSeedLen\n\n" + "C_SeedRandom mixes additional seed material into the token's random number\n" + "generator.\n" + " hSession the session's handle\n" + " pSeed the seed material\n" + " ulSeedLen length of seed material\n", + { ArgULong, ArgChar, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "C_GenerateRandom", + F_C_GenerateRandom, + "C_GenerateRandom hSession RandomData ulRandomLen\n\n" + "C_GenerateRandom generates random data.\n" + " hSession the session's handle\n" + " RandomData receives the random data\n" + " ulRandomLen # of bytes to generate\n", + { ArgULong, ArgChar, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "C_GetFunctionStatus", + F_C_GetFunctionStatus, + "C_GetFunctionStatus hSession\n\n" + "C_GetFunctionStatus is a legacy function; it obtains an updated status of\n" + "a function running in parallel with an application.\n" + " hSession the session's handle\n", + { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "C_CancelFunction", + F_C_CancelFunction, + "C_CancelFunction hSession\n\n" + "C_CancelFunction is a legacy function; it cancels a function running in\n" + "parallel.\n" + " hSession the session's handle\n", + { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "C_WaitForSlotEvent", + F_C_WaitForSlotEvent, + "C_WaitForSlotEvent flags pSlot pRserved\n\n" + "C_WaitForSlotEvent waits for a slot event (token insertion removal etc.)\n" + "to occur.\n" + " flags blocking/nonblocking flag\n" + " pSlot location that receives the slot ID\n" + " pRserved reserved. Should be NULL_PTR\n", + { ArgULong, ArgULong | ArgArray, ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "NewArray", + F_NewArray, + "NewArray varName varType array size\n\n" + "Creates a new array variable.\n" + " varName variable name of the new array\n" + " varType data type of the new array\n" + " size number of elements in the array\n", + { ArgVar | ArgNew, ArgVar, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "NewInitArg", + F_NewInitializeArgs, + "NewInitArg varName flags string\n\n" + "Creates a new init variable.\n" + " varName variable name of the new initArg\n" + " flags value to set the flags field\n" + " string string parameter for init arg\n", + { ArgVar | ArgNew, ArgULong, ArgVar | ArgNew, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "NewTemplate", + F_NewTemplate, + "NewTemplate varName attributeList\n\n" + "Create a new empty template and populate the attribute list\n" + " varName variable name of the new template\n" + " attributeList comma separated list of CKA_ATTRIBUTE types\n", + { ArgVar | ArgNew, ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "NewMechanism", + F_NewMechanism, + "NewMechanism varName mechanismType\n\n" + "Create a new CK_MECHANISM object with type NULL parameters and specified type\n" + " varName variable name of the new mechansim\n" + " mechanismType CKM_ mechanism type value to set int the type field\n", + { ArgVar | ArgNew, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "BuildTemplate", + F_BuildTemplate, + "BuildTemplate template\n\n" + "Allocates space for the value in a template which has the sizes filled in,\n" + "but no values allocated yet.\n" + " template variable name of the template\n", + { ArgAttribute, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "SetTemplate", + F_SetTemplate, + "SetTemplate template index value\n\n" + "Sets a particular element of a template to a CK_ULONG\n" + " template variable name of the template\n" + " index index into the template to the element to change\n" + " value 32 bit value to set in the template\n", + { ArgAttribute, ArgULong, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "SetString", + F_SetStringVar, + "SetString varName string\n\n" + "Sets a particular variable to a string value\n" + " variable variable name of new string\n" + " string String to set the variable to\n", + { ArgVar | ArgNew, ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "Set", + F_SetVar, + "Set varName value\n\n" + "Sets a particular variable to CK_ULONG\n" + " variable name of the new variable\n" + " value 32 bit value to set variable to\n", + { ArgVar | ArgNew, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "Print", + F_Print, + "Print varName\n\n" + "prints a variable\n" + " variable name of the variable to print\n", + { ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "Delete", + F_Delete, + "Delete varName\n\n" + "delete a variable\n" + " variable name of the variable to delete\n", + { ArgVar | ArgNew, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "Load", + F_Load, + "load libraryName\n\n" + "load a pkcs #11 module\n" + " libraryName Name of a shared library\n", + { ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "Save", + F_SaveVar, + "Save filename variable\n\n" + "Saves the binary value of 'variable' in file 'filename'\n" + " fileName target file to save the variable in\n" + " variable variable to save\n", + { ArgVar | ArgNew, ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "Restore", + F_RestoreVar, + "Restore filename variable\n\n" + "Restores a variable from a file\n" + " fileName target file to restore the variable from\n" + " variable variable to restore\n", + { ArgVar | ArgNew, ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "Increment", + F_Increment, + "Increment variable value\n\n" + "Increment a variable by value\n", + { ArgVar, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "Decrement", + F_Decrement, + "Decrement variable value\n\n" + "Decrement a variable by value\n", + { ArgVar, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "List", + F_List, + "List all the variables\n", + { ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "Unload", + F_Unload, + "Unload the currrently loaded PKCS #11 library\n", + { ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "Run", + F_Run, + "Run filename\n\n" + "reads filename as script of commands to execute\n", + { ArgVar | ArgNew, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "Time", + F_Time, + "Time pkcs11 command\n\n" + "Execute a pkcs #11 command and time the results\n", + { ArgVar | ArgFull, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "System", + F_System, + "Set System Flag", + { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, + { "LoopRun", + F_Loop, + "LoopRun filename var start end step\n\n" + "Run in a loop. Loop exit if scrip does and explicit quit (Quit QuitIf etc.)", + { ArgVar | ArgNew, ArgVar | ArgNew, ArgULong, ArgULong, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone } }, + { "Help", + F_Help, + "Help [command]\n\n" + "print general help, or help for a specific command\n", + { ArgVar | ArgOpt, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "QuitIf", + F_QuitIf, + "QuitIf arg1 comparator arg2\n\n" + "Exit from this program if Condition is valid, valid comparators:\n" + " < > <= >= = !=\n", + { ArgULong, ArgVar | ArgNew, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone } }, + { "QuitIfString", + F_QuitIfString, + "QuitIfString arg1 comparator arg2\n\n" + "Exit from this program if Condition is valid, valid comparators:\n" + " = !=\n", + { ArgVar | ArgNew, ArgVar | ArgNew, ArgVar | ArgNew, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone } }, + { "Quit", + F_Quit, + "Exit from this program", + { ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone } }, +}; + +const Commands *commands = &_commands[0]; +const int commandCount = sizeof(_commands) / sizeof(_commands[0]); + +const Topics _topics[] = { + { "variables", + "Variables are random strings of characters. These should begin with alpha\n" + " characters, and should not contain any spaces, nor should they match any\n" + " built-in constants. There is some checking in the code for these things,\n" + " but it's not 100% and using invalid variable names can cause problems.\n" + " Variables are created by any 'OUT' parameter. If the variable does not\n" + " exist, it will be created. For in parameters variables must already exist.\n" }, + { "constants", + "pk11util recognizes *lots* of constants. All CKA_, CKF_, CKO_, CKU_, CKS_,\n" + " CKC_, CKK_, CKH_, CKM_, CKT_ values from the PKCS #11 spec are recognized.\n" + " Constants can be specified with their fully qualified CK?_ value, or the\n" + " prefix can be dropped. Constants are matched case insensitve.\n" }, + { "arrays", + "Arrays are special variables which represent 'C' arrays. Each array \n" + " variable can be referenced as a group (using just the name), or as \n" + " individual elements (with the [int] operator). Example:\n" + " print myArray # prints the full array.\n" + " print myArray[3] # prints the 3rd elemement of the array \n" }, + { "sizes", + "Size operaters returns the size in bytes of a variable, or the number of\n" + " elements in an array.\n" + " size(var) and sizeof(var) return the size of var in bytes.\n" + " sizea(var) and sizeofarray(var) return the number of elements in var.\n" + " If var is not an array, sizea(var) returns 1.\n" }, +}; + +const Topics *topics = &_topics[0]; +const int topicCount = sizeof(_topics) / sizeof(_topics[0]); + +const char * +getName(CK_ULONG value, ConstType type) +{ + unsigned int i; + + for (i = 0; i < constCount; i++) { + if (consts[i].type == type && consts[i].value == value) { + return consts[i].name; + } + if (type == ConstNone && consts[i].value == value) { + return consts[i].name; + } + } + + return NULL; +} + +const char * +getNameFromAttribute(CK_ATTRIBUTE_TYPE type) +{ + return getName(type, ConstAttribute); +} + +unsigned int +totalKnownType(ConstType type) +{ + unsigned int count = 0; + unsigned int i; + + for (i = 0; i < constCount; i++) { + if (consts[i].type == type) + count++; + } + return count; +} |