diff options
author | relyea%netscape.com <devnull@localhost> | 2009-03-29 19:04:22 +0000 |
---|---|---|
committer | relyea%netscape.com <devnull@localhost> | 2009-03-29 19:04:22 +0000 |
commit | 3bad9771f97bebf2b6a2d870ab27337a8b2bf040 (patch) | |
tree | e14a911ecb1ff4f69581d128399e0cfe655bb30f | |
parent | 030d974fdacfd1ef0247f4b4c9a21edfc9f0e78a (diff) | |
download | nss-hg-3bad9771f97bebf2b6a2d870ab27337a8b2bf040.tar.gz |
Tool to manage pkcs 11 module tests.
-rw-r--r-- | security/nss/cmd/lib/pk11table.c | 818 | ||||
-rw-r--r-- | security/nss/cmd/lib/pk11table.h | 144 |
2 files changed, 962 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..a77ab2c32 --- /dev/null +++ b/security/nss/cmd/lib/pk11table.c @@ -0,0 +1,818 @@ +#include <pkcs11.h> +#include "pk11util.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" +}; + +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_NETSCAPE_CRL, Object), + mkEntry(CKO_NETSCAPE_SMIME, Object), + mkEntry(CKO_NETSCAPE_TRUST, Object), + mkEntry(CKO_NETSCAPE_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_NETSCAPE_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_NETSCAPE_URL, Attribute, None), + mkEntry2(CKA_NETSCAPE_EMAIL, Attribute, None), + mkEntry2(CKA_NETSCAPE_SMIME_INFO, Attribute, None), + mkEntry2(CKA_NETSCAPE_SMIME_TIMESTAMP, Attribute, None), + mkEntry2(CKA_NETSCAPE_PKCS8_SALT, Attribute, None), + mkEntry2(CKA_NETSCAPE_PASSWORD_CHECK, Attribute, None), + mkEntry2(CKA_NETSCAPE_EXPIRES, Attribute, None), + mkEntry2(CKA_NETSCAPE_KRL, Attribute, None), + mkEntry2(CKA_NETSCAPE_PQG_COUNTER, Attribute, None), + mkEntry2(CKA_NETSCAPE_PQG_SEED, Attribute, None), + mkEntry2(CKA_NETSCAPE_PQG_H, Attribute, None), + mkEntry2(CKA_NETSCAPE_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_KEY_PAIR_GEN, Mechanism), + mkEntry(CKM_RSA_PKCS, Mechanism), + mkEntry(CKM_RSA_9796, Mechanism), + mkEntry(CKM_RSA_X_509, 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_PKCS_KEY_PAIR_GEN, 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_TLS_KEY_AND_MAC_DERIVE, Mechanism), + mkEntry(CKM_TLS_MASTER_KEY_DERIVE_DH, 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_DSA_PARAMETER_GEN, Mechanism), + mkEntry(CKM_DH_PKCS_PARAMETER_GEN, Mechanism), + mkEntry(CKM_DH_X9_42_PARAMETER_GEN, Mechanism), + mkEntry(CKM_NETSCAPE_AES_KEY_WRAP, Mechanism), + mkEntry(CKM_NETSCAPE_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(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_NETSCAPE_TRUSTED, Trust), + mkEntry(CKT_NETSCAPE_TRUSTED_DELEGATOR, Trust), + mkEntry(CKT_NETSCAPE_UNTRUSTED, Trust), + mkEntry(CKT_NETSCAPE_MUST_VERIFY, Trust), + mkEntry(CKT_NETSCAPE_TRUST_UNKNOWN, Trust), + mkEntry(CKT_NETSCAPE_VALID, Trust), + mkEntry(CKT_NETSCAPE_VALID_DELEGATOR, Trust), +}; + +const Constant *consts = &_consts[0]; +const int constCount = sizeof(_consts)/sizeof(_consts[0]); + +const Commands _commands[] = { + {"C_Initialize", F_C_Initialize, + {ArgInitializeArgs, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_Finalize", F_C_Finalize, + {ArgInitializeArgs, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GetInfo", F_C_GetInfo, + {ArgInfo|ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GetFunctionList", F_C_GetFunctionList, + {ArgFunctionList|ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GetSlotList", F_C_GetSlotList, + {ArgULong, ArgULong|ArgArray|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GetSlotInfo", F_C_GetSlotInfo, + {ArgULong, ArgSlotInfo|ArgOut, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GetTokenInfo", F_C_GetTokenInfo, + {ArgULong, ArgTokenInfo|ArgOut, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GetMechanismList", F_C_GetMechanismList, + {ArgULong, ArgULong|ArgArray|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GetMechanismInfo", F_C_GetMechanismInfo, + {ArgULong, ArgULong, ArgMechanismInfo|ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_InitToken", F_C_InitToken, + {ArgULong, ArgUTF8, ArgULong, ArgUTF8, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_InitPIN", F_C_InitPIN, + {ArgULong, ArgUTF8, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_SetPIN", F_C_SetPIN, + {ArgULong, ArgUTF8, ArgULong, ArgUTF8, ArgULong, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_OpenSession", F_C_OpenSession, + {ArgULong, ArgULong, ArgULong|ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_CloseSession", F_C_CloseSession, + {ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_CloseAllSessions", F_C_CloseAllSessions, + {ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GetSessionInfo", F_C_GetSessionInfo, + {ArgULong, ArgSessionInfo|ArgOut, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GetOperationState", F_C_GetOperationState, + {ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_SetOperationState", F_C_SetOperationState, + {ArgULong, ArgChar|ArgOut, ArgULong, ArgULong, ArgULong, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_Login", F_C_Login, + {ArgULong, ArgULong, ArgVar, ArgULong, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_Logout", F_C_Logout, + {ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_CreateObject", F_C_CreateObject, + {ArgULong, ArgAttribute|ArgArray, ArgULong, ArgULong|ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_CopyObject", F_C_CopyObject, + {ArgULong, ArgULong, ArgAttribute|ArgArray, ArgULong, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_DestroyObject", F_C_DestroyObject, + {ArgULong, ArgULong, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GetObjectSize", F_C_GetObjectSize, + {ArgULong, ArgULong, ArgULong|ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GetAttributeValue", F_C_GetAttributeValue, + {ArgULong, ArgULong, ArgAttribute|ArgArray, ArgULong, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_SetAttributeValue", F_C_SetAttributeValue, + {ArgULong, ArgULong, ArgAttribute|ArgArray, ArgULong, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_FindObjectsInit", F_C_FindObjectsInit, + {ArgULong, ArgAttribute|ArgArray, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_FindObjectsFinal", F_C_FindObjectsFinal, + {ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_FindObjects", F_C_FindObjects, + {ArgULong, ArgULong|ArgOut, ArgULong, ArgULong|ArgOut, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_EncryptInit", F_C_EncryptInit, + {ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_EncryptUpdate", F_C_EncryptUpdate, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_EncryptFinal", F_C_EncryptFinal, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_Encrypt", F_C_Encrypt, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_DecryptInit", F_C_DecryptInit, + {ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_DecryptUpdate", F_C_DecryptUpdate, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_DecryptFinal", F_C_DecryptFinal, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_Decrypt", F_C_Decrypt, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_DigestInit", F_C_DigestInit, + {ArgULong, ArgMechanism, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_DigestUpdate", F_C_DigestUpdate, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_DigestKey", F_C_DigestKey, + {ArgULong, ArgULong, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_DigestFinal", F_C_DigestFinal, + {ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_Digest", F_C_Digest, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_SignInit", F_C_SignInit, + {ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_SignUpdate", F_C_SignUpdate, + {ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_SignFinal", F_C_SignFinal, + {ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_SignRecoverInit", F_C_SignRecoverInit, + {ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_SignRecover", F_C_SignRecover, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_Sign", F_C_Sign, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_VerifyInit", F_C_VerifyInit, + {ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_VerifyUpdate", F_C_VerifyUpdate, + {ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_VerifyFinal", F_C_VerifyFinal, + {ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_VerifyRecoverInit", F_C_VerifyRecoverInit, + {ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_VerifyRecover", F_C_VerifyRecover, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_Verify", F_C_Verify, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_DigestEncryptUpdate", F_C_DigestEncryptUpdate, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_DecryptDigestUpdate", F_C_DecryptDigestUpdate, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_SignEncryptUpdate", F_C_SignEncryptUpdate, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_DecryptVerifyUpdate", F_C_DecryptVerifyUpdate, + {ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GenerateKeyPair", F_C_GenerateKeyPair, + {ArgULong, ArgMechanism, ArgAttribute|ArgArray, ArgULong, + ArgAttribute|ArgArray, + ArgULong, ArgULong|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone }}, + {"C_GenerateKey", F_C_GenerateKey, + {ArgULong, ArgMechanism, ArgAttribute|ArgArray, ArgULong, + ArgULong|ArgOut, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_WrapKey", F_C_WrapKey, + {ArgULong, ArgMechanism, ArgULong, ArgULong, ArgULong, + ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone, ArgNone }}, + {"C_UnwrapKey", F_C_UnwrapKey, + {ArgULong, ArgMechanism, ArgULong, ArgChar, ArgULong, + ArgAttribute|ArgArray, ArgULong, ArgULong|ArgOut, ArgNone, ArgNone }}, + {"C_DeriveKey", F_C_DeriveKey, + {ArgULong, ArgMechanism, ArgULong, ArgAttribute|ArgArray, ArgULong, + ArgULong|ArgOut, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_SeedRandom", F_C_SeedRandom, + {ArgULong, ArgChar, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GenerateRandom", F_C_GenerateRandom, + {ArgULong, ArgChar, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_GetFunctionStatus", F_C_GetFunctionStatus, + {ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_CancelFunction", F_C_CancelFunction, + {ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"C_WaitForSlotEvent", F_C_WaitForSlotEvent, + {ArgULong, ArgULong|ArgArray, ArgVar, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"NewArray", F_NewArray, + {ArgVar|ArgNew, ArgVar, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"NewTemplate", F_NewTemplate, + {ArgVar|ArgNew, ArgVar, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"NewMechanism", F_NewMechanism, + {ArgMechanism|ArgOut, ArgULong, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"BuildTemplate", F_BuildTemplate, + {ArgAttribute, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"SetTemplate", F_SetTemplate, + {ArgAttribute, ArgULong, ArgULong, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"Set", F_SetVar, + {ArgVar|ArgNew, ArgULong, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"Print", F_Print, + {ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"Delete", F_Delete, + {ArgVar|ArgNew, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"Load", F_Load, + {ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"Save", F_SaveVar, + {ArgVar|ArgNew, ArgVar, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"Restore", F_RestoreVar, + {ArgVar|ArgNew, ArgVar, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"List", F_List, + {ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"Unload", F_Unload, + {ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"Run", F_Run, + {ArgVar|ArgNew, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"System", F_System, + {ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, + {"Quit", F_Quit, + {ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, + ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }}, +}; + +const Commands *commands= &_commands[0]; +const int commandCount = sizeof(_commands) / sizeof(_commands[0]); + + diff --git a/security/nss/cmd/lib/pk11table.h b/security/nss/cmd/lib/pk11table.h new file mode 100644 index 000000000..7fbc010ae --- /dev/null +++ b/security/nss/cmd/lib/pk11table.h @@ -0,0 +1,144 @@ + +/* + * Supported functions.. + */ +#include <pkcs11.h> +#include "nspr.h" +#include "prtypes.h" + +typedef enum { + F_No_Function, +#undef CK_NEED_ARG_LIST +#define CK_PKCS11_FUNCTION_INFO(func) F_##func, +#include "pkcs11f.h" +#undef CK_NEED_ARG_LISt +#undef CK_PKCS11_FUNCTION_INFO + F_SetVar, + F_NewArray, + F_NewTemplate, + F_NewMechanism, + F_BuildTemplate, + F_SetTemplate, + F_Print, + F_SaveVar, + F_RestoreVar, + F_Delete, + F_List, + F_Run, + F_Load, + F_Unload, + F_System, + F_Quit, +} FunctionType; + +/* + * Supported Argument Types + */ +typedef enum { + ArgNone, + ArgVar, + ArgULong, + ArgChar, + ArgUTF8, + ArgInfo, + ArgSlotInfo, + ArgTokenInfo, + ArgSessionInfo, + ArgAttribute, + ArgMechanism, + ArgMechanismInfo, + ArgInitializeArgs, + ArgFunctionList, +/* Modifier Flags */ + ArgMask = 0xff, + ArgOut = 0x100, + ArgArray = 0x200, + ArgNew = 0x400, + ArgFile = 0x800, +} ArgType; + +typedef enum _constType +{ + ConstNone, + ConstBool, + ConstInfoFlags, + ConstSlotFlags, + ConstTokenFlags, + ConstSessionFlags, + ConstMechanismFlags, + ConstInitializeFlags, + ConstUsers, + ConstSessionState, + ConstObject, + ConstHardware, + ConstKeyType, + ConstCertType, + ConstAttribute, + ConstMechanism, + ConstResult, + ConstTrust +} ConstType; + +typedef struct _constant { + const char *name; + CK_ULONG value; + ConstType type; + ConstType attrType; +} Constant ; + +/* + * Values structures. + */ +typedef struct _values { + ArgType type; + ConstType constType; + int size; + char *filename; + void *data; + int reference; + int arraySize; +} Value; + +/* + * Variables + */ +typedef struct _variable Variable; +struct _variable { + Variable *next; + char *vname; + Value *value; +}; + +/* NOTE: if you change MAX_ARGS, you need to change the commands array + * below as well. + */ + +#define MAX_ARGS 10 +/* + * structure for master command array + */ +typedef struct _commands { + char *fname; + FunctionType fType; + ArgType args[MAX_ARGS]; +} Commands; + +typedef struct _module { + PRLibrary *library; + CK_FUNCTION_LIST *functionList; +} Module; + + +/* + * the command array itself. Make name to function and it's arguments + */ + +extern const char **valueString; +extern const int valueCount; +extern const char **constTypeString; +extern const int constTypeCount; +extern const Constant *consts; +extern const int constCount; +extern const Commands *commands; +extern const int commandCount; + |