pk11table.c (74027B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 #include "pk11table.h" 6 7 const char *_valueString[] = { 8 "None", 9 "Variable", 10 "CK_ULONG", 11 "Data", 12 "UTF8", 13 "CK_INFO", 14 "CK_SLOT_INFO", 15 "CK_TOKEN_INFO", 16 "CK_SESSION_INFO", 17 "CK_ATTRIBUTE", 18 "CK_MECHANISM", 19 "CK_MECHANISM_INFO", 20 "CK_C_INITIALIZE_ARGS", 21 "CK_FUNCTION_LIST" 22 }; 23 24 const char **valueString = &_valueString[0]; 25 const int valueCount = sizeof(_valueString) / sizeof(_valueString[0]); 26 27 const char *_constTypeString[] = { 28 "None", 29 "Bool", 30 "InfoFlags", 31 "SlotFlags", 32 "TokenFlags", 33 "SessionFlags", 34 "MechanismFlags", 35 "InitializeFlags", 36 "Users", 37 "SessionState", 38 "Object", 39 "Hardware", 40 "KeyType", 41 "CertificateType", 42 "Attribute", 43 "Mechanism", 44 "Result", 45 "Trust", 46 "AvailableSizes", 47 "CertCategory", 48 "SecurityDomain", 49 "OTPFormat", 50 "OTPParam", 51 "CurrentSize" 52 }; 53 54 const char **constTypeString = &_constTypeString[0]; 55 const int constTypeCount = sizeof(_constTypeString) / sizeof(_constTypeString[0]); 56 57 #define mkEntry(x, t) \ 58 { \ 59 #x, x, Const##t, ConstNone \ 60 } 61 #define mkEntry2(x, t, t2) \ 62 { \ 63 #x, x, Const##t, Const##t2 \ 64 } 65 66 const Constant _consts[] = { 67 mkEntry(CK_FALSE, Bool), 68 mkEntry(CK_TRUE, Bool), 69 70 mkEntry(CKF_TOKEN_PRESENT, SlotFlags), 71 mkEntry(CKF_REMOVABLE_DEVICE, SlotFlags), 72 mkEntry(CKF_HW_SLOT, SlotFlags), 73 74 mkEntry(CKF_RNG, TokenFlags), 75 mkEntry(CKF_WRITE_PROTECTED, TokenFlags), 76 mkEntry(CKF_LOGIN_REQUIRED, TokenFlags), 77 mkEntry(CKF_USER_PIN_INITIALIZED, TokenFlags), 78 mkEntry(CKF_RESTORE_KEY_NOT_NEEDED, TokenFlags), 79 mkEntry(CKF_CLOCK_ON_TOKEN, TokenFlags), 80 mkEntry(CKF_PROTECTED_AUTHENTICATION_PATH, TokenFlags), 81 mkEntry(CKF_DUAL_CRYPTO_OPERATIONS, TokenFlags), 82 mkEntry(CKF_TOKEN_INITIALIZED, TokenFlags), 83 mkEntry(CKF_SECONDARY_AUTHENTICATION, TokenFlags), 84 mkEntry(CKF_USER_PIN_COUNT_LOW, TokenFlags), 85 mkEntry(CKF_USER_PIN_FINAL_TRY, TokenFlags), 86 mkEntry(CKF_USER_PIN_LOCKED, TokenFlags), 87 mkEntry(CKF_USER_PIN_TO_BE_CHANGED, TokenFlags), 88 mkEntry(CKF_SO_PIN_COUNT_LOW, TokenFlags), 89 mkEntry(CKF_SO_PIN_FINAL_TRY, TokenFlags), 90 mkEntry(CKF_SO_PIN_LOCKED, TokenFlags), 91 mkEntry(CKF_SO_PIN_TO_BE_CHANGED, TokenFlags), 92 mkEntry(CKF_ERROR_STATE, TokenFlags), 93 mkEntry(CKF_SEED_RANDOM_REQUIRED, TokenFlags), 94 mkEntry(CKF_ASYNC_SESSION_SUPPORTED, TokenFlags), 95 96 mkEntry(CKF_RW_SESSION, SessionFlags), 97 mkEntry(CKF_SERIAL_SESSION, SessionFlags), 98 mkEntry(CKF_ASYNC_SESSION, SessionFlags), 99 100 mkEntry(CKF_HW, MechanismFlags), 101 mkEntry(CKF_MESSAGE_ENCRYPT, MechanismFlags), 102 mkEntry(CKF_MESSAGE_DECRYPT, MechanismFlags), 103 mkEntry(CKF_MESSAGE_SIGN, MechanismFlags), 104 mkEntry(CKF_MESSAGE_VERIFY, MechanismFlags), 105 mkEntry(CKF_MULTI_MESSAGE, MechanismFlags), 106 mkEntry(CKF_FIND_OBJECTS, MechanismFlags), 107 108 mkEntry(CKF_ENCRYPT, MechanismFlags), 109 mkEntry(CKF_DECRYPT, MechanismFlags), 110 mkEntry(CKF_DIGEST, MechanismFlags), 111 mkEntry(CKF_SIGN, MechanismFlags), 112 mkEntry(CKF_SIGN_RECOVER, MechanismFlags), 113 mkEntry(CKF_VERIFY, MechanismFlags), 114 mkEntry(CKF_VERIFY_RECOVER, MechanismFlags), 115 mkEntry(CKF_GENERATE, MechanismFlags), 116 mkEntry(CKF_GENERATE_KEY_PAIR, MechanismFlags), 117 mkEntry(CKF_WRAP, MechanismFlags), 118 mkEntry(CKF_UNWRAP, MechanismFlags), 119 mkEntry(CKF_DERIVE, MechanismFlags), 120 mkEntry(CKF_EC_F_P, MechanismFlags), 121 mkEntry(CKF_EC_F_2M, MechanismFlags), 122 mkEntry(CKF_EC_ECPARAMETERS, MechanismFlags), 123 mkEntry(CKF_EC_NAMEDCURVE, MechanismFlags), 124 mkEntry(CKF_EC_UNCOMPRESS, MechanismFlags), 125 mkEntry(CKF_EC_COMPRESS, MechanismFlags), 126 mkEntry(CKF_DECAPSULATE, MechanismFlags), 127 mkEntry(CKF_ENCAPSULATE, MechanismFlags), 128 mkEntry(CKF_EXTENSION, MechanismFlags), 129 130 mkEntry(CKF_LIBRARY_CANT_CREATE_OS_THREADS, InitializeFlags), 131 mkEntry(CKF_OS_LOCKING_OK, InitializeFlags), 132 133 mkEntry(CKU_SO, Users), 134 mkEntry(CKU_USER, Users), 135 mkEntry(CKU_CONTEXT_SPECIFIC, Users), 136 137 mkEntry(CKS_RO_PUBLIC_SESSION, SessionState), 138 mkEntry(CKS_RO_USER_FUNCTIONS, SessionState), 139 mkEntry(CKS_RW_PUBLIC_SESSION, SessionState), 140 mkEntry(CKS_RW_USER_FUNCTIONS, SessionState), 141 mkEntry(CKS_RW_SO_FUNCTIONS, SessionState), 142 143 mkEntry(CKO_DATA, Object), 144 mkEntry(CKO_CERTIFICATE, Object), 145 mkEntry(CKO_PUBLIC_KEY, Object), 146 mkEntry(CKO_PRIVATE_KEY, Object), 147 mkEntry(CKO_SECRET_KEY, Object), 148 mkEntry(CKO_HW_FEATURE, Object), 149 mkEntry(CKO_DOMAIN_PARAMETERS, Object), 150 mkEntry(CKO_MECHANISM, Object), 151 mkEntry(CKO_OTP_KEY, Object), 152 mkEntry(CKO_PROFILE, Object), 153 mkEntry(CKO_TRUST, Object), 154 mkEntry(CKO_VALIDATION, Object), 155 mkEntry(CKO_NSS_CRL, Object), 156 mkEntry(CKO_NSS_SMIME, Object), 157 mkEntry(CKO_NSS_TRUST, Object), 158 mkEntry(CKO_NSS_BUILTIN_ROOT_LIST, Object), 159 160 mkEntry(CKH_MONOTONIC_COUNTER, Hardware), 161 mkEntry(CKH_CLOCK, Hardware), 162 mkEntry(CKH_USER_INTERFACE, Hardware), 163 164 mkEntry(CKK_RSA, KeyType), 165 mkEntry(CKK_DSA, KeyType), 166 mkEntry(CKK_DH, KeyType), 167 mkEntry(CKK_ECDSA, KeyType), 168 mkEntry(CKK_EC, KeyType), 169 mkEntry(CKK_X9_42_DH, KeyType), 170 mkEntry(CKK_KEA, KeyType), 171 mkEntry(CKK_GENERIC_SECRET, KeyType), 172 mkEntry(CKK_RC2, KeyType), 173 mkEntry(CKK_RC4, KeyType), 174 mkEntry(CKK_DES, KeyType), 175 mkEntry(CKK_DES2, KeyType), 176 mkEntry(CKK_DES3, KeyType), 177 mkEntry(CKK_CAST, KeyType), 178 mkEntry(CKK_CAST3, KeyType), 179 mkEntry(CKK_CAST5, KeyType), 180 mkEntry(CKK_CAST128, KeyType), 181 mkEntry(CKK_RC5, KeyType), 182 mkEntry(CKK_IDEA, KeyType), 183 mkEntry(CKK_SKIPJACK, KeyType), 184 mkEntry(CKK_BATON, KeyType), 185 mkEntry(CKK_JUNIPER, KeyType), 186 mkEntry(CKK_CDMF, KeyType), 187 mkEntry(CKK_AES, KeyType), 188 mkEntry(CKK_BLOWFISH, KeyType), 189 mkEntry(CKK_TWOFISH, KeyType), 190 mkEntry(CKK_SECURID, KeyType), 191 mkEntry(CKK_ACTI, KeyType), 192 mkEntry(CKK_HOTP, KeyType), 193 mkEntry(CKK_CAMELLIA, KeyType), 194 mkEntry(CKK_SEED, KeyType), 195 mkEntry(CKK_ARIA, KeyType), 196 mkEntry(CKK_MD5_HMAC, KeyType), 197 mkEntry(CKK_SHA_1_HMAC, KeyType), 198 mkEntry(CKK_RIPEMD128_HMAC, KeyType), 199 mkEntry(CKK_RIPEMD160_HMAC, KeyType), 200 mkEntry(CKK_SHA256_HMAC, KeyType), 201 mkEntry(CKK_SHA384_HMAC, KeyType), 202 mkEntry(CKK_SHA512_HMAC, KeyType), 203 mkEntry(CKK_SHA224_HMAC, KeyType), 204 mkEntry(CKK_GOSTR3410, KeyType), 205 mkEntry(CKK_GOSTR3411, KeyType), 206 mkEntry(CKK_GOST28147, KeyType), 207 mkEntry(CKK_CHACHA20, KeyType), 208 mkEntry(CKK_POLY1305, KeyType), 209 mkEntry(CKK_AES_XTS, KeyType), 210 mkEntry(CKK_SHA3_224_HMAC, KeyType), 211 mkEntry(CKK_SHA3_256_HMAC, KeyType), 212 mkEntry(CKK_SHA3_384_HMAC, KeyType), 213 mkEntry(CKK_SHA3_512_HMAC, KeyType), 214 mkEntry(CKK_BLAKE2B_160_HMAC, KeyType), 215 mkEntry(CKK_BLAKE2B_256_HMAC, KeyType), 216 mkEntry(CKK_BLAKE2B_384_HMAC, KeyType), 217 mkEntry(CKK_BLAKE2B_512_HMAC, KeyType), 218 mkEntry(CKK_SALSA20, KeyType), 219 mkEntry(CKK_X2RATCHET, KeyType), 220 mkEntry(CKK_EC_EDWARDS, KeyType), 221 mkEntry(CKK_EC_MONTGOMERY, KeyType), 222 mkEntry(CKK_HKDF, KeyType), 223 mkEntry(CKK_SHA512_224_HMAC, KeyType), 224 mkEntry(CKK_SHA512_256_HMAC, KeyType), 225 mkEntry(CKK_SHA512_T_HMAC, KeyType), 226 mkEntry(CKK_HSS, KeyType), 227 mkEntry(CKK_ML_DSA, KeyType), 228 mkEntry(CKK_ML_KEM, KeyType), 229 mkEntry(CKK_SLH_DSA, KeyType), 230 mkEntry(CKK_XMSS, KeyType), 231 mkEntry(CKK_XMSSMT, KeyType), 232 mkEntry(CKK_NSS_PKCS8, KeyType), 233 234 mkEntry(CKC_X_509, CertType), 235 mkEntry(CKC_X_509_ATTR_CERT, CertType), 236 mkEntry(CKC_WTLS, CertType), 237 238 mkEntry(CK_CERTIFICATE_CATEGORY_UNSPECIFIED, CertCategory), 239 mkEntry(CK_CERTIFICATE_CATEGORY_TOKEN_USER, CertCategory), 240 mkEntry(CK_CERTIFICATE_CATEGORY_AUTHORITY, CertCategory), 241 mkEntry(CK_CERTIFICATE_CATEGORY_OTHER_ENTITY, CertCategory), 242 243 mkEntry(CK_SECURITY_DOMAIN_UNSPECIFIED, SecurityDomain), 244 mkEntry(CK_SECURITY_DOMAIN_MANUFACTURER, SecurityDomain), 245 mkEntry(CK_SECURITY_DOMAIN_OPERATOR, SecurityDomain), 246 mkEntry(CK_SECURITY_DOMAIN_THIRD_PARTY, SecurityDomain), 247 248 mkEntry(CK_OTP_FORMAT_DECIMAL, OTPFormat), 249 mkEntry(CK_OTP_FORMAT_HEXADECIMAL, OTPFormat), 250 mkEntry(CK_OTP_FORMAT_ALPHANUMERIC, OTPFormat), 251 mkEntry(CK_OTP_FORMAT_BINARY, OTPFormat), 252 253 mkEntry(CK_OTP_PARAM_IGNORED, OTPParam), 254 mkEntry(CK_OTP_PARAM_OPTIONAL, OTPParam), 255 mkEntry(CK_OTP_PARAM_MANDATORY, OTPParam), 256 257 mkEntry2(CKA_CLASS, Attribute, Object), 258 mkEntry2(CKA_TOKEN, Attribute, Bool), 259 mkEntry2(CKA_PRIVATE, Attribute, Bool), 260 mkEntry2(CKA_LABEL, Attribute, None), 261 mkEntry2(CKA_UNIQUE_ID, Attribute, None), 262 mkEntry2(CKA_APPLICATION, Attribute, None), 263 mkEntry2(CKA_VALUE, Attribute, None), 264 mkEntry2(CKA_OBJECT_ID, Attribute, None), 265 mkEntry2(CKA_CERTIFICATE_TYPE, Attribute, CertType), 266 mkEntry2(CKA_ISSUER, Attribute, None), 267 mkEntry2(CKA_SERIAL_NUMBER, Attribute, None), 268 mkEntry2(CKA_AC_ISSUER, Attribute, None), 269 mkEntry2(CKA_OWNER, Attribute, None), 270 mkEntry2(CKA_ATTR_TYPES, Attribute, None), 271 mkEntry2(CKA_TRUSTED, Attribute, Bool), 272 mkEntry2(CKA_CERTIFICATE_CATEGORY, Attribute, CertCategory), 273 mkEntry2(CKA_JAVA_MIDP_SECURITY_DOMAIN, Attribute, SecurityDomain), 274 mkEntry2(CKA_URL, Attribute, None), 275 mkEntry2(CKA_HASH_OF_SUBJECT_PUBLIC_KEY, Attribute, None), 276 mkEntry2(CKA_HASH_OF_ISSUER_PUBLIC_KEY, Attribute, None), 277 mkEntry2(CKA_NAME_HASH_ALGORITHM, Attribute, Mechanism), 278 mkEntry2(CKA_CHECK_VALUE, Attribute, None), 279 mkEntry2(CKA_KEY_TYPE, Attribute, KeyType), 280 mkEntry2(CKA_SUBJECT, Attribute, None), 281 mkEntry2(CKA_ID, Attribute, None), 282 mkEntry2(CKA_SENSITIVE, Attribute, Bool), 283 mkEntry2(CKA_ENCRYPT, Attribute, Bool), 284 mkEntry2(CKA_DECRYPT, Attribute, Bool), 285 mkEntry2(CKA_WRAP, Attribute, Bool), 286 mkEntry2(CKA_UNWRAP, Attribute, Bool), 287 mkEntry2(CKA_SIGN, Attribute, Bool), 288 mkEntry2(CKA_SIGN_RECOVER, Attribute, Bool), 289 mkEntry2(CKA_VERIFY, Attribute, Bool), 290 mkEntry2(CKA_VERIFY_RECOVER, Attribute, Bool), 291 mkEntry2(CKA_DERIVE, Attribute, Bool), 292 mkEntry2(CKA_START_DATE, Attribute, None), 293 mkEntry2(CKA_END_DATE, Attribute, None), 294 mkEntry2(CKA_MODULUS, Attribute, None), 295 mkEntry2(CKA_MODULUS_BITS, Attribute, None), 296 mkEntry2(CKA_PUBLIC_EXPONENT, Attribute, None), 297 mkEntry2(CKA_PRIVATE_EXPONENT, Attribute, None), 298 mkEntry2(CKA_PRIME_1, Attribute, None), 299 mkEntry2(CKA_PRIME_2, Attribute, None), 300 mkEntry2(CKA_EXPONENT_1, Attribute, None), 301 mkEntry2(CKA_EXPONENT_2, Attribute, None), 302 mkEntry2(CKA_COEFFICIENT, Attribute, None), 303 mkEntry2(CKA_PUBLIC_KEY_INFO, Attribute, None), 304 mkEntry2(CKA_PRIME, Attribute, None), 305 mkEntry2(CKA_SUBPRIME, Attribute, None), 306 mkEntry2(CKA_BASE, Attribute, None), 307 mkEntry2(CKA_PRIME_BITS, Attribute, None), 308 mkEntry2(CKA_SUBPRIME_BITS, Attribute, None), 309 mkEntry2(CKA_SUB_PRIME_BITS, Attribute, None), 310 mkEntry2(CKA_VALUE_BITS, Attribute, None), 311 mkEntry2(CKA_VALUE_LEN, Attribute, None), 312 mkEntry2(CKA_EXTRACTABLE, Attribute, Bool), 313 mkEntry2(CKA_LOCAL, Attribute, Bool), 314 mkEntry2(CKA_NEVER_EXTRACTABLE, Attribute, Bool), 315 mkEntry2(CKA_ALWAYS_SENSITIVE, Attribute, Bool), 316 mkEntry2(CKA_KEY_GEN_MECHANISM, Attribute, Mechanism), 317 mkEntry2(CKA_MODIFIABLE, Attribute, Bool), 318 mkEntry2(CKA_COPYABLE, Attribute, Bool), 319 mkEntry2(CKA_DESTROYABLE, Attribute, Bool), 320 mkEntry2(CKA_ECDSA_PARAMS, Attribute, None), 321 mkEntry2(CKA_EC_PARAMS, Attribute, None), 322 mkEntry2(CKA_EC_POINT, Attribute, None), 323 mkEntry2(CKA_SECONDARY_AUTH, Attribute, None), 324 mkEntry2(CKA_AUTH_PIN_FLAGS, Attribute, None), 325 mkEntry2(CKA_ALWAYS_AUTHENTICATE, Attribute, Bool), 326 mkEntry2(CKA_WRAP_WITH_TRUSTED, Attribute, Bool), 327 mkEntry2(CKA_WRAP_TEMPLATE, Attribute, None), 328 mkEntry2(CKA_UNWRAP_TEMPLATE, Attribute, None), 329 mkEntry2(CKA_DERIVE_TEMPLATE, Attribute, None), 330 mkEntry2(CKA_OTP_FORMAT, Attribute, OTPFormat), 331 mkEntry2(CKA_OTP_LENGTH, Attribute, None), 332 mkEntry2(CKA_OTP_TIME_INTERVAL, Attribute, None), 333 mkEntry2(CKA_OTP_USER_FRIENDLY_MODE, Attribute, None), 334 mkEntry2(CKA_OTP_CHALLENGE_REQUIREMENT, Attribute, OTPParam), 335 mkEntry2(CKA_OTP_TIME_REQUIREMENT, Attribute, OTPParam), 336 mkEntry2(CKA_OTP_COUNTER_REQUIREMENT, Attribute, OTPParam), 337 mkEntry2(CKA_OTP_PIN_REQUIREMENT, Attribute, OTPParam), 338 mkEntry2(CKA_OTP_COUNTER, Attribute, None), 339 mkEntry2(CKA_OTP_TIME, Attribute, None), 340 mkEntry2(CKA_OTP_USER_IDENTIFIER, Attribute, None), 341 mkEntry2(CKA_OTP_SERVICE_IDENTIFIER, Attribute, None), 342 mkEntry2(CKA_OTP_SERVICE_LOGO, Attribute, None), 343 mkEntry2(CKA_OTP_SERVICE_LOGO_TYPE, Attribute, None), 344 mkEntry2(CKA_GOSTR3410_PARAMS, Attribute, None), 345 mkEntry2(CKA_GOSTR3411_PARAMS, Attribute, None), 346 mkEntry2(CKA_GOST28147_PARAMS, Attribute, None), 347 mkEntry2(CKA_HW_FEATURE_TYPE, Attribute, Hardware), 348 mkEntry2(CKA_RESET_ON_INIT, Attribute, Bool), 349 mkEntry2(CKA_HAS_RESET, Attribute, Bool), 350 mkEntry2(CKA_PROFILE_ID, Attribute, None), 351 mkEntry2(CKA_PKCS_TRUST_SERVER_AUTH, Attribute, Trust), 352 mkEntry2(CKA_PKCS_TRUST_CLIENT_AUTH, Attribute, Trust), 353 mkEntry2(CKA_PKCS_TRUST_CODE_SIGNING, Attribute, Trust), 354 mkEntry2(CKA_PKCS_TRUST_EMAIL_PROTECTION, Attribute, Trust), 355 mkEntry2(CKA_TRUST_IPSEC_IKE, Attribute, Trust), 356 mkEntry2(CKA_PKCS_TRUST_TIME_STAMPING, Attribute, Trust), 357 mkEntry2(CKA_NAME_HASH_ALGORITHM, Attribute, Trust), 358 mkEntry2(CKA_HASH_OF_CERTIFICATE, Attribute, Trust), 359 mkEntry2(CKA_NSS_URL, Attribute, None), 360 mkEntry2(CKA_NSS_EMAIL, Attribute, None), 361 mkEntry2(CKA_NSS_SMIME_INFO, Attribute, None), 362 mkEntry2(CKA_NSS_SMIME_TIMESTAMP, Attribute, None), 363 mkEntry2(CKA_NSS_PKCS8_SALT, Attribute, None), 364 mkEntry2(CKA_NSS_PASSWORD_CHECK, Attribute, None), 365 mkEntry2(CKA_NSS_EXPIRES, Attribute, None), 366 mkEntry2(CKA_NSS_KRL, Attribute, None), 367 mkEntry2(CKA_NSS_PQG_COUNTER, Attribute, None), 368 mkEntry2(CKA_NSS_PQG_SEED, Attribute, None), 369 mkEntry2(CKA_NSS_PQG_H, Attribute, None), 370 mkEntry2(CKA_NSS_PQG_SEED_BITS, Attribute, None), 371 mkEntry2(CKA_NSS_TRUST_DIGITAL_SIGNATURE, Attribute, Trust), 372 mkEntry2(CKA_NSS_TRUST_NON_REPUDIATION, Attribute, Trust), 373 mkEntry2(CKA_NSS_TRUST_KEY_ENCIPHERMENT, Attribute, Trust), 374 mkEntry2(CKA_NSS_TRUST_DATA_ENCIPHERMENT, Attribute, Trust), 375 mkEntry2(CKA_NSS_TRUST_KEY_AGREEMENT, Attribute, Trust), 376 mkEntry2(CKA_NSS_TRUST_KEY_CERT_SIGN, Attribute, Trust), 377 mkEntry2(CKA_NSS_TRUST_CRL_SIGN, Attribute, Trust), 378 mkEntry2(CKA_NSS_TRUST_SERVER_AUTH, Attribute, Trust), 379 mkEntry2(CKA_NSS_TRUST_CLIENT_AUTH, Attribute, Trust), 380 mkEntry2(CKA_NSS_TRUST_CODE_SIGNING, Attribute, Trust), 381 mkEntry2(CKA_NSS_TRUST_EMAIL_PROTECTION, Attribute, Trust), 382 mkEntry2(CKA_NSS_TRUST_IPSEC_END_SYSTEM, Attribute, Trust), 383 mkEntry2(CKA_NSS_TRUST_IPSEC_TUNNEL, Attribute, Trust), 384 mkEntry2(CKA_NSS_TRUST_IPSEC_USER, Attribute, Trust), 385 mkEntry2(CKA_NSS_TRUST_TIME_STAMPING, Attribute, Trust), 386 mkEntry2(CKA_NSS_TRUST_STEP_UP_APPROVED, Attribute, Bool), 387 mkEntry2(CKA_NSS_CERT_SHA1_HASH, Attribute, None), 388 mkEntry2(CKA_NSS_CERT_MD5_HASH, Attribute, None), 389 mkEntry2(CKA_NSS_DB, Attribute, None), 390 mkEntry2(CKA_NSS_TRUST, Attribute, Trust), 391 392 mkEntry(CKM_RSA_PKCS, Mechanism), 393 mkEntry(CKM_RSA_9796, Mechanism), 394 mkEntry(CKM_RSA_X_509, Mechanism), 395 mkEntry(CKM_RSA_PKCS_KEY_PAIR_GEN, Mechanism), 396 mkEntry(CKM_MD2_RSA_PKCS, Mechanism), 397 mkEntry(CKM_MD5_RSA_PKCS, Mechanism), 398 mkEntry(CKM_SHA1_RSA_PKCS, Mechanism), 399 mkEntry(CKM_RIPEMD128_RSA_PKCS, Mechanism), 400 mkEntry(CKM_RIPEMD160_RSA_PKCS, Mechanism), 401 mkEntry(CKM_RSA_PKCS_OAEP, Mechanism), 402 mkEntry(CKM_RSA_X9_31_KEY_PAIR_GEN, Mechanism), 403 mkEntry(CKM_RSA_X9_31, Mechanism), 404 mkEntry(CKM_SHA1_RSA_X9_31, Mechanism), 405 mkEntry(CKM_DSA_KEY_PAIR_GEN, Mechanism), 406 mkEntry(CKM_DSA, Mechanism), 407 mkEntry(CKM_DSA_SHA1, Mechanism), 408 mkEntry(CKM_DH_PKCS_KEY_PAIR_GEN, Mechanism), 409 mkEntry(CKM_DH_PKCS_DERIVE, Mechanism), 410 mkEntry(CKM_X9_42_DH_DERIVE, Mechanism), 411 mkEntry(CKM_X9_42_DH_HYBRID_DERIVE, Mechanism), 412 mkEntry(CKM_X9_42_MQV_DERIVE, Mechanism), 413 mkEntry(CKM_SHA256_RSA_PKCS, Mechanism), 414 mkEntry(CKM_SHA384_RSA_PKCS, Mechanism), 415 mkEntry(CKM_SHA512_RSA_PKCS, Mechanism), 416 mkEntry(CKM_RC2_KEY_GEN, Mechanism), 417 mkEntry(CKM_RC2_ECB, Mechanism), 418 mkEntry(CKM_RC2_CBC, Mechanism), 419 mkEntry(CKM_RC2_MAC, Mechanism), 420 mkEntry(CKM_RC2_MAC_GENERAL, Mechanism), 421 mkEntry(CKM_RC2_CBC_PAD, Mechanism), 422 mkEntry(CKM_RC4_KEY_GEN, Mechanism), 423 mkEntry(CKM_RC4, Mechanism), 424 mkEntry(CKM_DES_KEY_GEN, Mechanism), 425 mkEntry(CKM_DES_ECB, Mechanism), 426 mkEntry(CKM_DES_CBC, Mechanism), 427 mkEntry(CKM_DES_MAC, Mechanism), 428 mkEntry(CKM_DES_MAC_GENERAL, Mechanism), 429 mkEntry(CKM_DES_CBC_PAD, Mechanism), 430 mkEntry(CKM_DES2_KEY_GEN, Mechanism), 431 mkEntry(CKM_DES3_KEY_GEN, Mechanism), 432 mkEntry(CKM_DES3_ECB, Mechanism), 433 mkEntry(CKM_DES3_CBC, Mechanism), 434 mkEntry(CKM_DES3_MAC, Mechanism), 435 mkEntry(CKM_DES3_MAC_GENERAL, Mechanism), 436 mkEntry(CKM_DES3_CBC_PAD, Mechanism), 437 mkEntry(CKM_CDMF_KEY_GEN, Mechanism), 438 mkEntry(CKM_CDMF_ECB, Mechanism), 439 mkEntry(CKM_CDMF_CBC, Mechanism), 440 mkEntry(CKM_CDMF_MAC, Mechanism), 441 mkEntry(CKM_CDMF_MAC_GENERAL, Mechanism), 442 mkEntry(CKM_CDMF_CBC_PAD, Mechanism), 443 mkEntry(CKM_MD2, Mechanism), 444 mkEntry(CKM_MD2_HMAC, Mechanism), 445 mkEntry(CKM_MD2_HMAC_GENERAL, Mechanism), 446 mkEntry(CKM_MD5, Mechanism), 447 mkEntry(CKM_MD5_HMAC, Mechanism), 448 mkEntry(CKM_MD5_HMAC_GENERAL, Mechanism), 449 mkEntry(CKM_SHA_1, Mechanism), 450 mkEntry(CKM_SHA_1_HMAC, Mechanism), 451 mkEntry(CKM_SHA_1_HMAC_GENERAL, Mechanism), 452 mkEntry(CKM_RIPEMD128, Mechanism), 453 mkEntry(CKM_RIPEMD128_HMAC, Mechanism), 454 mkEntry(CKM_RIPEMD128_HMAC_GENERAL, Mechanism), 455 mkEntry(CKM_RIPEMD160, Mechanism), 456 mkEntry(CKM_RIPEMD160_HMAC, Mechanism), 457 mkEntry(CKM_RIPEMD160_HMAC_GENERAL, Mechanism), 458 mkEntry(CKM_SHA256, Mechanism), 459 mkEntry(CKM_SHA256_HMAC_GENERAL, Mechanism), 460 mkEntry(CKM_SHA256_HMAC, Mechanism), 461 mkEntry(CKM_SHA384, Mechanism), 462 mkEntry(CKM_SHA384_HMAC_GENERAL, Mechanism), 463 mkEntry(CKM_SHA384_HMAC, Mechanism), 464 mkEntry(CKM_SHA512, Mechanism), 465 mkEntry(CKM_SHA512_HMAC_GENERAL, Mechanism), 466 mkEntry(CKM_SHA512_HMAC, Mechanism), 467 mkEntry(CKM_AES_CMAC, Mechanism), 468 mkEntry(CKM_AES_CMAC_GENERAL, Mechanism), 469 mkEntry(CKM_CAST_KEY_GEN, Mechanism), 470 mkEntry(CKM_CAST_ECB, Mechanism), 471 mkEntry(CKM_CAST_CBC, Mechanism), 472 mkEntry(CKM_CAST_MAC, Mechanism), 473 mkEntry(CKM_CAST_MAC_GENERAL, Mechanism), 474 mkEntry(CKM_CAST_CBC_PAD, Mechanism), 475 mkEntry(CKM_CAST3_KEY_GEN, Mechanism), 476 mkEntry(CKM_CAST3_ECB, Mechanism), 477 mkEntry(CKM_CAST3_CBC, Mechanism), 478 mkEntry(CKM_CAST3_MAC, Mechanism), 479 mkEntry(CKM_CAST3_MAC_GENERAL, Mechanism), 480 mkEntry(CKM_CAST3_CBC_PAD, Mechanism), 481 mkEntry(CKM_CAST5_KEY_GEN, Mechanism), 482 mkEntry(CKM_CAST128_KEY_GEN, Mechanism), 483 mkEntry(CKM_CAST5_ECB, Mechanism), 484 mkEntry(CKM_CAST128_ECB, Mechanism), 485 mkEntry(CKM_CAST5_CBC, Mechanism), 486 mkEntry(CKM_CAST128_CBC, Mechanism), 487 mkEntry(CKM_CAST5_MAC, Mechanism), 488 mkEntry(CKM_CAST128_MAC, Mechanism), 489 mkEntry(CKM_CAST5_MAC_GENERAL, Mechanism), 490 mkEntry(CKM_CAST128_MAC_GENERAL, Mechanism), 491 mkEntry(CKM_CAST5_CBC_PAD, Mechanism), 492 mkEntry(CKM_CAST128_CBC_PAD, Mechanism), 493 mkEntry(CKM_RC5_KEY_GEN, Mechanism), 494 mkEntry(CKM_RC5_ECB, Mechanism), 495 mkEntry(CKM_RC5_CBC, Mechanism), 496 mkEntry(CKM_RC5_MAC, Mechanism), 497 mkEntry(CKM_RC5_MAC_GENERAL, Mechanism), 498 mkEntry(CKM_RC5_CBC_PAD, Mechanism), 499 mkEntry(CKM_IDEA_KEY_GEN, Mechanism), 500 mkEntry(CKM_IDEA_ECB, Mechanism), 501 mkEntry(CKM_IDEA_CBC, Mechanism), 502 mkEntry(CKM_IDEA_MAC, Mechanism), 503 mkEntry(CKM_IDEA_MAC_GENERAL, Mechanism), 504 mkEntry(CKM_IDEA_CBC_PAD, Mechanism), 505 mkEntry(CKM_GENERIC_SECRET_KEY_GEN, Mechanism), 506 mkEntry(CKM_CONCATENATE_BASE_AND_KEY, Mechanism), 507 mkEntry(CKM_CONCATENATE_BASE_AND_DATA, Mechanism), 508 mkEntry(CKM_CONCATENATE_DATA_AND_BASE, Mechanism), 509 mkEntry(CKM_XOR_BASE_AND_DATA, Mechanism), 510 mkEntry(CKM_EXTRACT_KEY_FROM_KEY, Mechanism), 511 mkEntry(CKM_SSL3_PRE_MASTER_KEY_GEN, Mechanism), 512 mkEntry(CKM_SSL3_MASTER_KEY_DERIVE, Mechanism), 513 mkEntry(CKM_SSL3_KEY_AND_MAC_DERIVE, Mechanism), 514 mkEntry(CKM_SSL3_MASTER_KEY_DERIVE_DH, Mechanism), 515 mkEntry(CKM_TLS_PRE_MASTER_KEY_GEN, Mechanism), 516 mkEntry(CKM_TLS_MASTER_KEY_DERIVE, Mechanism), 517 mkEntry(CKM_NSS_TLS_MASTER_KEY_DERIVE_SHA256, Mechanism), 518 mkEntry(CKM_TLS_KEY_AND_MAC_DERIVE, Mechanism), 519 mkEntry(CKM_NSS_TLS_KEY_AND_MAC_DERIVE_SHA256, Mechanism), 520 mkEntry(CKM_TLS_MASTER_KEY_DERIVE_DH, Mechanism), 521 mkEntry(CKM_NSS_TLS_MASTER_KEY_DERIVE_DH_SHA256, Mechanism), 522 mkEntry(CKM_SSL3_MD5_MAC, Mechanism), 523 mkEntry(CKM_SSL3_SHA1_MAC, Mechanism), 524 mkEntry(CKM_MD5_KEY_DERIVATION, Mechanism), 525 mkEntry(CKM_MD2_KEY_DERIVATION, Mechanism), 526 mkEntry(CKM_SHA1_KEY_DERIVATION, Mechanism), 527 mkEntry(CKM_SHA256_KEY_DERIVATION, Mechanism), 528 mkEntry(CKM_SHA384_KEY_DERIVATION, Mechanism), 529 mkEntry(CKM_SHA512_KEY_DERIVATION, Mechanism), 530 mkEntry(CKM_PBE_MD2_DES_CBC, Mechanism), 531 mkEntry(CKM_PBE_MD5_DES_CBC, Mechanism), 532 mkEntry(CKM_PBE_MD5_CAST_CBC, Mechanism), 533 mkEntry(CKM_PBE_MD5_CAST3_CBC, Mechanism), 534 mkEntry(CKM_PBE_MD5_CAST5_CBC, Mechanism), 535 mkEntry(CKM_PBE_MD5_CAST128_CBC, Mechanism), 536 mkEntry(CKM_PBE_SHA1_CAST5_CBC, Mechanism), 537 mkEntry(CKM_PBE_SHA1_CAST128_CBC, Mechanism), 538 mkEntry(CKM_PBE_SHA1_RC4_128, Mechanism), 539 mkEntry(CKM_PBE_SHA1_RC4_40, Mechanism), 540 mkEntry(CKM_PBE_SHA1_DES3_EDE_CBC, Mechanism), 541 mkEntry(CKM_PBE_SHA1_DES2_EDE_CBC, Mechanism), 542 mkEntry(CKM_PBE_SHA1_RC2_128_CBC, Mechanism), 543 mkEntry(CKM_PBE_SHA1_RC2_40_CBC, Mechanism), 544 mkEntry(CKM_PKCS5_PBKD2, Mechanism), 545 mkEntry(CKM_PBA_SHA1_WITH_SHA1_HMAC, Mechanism), 546 mkEntry(CKM_KEY_WRAP_LYNKS, Mechanism), 547 mkEntry(CKM_KEY_WRAP_SET_OAEP, Mechanism), 548 mkEntry(CKM_SKIPJACK_KEY_GEN, Mechanism), 549 mkEntry(CKM_SKIPJACK_ECB64, Mechanism), 550 mkEntry(CKM_SKIPJACK_CBC64, Mechanism), 551 mkEntry(CKM_SKIPJACK_OFB64, Mechanism), 552 mkEntry(CKM_SKIPJACK_CFB64, Mechanism), 553 mkEntry(CKM_SKIPJACK_CFB32, Mechanism), 554 mkEntry(CKM_SKIPJACK_CFB16, Mechanism), 555 mkEntry(CKM_SKIPJACK_CFB8, Mechanism), 556 mkEntry(CKM_SKIPJACK_WRAP, Mechanism), 557 mkEntry(CKM_SKIPJACK_PRIVATE_WRAP, Mechanism), 558 mkEntry(CKM_SKIPJACK_RELAYX, Mechanism), 559 mkEntry(CKM_KEA_KEY_PAIR_GEN, Mechanism), 560 mkEntry(CKM_KEA_KEY_DERIVE, Mechanism), 561 mkEntry(CKM_FORTEZZA_TIMESTAMP, Mechanism), 562 mkEntry(CKM_BATON_KEY_GEN, Mechanism), 563 mkEntry(CKM_BATON_ECB128, Mechanism), 564 mkEntry(CKM_BATON_ECB96, Mechanism), 565 mkEntry(CKM_BATON_CBC128, Mechanism), 566 mkEntry(CKM_BATON_COUNTER, Mechanism), 567 mkEntry(CKM_BATON_SHUFFLE, Mechanism), 568 mkEntry(CKM_BATON_WRAP, Mechanism), 569 mkEntry(CKM_ECDSA_KEY_PAIR_GEN, Mechanism), 570 mkEntry(CKM_EC_KEY_PAIR_GEN, Mechanism), 571 mkEntry(CKM_ECDSA, Mechanism), 572 mkEntry(CKM_ECDSA_SHA1, Mechanism), 573 mkEntry(CKM_ECDH1_DERIVE, Mechanism), 574 mkEntry(CKM_ECDH1_COFACTOR_DERIVE, Mechanism), 575 mkEntry(CKM_EC_EDWARDS_KEY_PAIR_GEN, Mechanism), 576 mkEntry(CKM_EDDSA, Mechanism), 577 mkEntry(CKM_ECMQV_DERIVE, Mechanism), 578 mkEntry(CKM_JUNIPER_KEY_GEN, Mechanism), 579 mkEntry(CKM_JUNIPER_ECB128, Mechanism), 580 mkEntry(CKM_JUNIPER_CBC128, Mechanism), 581 mkEntry(CKM_JUNIPER_COUNTER, Mechanism), 582 mkEntry(CKM_JUNIPER_SHUFFLE, Mechanism), 583 mkEntry(CKM_JUNIPER_WRAP, Mechanism), 584 mkEntry(CKM_FASTHASH, Mechanism), 585 mkEntry(CKM_AES_KEY_GEN, Mechanism), 586 mkEntry(CKM_AES_ECB, Mechanism), 587 mkEntry(CKM_AES_CBC, Mechanism), 588 mkEntry(CKM_AES_MAC, Mechanism), 589 mkEntry(CKM_AES_MAC_GENERAL, Mechanism), 590 mkEntry(CKM_AES_CBC_PAD, Mechanism), 591 mkEntry(CKM_CAMELLIA_KEY_GEN, Mechanism), 592 mkEntry(CKM_CAMELLIA_ECB, Mechanism), 593 mkEntry(CKM_CAMELLIA_CBC, Mechanism), 594 mkEntry(CKM_CAMELLIA_MAC, Mechanism), 595 mkEntry(CKM_CAMELLIA_MAC_GENERAL, Mechanism), 596 mkEntry(CKM_CAMELLIA_CBC_PAD, Mechanism), 597 mkEntry(CKM_SEED_KEY_GEN, Mechanism), 598 mkEntry(CKM_SEED_ECB, Mechanism), 599 mkEntry(CKM_SEED_CBC, Mechanism), 600 mkEntry(CKM_SEED_MAC, Mechanism), 601 mkEntry(CKM_SEED_MAC_GENERAL, Mechanism), 602 mkEntry(CKM_SEED_CBC_PAD, Mechanism), 603 mkEntry(CKM_SEED_ECB_ENCRYPT_DATA, Mechanism), 604 mkEntry(CKM_SEED_CBC_ENCRYPT_DATA, Mechanism), 605 mkEntry(CKM_DSA_PARAMETER_GEN, Mechanism), 606 mkEntry(CKM_DH_PKCS_PARAMETER_GEN, Mechanism), 607 mkEntry(CKM_NSS_AES_KEY_WRAP, Mechanism), 608 mkEntry(CKM_NSS_AES_KEY_WRAP_PAD, Mechanism), 609 mkEntry(CKM_NSS_PBE_SHA1_DES_CBC, Mechanism), 610 mkEntry(CKM_NSS_PBE_SHA1_TRIPLE_DES_CBC, Mechanism), 611 mkEntry(CKM_NSS_PBE_SHA1_40_BIT_RC2_CBC, Mechanism), 612 mkEntry(CKM_NSS_PBE_SHA1_128_BIT_RC2_CBC, Mechanism), 613 mkEntry(CKM_NSS_PBE_SHA1_40_BIT_RC4, Mechanism), 614 mkEntry(CKM_NSS_PBE_SHA1_128_BIT_RC4, Mechanism), 615 mkEntry(CKM_NSS_PBE_SHA1_FAULTY_3DES_CBC, Mechanism), 616 mkEntry(CKM_NSS_PBE_SHA1_HMAC_KEY_GEN, Mechanism), 617 mkEntry(CKM_NSS_PBE_MD5_HMAC_KEY_GEN, Mechanism), 618 mkEntry(CKM_NSS_PBE_MD2_HMAC_KEY_GEN, Mechanism), 619 mkEntry(CKM_TLS_PRF_GENERAL, Mechanism), 620 mkEntry(CKM_NSS_TLS_PRF_GENERAL_SHA256, Mechanism), 621 622 mkEntry(CKR_OK, Result), 623 mkEntry(CKR_CANCEL, Result), 624 mkEntry(CKR_HOST_MEMORY, Result), 625 mkEntry(CKR_SLOT_ID_INVALID, Result), 626 mkEntry(CKR_GENERAL_ERROR, Result), 627 mkEntry(CKR_FUNCTION_FAILED, Result), 628 mkEntry(CKR_ARGUMENTS_BAD, Result), 629 mkEntry(CKR_NO_EVENT, Result), 630 mkEntry(CKR_NEED_TO_CREATE_THREADS, Result), 631 mkEntry(CKR_CANT_LOCK, Result), 632 mkEntry(CKR_ATTRIBUTE_READ_ONLY, Result), 633 mkEntry(CKR_ATTRIBUTE_SENSITIVE, Result), 634 mkEntry(CKR_ATTRIBUTE_TYPE_INVALID, Result), 635 mkEntry(CKR_ATTRIBUTE_VALUE_INVALID, Result), 636 mkEntry(CKR_DATA_INVALID, Result), 637 mkEntry(CKR_DATA_LEN_RANGE, Result), 638 mkEntry(CKR_DEVICE_ERROR, Result), 639 mkEntry(CKR_DEVICE_MEMORY, Result), 640 mkEntry(CKR_DEVICE_REMOVED, Result), 641 mkEntry(CKR_ENCRYPTED_DATA_INVALID, Result), 642 mkEntry(CKR_ENCRYPTED_DATA_LEN_RANGE, Result), 643 mkEntry(CKR_FUNCTION_CANCELED, Result), 644 mkEntry(CKR_FUNCTION_NOT_PARALLEL, Result), 645 mkEntry(CKR_FUNCTION_NOT_SUPPORTED, Result), 646 mkEntry(CKR_KEY_HANDLE_INVALID, Result), 647 mkEntry(CKR_KEY_SIZE_RANGE, Result), 648 mkEntry(CKR_KEY_TYPE_INCONSISTENT, Result), 649 mkEntry(CKR_KEY_NOT_NEEDED, Result), 650 mkEntry(CKR_KEY_CHANGED, Result), 651 mkEntry(CKR_KEY_NEEDED, Result), 652 mkEntry(CKR_KEY_INDIGESTIBLE, Result), 653 mkEntry(CKR_KEY_FUNCTION_NOT_PERMITTED, Result), 654 mkEntry(CKR_KEY_NOT_WRAPPABLE, Result), 655 mkEntry(CKR_KEY_UNEXTRACTABLE, Result), 656 mkEntry(CKR_MECHANISM_INVALID, Result), 657 mkEntry(CKR_MECHANISM_PARAM_INVALID, Result), 658 mkEntry(CKR_OBJECT_HANDLE_INVALID, Result), 659 mkEntry(CKR_OPERATION_ACTIVE, Result), 660 mkEntry(CKR_OPERATION_NOT_INITIALIZED, Result), 661 mkEntry(CKR_PIN_INCORRECT, Result), 662 mkEntry(CKR_PIN_INVALID, Result), 663 mkEntry(CKR_PIN_LEN_RANGE, Result), 664 mkEntry(CKR_PIN_EXPIRED, Result), 665 mkEntry(CKR_PIN_LOCKED, Result), 666 mkEntry(CKR_SESSION_CLOSED, Result), 667 mkEntry(CKR_SESSION_COUNT, Result), 668 mkEntry(CKR_SESSION_HANDLE_INVALID, Result), 669 mkEntry(CKR_SESSION_PARALLEL_NOT_SUPPORTED, Result), 670 mkEntry(CKR_SESSION_READ_ONLY, Result), 671 mkEntry(CKR_SESSION_EXISTS, Result), 672 mkEntry(CKR_SESSION_READ_ONLY_EXISTS, Result), 673 mkEntry(CKR_SESSION_READ_WRITE_SO_EXISTS, Result), 674 mkEntry(CKR_SIGNATURE_INVALID, Result), 675 mkEntry(CKR_SIGNATURE_LEN_RANGE, Result), 676 mkEntry(CKR_TEMPLATE_INCOMPLETE, Result), 677 mkEntry(CKR_TEMPLATE_INCONSISTENT, Result), 678 mkEntry(CKR_TOKEN_NOT_PRESENT, Result), 679 mkEntry(CKR_TOKEN_NOT_RECOGNIZED, Result), 680 mkEntry(CKR_TOKEN_WRITE_PROTECTED, Result), 681 mkEntry(CKR_UNWRAPPING_KEY_HANDLE_INVALID, Result), 682 mkEntry(CKR_UNWRAPPING_KEY_SIZE_RANGE, Result), 683 mkEntry(CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT, Result), 684 mkEntry(CKR_USER_ALREADY_LOGGED_IN, Result), 685 mkEntry(CKR_USER_NOT_LOGGED_IN, Result), 686 mkEntry(CKR_USER_PIN_NOT_INITIALIZED, Result), 687 mkEntry(CKR_USER_TYPE_INVALID, Result), 688 mkEntry(CKR_USER_ANOTHER_ALREADY_LOGGED_IN, Result), 689 mkEntry(CKR_USER_TOO_MANY_TYPES, Result), 690 mkEntry(CKR_WRAPPED_KEY_INVALID, Result), 691 mkEntry(CKR_WRAPPED_KEY_LEN_RANGE, Result), 692 mkEntry(CKR_WRAPPING_KEY_HANDLE_INVALID, Result), 693 mkEntry(CKR_WRAPPING_KEY_SIZE_RANGE, Result), 694 mkEntry(CKR_WRAPPING_KEY_TYPE_INCONSISTENT, Result), 695 mkEntry(CKR_RANDOM_SEED_NOT_SUPPORTED, Result), 696 mkEntry(CKR_RANDOM_NO_RNG, Result), 697 mkEntry(CKR_DOMAIN_PARAMS_INVALID, Result), 698 mkEntry(CKR_BUFFER_TOO_SMALL, Result), 699 mkEntry(CKR_SAVED_STATE_INVALID, Result), 700 mkEntry(CKR_INFORMATION_SENSITIVE, Result), 701 mkEntry(CKR_STATE_UNSAVEABLE, Result), 702 mkEntry(CKR_CRYPTOKI_NOT_INITIALIZED, Result), 703 mkEntry(CKR_CRYPTOKI_ALREADY_INITIALIZED, Result), 704 mkEntry(CKR_MUTEX_BAD, Result), 705 mkEntry(CKR_MUTEX_NOT_LOCKED, Result), 706 mkEntry(CKR_VENDOR_DEFINED, Result), 707 708 mkEntry(CKT_NSS_TRUSTED, Trust), 709 mkEntry(CKT_NSS_TRUSTED_DELEGATOR, Trust), 710 mkEntry(CKT_NSS_NOT_TRUSTED, Trust), 711 mkEntry(CKT_NSS_MUST_VERIFY_TRUST, Trust), 712 mkEntry(CKT_NSS_TRUST_UNKNOWN, Trust), 713 mkEntry(CKT_NSS_VALID_DELEGATOR, Trust), 714 mkEntry(CKT_TRUSTED, Trust), 715 mkEntry(CKT_TRUST_ANCHOR, Trust), 716 mkEntry(CKT_NOT_TRUSTED, Trust), 717 mkEntry(CKT_TRUST_MUST_VERIFY_TRUST, Trust), 718 mkEntry(CKT_TRUST_UNKNOWN, Trust), 719 720 mkEntry(CK_EFFECTIVELY_INFINITE, AvailableSizes), 721 mkEntry(CK_UNAVAILABLE_INFORMATION, CurrentSize), 722 }; 723 724 const Constant *consts = &_consts[0]; 725 const unsigned int constCount = sizeof(_consts) / sizeof(_consts[0]); 726 727 const Commands _commands[] = { 728 { "C_Initialize", 729 F_C_Initialize, 730 "C_Initialize pInitArgs\n\n" 731 "C_Initialize initializes the PKCS #11 library.\n" 732 " pInitArgs if this is not NULL_PTR it gets cast to and dereferenced\n", 733 { ArgInitializeArgs, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 734 ArgNone, ArgNone } }, 735 { "C_Finalize", 736 F_C_Finalize, 737 "C_Finalize pReserved\n\n" 738 "C_Finalize indicates that an application is done with the PKCS #11 library.\n" 739 " pReserved reserved. Should be NULL_PTR\n", 740 { ArgInitializeArgs, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 741 ArgNone, ArgNone } }, 742 { "C_GetInfo", 743 F_C_GetInfo, 744 "C_GetInfo pInfo\n\n" 745 "C_GetInfo returns general information about PKCS #11.\n" 746 " pInfo location that receives information\n", 747 { ArgInfo | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 748 ArgNone, ArgNone } }, 749 { "C_GetFunctionList", 750 F_C_GetFunctionList, 751 "C_GetFunctionList ppFunctionList\n\n" 752 "C_GetFunctionList returns the function list.\n" 753 " ppFunctionList receives pointer to function list\n", 754 { ArgFunctionList | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 755 ArgNone, ArgNone, ArgNone } }, 756 { "C_GetSlotList", 757 F_C_GetSlotList, 758 "C_GetSlotList tokenPresent pSlotList pulCount\n\n" 759 "C_GetSlotList obtains a list of slots in the system.\n" 760 " tokenPresent only slots with tokens?\n" 761 " pSlotList receives array of slot IDs\n" 762 " pulCount receives number of slots\n", 763 { ArgULong, ArgULong | ArgArray | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, 764 ArgNone, ArgNone, ArgNone, ArgNone, ArgNone } }, 765 { "C_GetSlotInfo", 766 F_C_GetSlotInfo, 767 "C_GetSlotInfo slotID pInfo\n\n" 768 "C_GetSlotInfo obtains information about a particular slot in the system.\n" 769 " slotID the ID of the slot\n" 770 " pInfo receives the slot information\n", 771 { ArgULong, ArgSlotInfo | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 772 ArgNone, ArgNone, ArgNone } }, 773 { "C_GetTokenInfo", 774 F_C_GetTokenInfo, 775 "C_GetTokenInfo slotID pInfo\n\n" 776 "C_GetTokenInfo obtains information about a particular token in the system.\n" 777 " slotID ID of the token's slot\n" 778 " pInfo receives the token information\n", 779 { ArgULong, ArgTokenInfo | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 780 ArgNone, ArgNone, ArgNone } }, 781 { "C_GetMechanismList", 782 F_C_GetMechanismList, 783 "C_GetMechanismList slotID pMechanismList pulCount\n\n" 784 "C_GetMechanismList obtains a list of mechanism types supported by a token.\n" 785 " slotID ID of token's slot\n" 786 " pMechanismList gets mech. array\n" 787 " pulCount gets # of mechs.\n", 788 { ArgULong, ArgULong | ArgArray | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, 789 ArgNone, ArgNone, ArgNone, ArgNone, ArgNone } }, 790 { "C_GetMechanismInfo", 791 F_C_GetMechanismInfo, 792 "C_GetMechanismInfo slotID type pInfo\n\n" 793 "C_GetMechanismInfo obtains information about a particular mechanism possibly\n" 794 "supported by a token.\n" 795 " slotID ID of the token's slot\n" 796 " type type of mechanism\n" 797 " pInfo receives mechanism info\n", 798 { ArgULong, ArgULong, ArgMechanismInfo | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, 799 ArgNone, ArgNone, ArgNone } }, 800 { "C_InitToken", 801 F_C_InitToken, 802 "C_InitToken slotID pPin ulPinLen pLabel\n\n" 803 "C_InitToken initializes a token.\n" 804 " slotID ID of the token's slot\n" 805 " pPin the SO's initial PIN\n" 806 " ulPinLen length in bytes of the PIN\n" 807 " pLabel 32-byte token label (blank padded)\n", 808 { ArgULong, ArgUTF8, ArgULong, ArgUTF8, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 809 ArgNone } }, 810 { "C_InitPIN", 811 F_C_InitPIN, 812 "C_InitPIN hSession pPin ulPinLen\n\n" 813 "C_InitPIN initializes the normal user's PIN.\n" 814 " hSession the session's handle\n" 815 " pPin the normal user's PIN\n" 816 " ulPinLen length in bytes of the PIN\n", 817 { ArgULong, ArgUTF8, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 818 ArgNone } }, 819 { "C_SetPIN", 820 F_C_SetPIN, 821 "C_SetPIN hSession pOldPin ulOldLen pNewPin ulNewLen\n\n" 822 "C_SetPIN modifies the PIN of the user who is logged in.\n" 823 " hSession the session's handle\n" 824 " pOldPin the old PIN\n" 825 " ulOldLen length of the old PIN\n" 826 " pNewPin the new PIN\n" 827 " ulNewLen length of the new PIN\n", 828 { ArgULong, ArgUTF8, ArgULong, ArgUTF8, ArgULong, ArgNone, ArgNone, ArgNone, 829 ArgNone, ArgNone } }, 830 { "C_OpenSession", 831 F_C_OpenSession, 832 "C_OpenSession slotID flags phSession\n\n" 833 "C_OpenSession opens a session between an application and a token.\n" 834 " slotID the slot's ID\n" 835 " flags from\n" 836 " phSession gets session handle\n", 837 { ArgULong, ArgULong, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, 838 ArgNone, ArgNone, ArgNone } }, 839 { "C_CloseSession", 840 F_C_CloseSession, 841 "C_CloseSession hSession\n\n" 842 "C_CloseSession closes a session between an application and a token.\n" 843 " hSession the session's handle\n", 844 { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 845 ArgNone } }, 846 { "C_CloseAllSessions", 847 F_C_CloseAllSessions, 848 "C_CloseAllSessions slotID\n\n" 849 "C_CloseAllSessions closes all sessions with a token.\n" 850 " slotID the token's slot\n", 851 { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 852 ArgNone } }, 853 { "C_GetSessionInfo", 854 F_C_GetSessionInfo, 855 "C_GetSessionInfo hSession pInfo\n\n" 856 "C_GetSessionInfo obtains information about the session.\n" 857 " hSession the session's handle\n" 858 " pInfo receives session info\n", 859 { ArgULong, ArgSessionInfo | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 860 ArgNone, ArgNone, ArgNone } }, 861 { "C_GetOperationState", 862 F_C_GetOperationState, 863 "C_GetOperationState hSession pOpState pulOpStateLen\n\n" 864 "C_GetOperationState obtains the state of the cryptographic operation in a\n" 865 "session.\n" 866 " hSession session's handle\n" 867 " pOpState gets state\n" 868 " pulOpStateLen gets state length\n", 869 { ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, 870 ArgNone, ArgNone, ArgNone } }, 871 { "C_SetOperationState", 872 F_C_SetOperationState, 873 "C_SetOperationState hSession pOpState ulOpStateLen hEncKey hAuthKey\n\n" 874 "C_SetOperationState restores the state of the cryptographic operation in a\n" 875 "session.\n" 876 " hSession session's handle\n" 877 " pOpState holds state\n" 878 " ulOpStateLen holds state length\n" 879 " hEncKey en/decryption key\n" 880 " hAuthnKey sign/verify key\n", 881 { ArgULong, ArgChar | ArgOut, ArgULong, ArgULong, ArgULong, ArgNone, ArgNone, 882 ArgNone, ArgNone, ArgNone } }, 883 { "C_Login", 884 F_C_Login, 885 "C_Login hSession userType pPin ulPinLen\n\n" 886 "C_Login logs a user into a token.\n" 887 " hSession the session's handle\n" 888 " userType the user type\n" 889 " pPin the user's PIN\n" 890 " ulPinLen the length of the PIN\n", 891 { ArgULong, ArgULong, ArgVar, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 892 ArgNone } }, 893 { "C_Logout", 894 F_C_Logout, 895 "C_Logout hSession\n\n" 896 "C_Logout logs a user out from a token.\n" 897 " hSession the session's handle\n", 898 { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 899 ArgNone } }, 900 { "C_CreateObject", 901 F_C_CreateObject, 902 "C_CreateObject hSession pTemplate ulCount phObject\n\n" 903 "C_CreateObject creates a new object.\n" 904 " hSession the session's handle\n" 905 " pTemplate the object's template\n" 906 " ulCount attributes in template\n" 907 " phObject gets new object's handle.\n", 908 { ArgULong, ArgAttribute | ArgArray, ArgULong, ArgULong | ArgOut, ArgNone, ArgNone, 909 ArgNone, ArgNone, ArgNone, ArgNone } }, 910 { "C_CopyObject", 911 F_C_CopyObject, 912 "C_CopyObject hSession hObject pTemplate ulCount phNewObject\n\n" 913 "C_CopyObject copies an object creating a new object for the copy.\n" 914 " hSession the session's handle\n" 915 " hObject the object's handle\n" 916 " pTemplate template for new object\n" 917 " ulCount attributes in template\n" 918 " phNewObject receives handle of copy\n", 919 { ArgULong, ArgULong, ArgAttribute | ArgArray, ArgULong, ArgULong | ArgOut, ArgNone, 920 ArgNone, ArgNone, ArgNone, ArgNone } }, 921 { "C_DestroyObject", 922 F_C_DestroyObject, 923 "C_DestroyObject hSession hObject\n\n" 924 "C_DestroyObject destroys an object.\n" 925 " hSession the session's handle\n" 926 " hObject the object's handle\n", 927 { ArgULong, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 928 ArgNone } }, 929 { "C_GetObjectSize", 930 F_C_GetObjectSize, 931 "C_GetObjectSize hSession hObject pulSize\n\n" 932 "C_GetObjectSize gets the size of an object in bytes.\n" 933 " hSession the session's handle\n" 934 " hObject the object's handle\n" 935 " pulSize receives size of object\n", 936 { ArgULong, ArgULong, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, 937 ArgNone, ArgNone, ArgNone } }, 938 { "C_GetAttributeValue", 939 F_C_GetAttributeValue, 940 "C_GetAttributeValue hSession hObject pTemplate ulCount\n\n" 941 "C_GetAttributeValue obtains the value of one or more object attributes.\n" 942 " hSession the session's handle\n" 943 " hObject the object's handle\n" 944 " pTemplate specifies attrs; gets vals\n" 945 " ulCount attributes in template\n", 946 { ArgULong, ArgULong, ArgAttribute | ArgArray, ArgULong, ArgNone, ArgNone, ArgNone, 947 ArgNone, ArgNone, ArgNone } }, 948 { "C_SetAttributeValue", 949 F_C_SetAttributeValue, 950 "C_SetAttributeValue hSession hObject pTemplate ulCount\n\n" 951 "C_SetAttributeValue modifies the value of one or more object attributes\n" 952 " hSession the session's handle\n" 953 " hObject the object's handle\n" 954 " pTemplate specifies attrs and values\n" 955 " ulCount attributes in template\n", 956 { ArgULong, ArgULong, ArgAttribute | ArgArray, ArgULong, ArgNone, ArgNone, ArgNone, 957 ArgNone, ArgNone, ArgNone } }, 958 { "C_FindObjectsInit", 959 F_C_FindObjectsInit, 960 "C_FindObjectsInit hSession pTemplate ulCount\n\n" 961 "C_FindObjectsInit initializes a search for token and session objects that\n" 962 "match a template.\n" 963 " hSession the session's handle\n" 964 " pTemplate attribute values to match\n" 965 " ulCount attrs in search template\n", 966 { ArgULong, ArgAttribute | ArgArray, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, 967 ArgNone, ArgNone, ArgNone } }, 968 { "C_FindObjectsFinal", 969 F_C_FindObjectsFinal, 970 "C_FindObjectsFinal hSession\n\n" 971 "C_FindObjectsFinal finishes a search for token and session objects.\n" 972 " hSession the session's handle\n", 973 { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 974 ArgNone } }, 975 { "C_FindObjects", 976 F_C_FindObjects, 977 "C_FindObjects hSession phObject ulMaxObjectCount pulObjectCount\n\n" 978 "C_FindObjects continues a search for token and session objects that match\n" 979 "a template obtaining additional object handles.\n" 980 " hSession session's handle\n" 981 " phObject gets obj. handles\n" 982 " ulMaxObjectCount max handles to get\n" 983 " pulObjectCount actual # returned\n", 984 { ArgULong, ArgULong | ArgOut, ArgULong, ArgULong | ArgOut, ArgNone, ArgNone, 985 ArgNone, ArgNone, ArgNone, ArgNone } }, 986 { "C_EncryptInit", 987 F_C_EncryptInit, 988 "C_EncryptInit hSession pMechanism hKey\n\n" 989 "C_EncryptInit initializes an encryption operation.\n" 990 " hSession the session's handle\n" 991 " pMechanism the encryption mechanism\n" 992 " hKey handle of encryption key\n", 993 { ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 994 ArgNone, ArgNone } }, 995 { "C_EncryptUpdate", 996 F_C_EncryptUpdate, 997 "C_EncryptUpdate hSession pPart ulPartLen pEncryptedPart pulEncryptedPartLen\n" 998 "\n" 999 "C_EncryptUpdate continues a multiple-part encryption operation.\n" 1000 " hSession session's handle\n" 1001 " pPart the plaintext data\n" 1002 " ulPartLen plaintext data len\n" 1003 " pEncryptedPart gets ciphertext\n" 1004 " pulEncryptedPartLen gets c-text size\n", 1005 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1006 ArgNone, ArgNone, ArgNone, ArgNone } }, 1007 { "C_EncryptFinal", 1008 F_C_EncryptFinal, 1009 "C_EncryptFinal hSession pLastEncryptedPart pulLastEncryptedPartLen\n\n" 1010 "C_EncryptFinal finishes a multiple-part encryption operation.\n" 1011 " hSession session handle\n" 1012 " pLastEncryptedPart last c-text\n" 1013 " pulLastEncryptedPartLen gets last size\n", 1014 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1015 ArgNone, ArgNone, ArgNone, ArgNone } }, 1016 { "C_Encrypt", 1017 F_C_Encrypt, 1018 "C_Encrypt hSession pData ulDataLen pEncryptedData pulEncryptedDataLen\n\n" 1019 "C_Encrypt encrypts single-part data.\n" 1020 " hSession session's handle\n" 1021 " pData the plaintext data\n" 1022 " ulDataLen bytes of plaintext\n" 1023 " pEncryptedData gets ciphertext\n" 1024 " pulEncryptedDataLen gets c-text size\n", 1025 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1026 ArgNone, ArgNone, ArgNone, ArgNone } }, 1027 { "C_DecryptInit", 1028 F_C_DecryptInit, 1029 "C_DecryptInit hSession pMechanism hKey\n\n" 1030 "C_DecryptInit initializes a decryption operation.\n" 1031 " hSession the session's handle\n" 1032 " pMechanism the decryption mechanism\n" 1033 " hKey handle of decryption key\n", 1034 { ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1035 ArgNone, ArgNone } }, 1036 { "C_DecryptUpdate", 1037 F_C_DecryptUpdate, 1038 "C_DecryptUpdate hSession pEncryptedPart ulEncryptedPartLen pPart pulPartLen\n" 1039 "\n" 1040 "C_DecryptUpdate continues a multiple-part decryption operation.\n" 1041 " hSession session's handle\n" 1042 " pEncryptedPart encrypted data\n" 1043 " ulEncryptedPartLen input length\n" 1044 " pPart gets plaintext\n" 1045 " pulPartLen p-text size\n", 1046 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1047 ArgNone, ArgNone, ArgNone, ArgNone } }, 1048 { "C_DecryptFinal", 1049 F_C_DecryptFinal, 1050 "C_DecryptFinal hSession pLastPart pulLastPartLen\n\n" 1051 "C_DecryptFinal finishes a multiple-part decryption operation.\n" 1052 " hSession the session's handle\n" 1053 " pLastPart gets plaintext\n" 1054 " pulLastPartLen p-text size\n", 1055 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1056 ArgNone, ArgNone, ArgNone, ArgNone } }, 1057 { "C_Decrypt", 1058 F_C_Decrypt, 1059 "C_Decrypt hSession pEncryptedData ulEncryptedDataLen pData pulDataLen\n\n" 1060 "C_Decrypt decrypts encrypted data in a single part.\n" 1061 " hSession session's handle\n" 1062 " pEncryptedData ciphertext\n" 1063 " ulEncryptedDataLen ciphertext length\n" 1064 " pData gets plaintext\n" 1065 " pulDataLen gets p-text size\n", 1066 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1067 ArgNone, ArgNone, ArgNone, ArgNone } }, 1068 { "C_DigestInit", 1069 F_C_DigestInit, 1070 "C_DigestInit hSession pMechanism\n\n" 1071 "C_DigestInit initializes a message-digesting operation.\n" 1072 " hSession the session's handle\n" 1073 " pMechanism the digesting mechanism\n", 1074 { ArgULong, ArgMechanism, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1075 ArgNone, ArgNone } }, 1076 { "C_DigestUpdate", 1077 F_C_DigestUpdate, 1078 "C_DigestUpdate hSession pPart ulPartLen\n\n" 1079 "C_DigestUpdate continues a multiple-part message-digesting operation.\n" 1080 " hSession the session's handle\n" 1081 " pPart data to be digested\n" 1082 " ulPartLen bytes of data to be digested\n", 1083 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1084 ArgNone, ArgNone, ArgNone, ArgNone } }, 1085 { "C_DigestKey", 1086 F_C_DigestKey, 1087 "C_DigestKey hSession hKey\n\n" 1088 "C_DigestKey continues a multi-part message-digesting operation by digesting\n" 1089 "the value of a secret key as part of the data already digested.\n" 1090 " hSession the session's handle\n" 1091 " hKey secret key to digest\n", 1092 { ArgULong, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1093 ArgNone } }, 1094 { "C_DigestFinal", 1095 F_C_DigestFinal, 1096 "C_DigestFinal hSession pDigest pulDigestLen\n\n" 1097 "C_DigestFinal finishes a multiple-part message-digesting operation.\n" 1098 " hSession the session's handle\n" 1099 " pDigest gets the message digest\n" 1100 " pulDigestLen gets byte count of digest\n", 1101 { ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, 1102 ArgNone, ArgNone, ArgNone } }, 1103 { "C_Digest", 1104 F_C_Digest, 1105 "C_Digest hSession pData ulDataLen pDigest pulDigestLen\n\n" 1106 "C_Digest digests data in a single part.\n" 1107 " hSession the session's handle\n" 1108 " pData data to be digested\n" 1109 " ulDataLen bytes of data to digest\n" 1110 " pDigest gets the message digest\n" 1111 " pulDigestLen gets digest length\n", 1112 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1113 ArgNone, ArgNone, ArgNone, ArgNone } }, 1114 { "C_SignInit", 1115 F_C_SignInit, 1116 "C_SignInit hSession pMechanism hKey\n\n" 1117 "C_SignInit initializes a signature (private key encryption operation where\n" 1118 "the signature is (will be) an appendix to the data and plaintext cannot be\n" 1119 "recovered from the signature.\n" 1120 " hSession the session's handle\n" 1121 " pMechanism the signature mechanism\n" 1122 " hKey handle of signature key\n", 1123 { ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1124 ArgNone, ArgNone } }, 1125 { "C_SignUpdate", 1126 F_C_SignUpdate, 1127 "C_SignUpdate hSession pPart ulPartLen\n\n" 1128 "C_SignUpdate continues a multiple-part signature operation where the\n" 1129 "signature is (will be) an appendix to the data and plaintext cannot be\n" 1130 "recovered from the signature.\n" 1131 " hSession the session's handle\n" 1132 " pPart the data to sign\n" 1133 " ulPartLen count of bytes to sign\n", 1134 { ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, 1135 ArgNone, ArgNone, ArgNone } }, 1136 { "C_SignFinal", 1137 F_C_SignFinal, 1138 "C_SignFinal hSession pSignature pulSignatureLen\n\n" 1139 "C_SignFinal finishes a multiple-part signature operation returning the\n" 1140 "signature.\n" 1141 " hSession the session's handle\n" 1142 " pSignature gets the signature\n" 1143 " pulSignatureLen gets signature length\n", 1144 { ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, 1145 ArgNone, ArgNone, ArgNone } }, 1146 { "C_SignRecoverInit", 1147 F_C_SignRecoverInit, 1148 "C_SignRecoverInit hSession pMechanism hKey\n\n" 1149 "C_SignRecoverInit initializes a signature operation where the data can be\n" 1150 "recovered from the signature.\n" 1151 " hSession the session's handle\n" 1152 " pMechanism the signature mechanism\n" 1153 " hKey handle of the signature key\n", 1154 { ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1155 ArgNone, ArgNone } }, 1156 { "C_SignRecover", 1157 F_C_SignRecover, 1158 "C_SignRecover hSession pData ulDataLen pSignature pulSignatureLen\n\n" 1159 "C_SignRecover signs data in a single operation where the data can be\n" 1160 "recovered from the signature.\n" 1161 " hSession the session's handle\n" 1162 " pData the data to sign\n" 1163 " ulDataLen count of bytes to sign\n" 1164 " pSignature gets the signature\n" 1165 " pulSignatureLen gets signature length\n", 1166 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1167 ArgNone, ArgNone, ArgNone, ArgNone } }, 1168 { "C_Sign", 1169 F_C_Sign, 1170 "C_Sign hSession pData ulDataLen pSignature pulSignatureLen\n\n" 1171 "C_Sign signs (encrypts with private key) data in a single part where the\n" 1172 "signature is (will be) an appendix to the data and plaintext cannot be\n" 1173 "recovered from the signature.\n" 1174 " hSession the session's handle\n" 1175 " pData the data to sign\n" 1176 " ulDataLen count of bytes to sign\n" 1177 " pSignature gets the signature\n" 1178 " pulSignatureLen gets signature length\n", 1179 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1180 ArgNone, ArgNone, ArgNone, ArgNone } }, 1181 { "C_VerifyInit", 1182 F_C_VerifyInit, 1183 "C_VerifyInit hSession pMechanism hKey\n\n" 1184 "C_VerifyInit initializes a verification operation where the signature is an\n" 1185 "appendix to the data and plaintext cannot cannot be recovered from the\n" 1186 "signature (e.g. DSA).\n" 1187 " hSession the session's handle\n" 1188 " pMechanism the verification mechanism\n" 1189 " hKey verification key\n", 1190 { ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1191 ArgNone, ArgNone } }, 1192 { "C_VerifyUpdate", 1193 F_C_VerifyUpdate, 1194 "C_VerifyUpdate hSession pPart ulPartLen\n\n" 1195 "C_VerifyUpdate continues a multiple-part verification operation where the\n" 1196 "signature is an appendix to the data and plaintext cannot be recovered from\n" 1197 "the signature.\n" 1198 " hSession the session's handle\n" 1199 " pPart signed data\n" 1200 " ulPartLen length of signed data\n", 1201 { ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, 1202 ArgNone, ArgNone, ArgNone } }, 1203 { "C_VerifyFinal", 1204 F_C_VerifyFinal, 1205 "C_VerifyFinal hSession pSignature ulSignatureLen\n\n" 1206 "C_VerifyFinal finishes a multiple-part verification operation checking the\n" 1207 "signature.\n" 1208 " hSession the session's handle\n" 1209 " pSignature signature to verify\n" 1210 " ulSignatureLen signature length\n", 1211 { ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone, 1212 ArgNone, ArgNone, ArgNone } }, 1213 { "C_VerifyRecoverInit", 1214 F_C_VerifyRecoverInit, 1215 "C_VerifyRecoverInit hSession pMechanism hKey\n\n" 1216 "C_VerifyRecoverInit initializes a signature verification operation where the\n" 1217 "data is recovered from the signature.\n" 1218 " hSession the session's handle\n" 1219 " pMechanism the verification mechanism\n" 1220 " hKey verification key\n", 1221 { ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1222 ArgNone, ArgNone } }, 1223 { "C_VerifyRecover", 1224 F_C_VerifyRecover, 1225 "C_VerifyRecover hSession pSignature ulSignatureLen pData pulDataLen\n\n" 1226 "C_VerifyRecover verifies a signature in a single-part operation where the\n" 1227 "data is recovered from the signature.\n" 1228 " hSession the session's handle\n" 1229 " pSignature signature to verify\n" 1230 " ulSignatureLen signature length\n" 1231 " pData gets signed data\n" 1232 " pulDataLen gets signed data len\n", 1233 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1234 ArgNone, ArgNone, ArgNone, ArgNone } }, 1235 { "C_Verify", 1236 F_C_Verify, 1237 "C_Verify hSession pData ulDataLen pSignature ulSignatureLen\n\n" 1238 "C_Verify verifies a signature in a single-part operation where the signature\n" 1239 "is an appendix to the data and plaintext cannot be recovered from the\n" 1240 "signature.\n" 1241 " hSession the session's handle\n" 1242 " pData signed data\n" 1243 " ulDataLen length of signed data\n" 1244 " pSignature signature\n" 1245 " ulSignatureLen signature length*/\n", 1246 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1247 ArgNone, ArgNone, ArgNone, ArgNone } }, 1248 { "C_DigestEncryptUpdate", 1249 F_C_DigestEncryptUpdate, 1250 "C_DigestEncryptUpdate hSession pPart ulPartLen pEncryptedPart \\\n" 1251 " pulEncryptedPartLen\n\n" 1252 "C_DigestEncryptUpdate continues a multiple-part digesting and encryption\n" 1253 "operation.\n" 1254 " hSession session's handle\n" 1255 " pPart the plaintext data\n" 1256 " ulPartLen plaintext length\n" 1257 " pEncryptedPart gets ciphertext\n" 1258 " pulEncryptedPartLen gets c-text length\n", 1259 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1260 ArgNone, ArgNone, ArgNone, ArgNone } }, 1261 { "C_DecryptDigestUpdate", 1262 F_C_DecryptDigestUpdate, 1263 "C_DecryptDigestUpdate hSession pEncryptedPart ulEncryptedPartLen pPart \\\n" 1264 " pulPartLen\n\n" 1265 "C_DecryptDigestUpdate continues a multiple-part decryption and digesting\n" 1266 "operation.\n" 1267 " hSession session's handle\n" 1268 " pEncryptedPart ciphertext\n" 1269 " ulEncryptedPartLen ciphertext length\n" 1270 " pPart gets plaintext\n" 1271 " pulPartLen gets plaintext len\n", 1272 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1273 ArgNone, ArgNone, ArgNone, ArgNone } }, 1274 { "C_SignEncryptUpdate", 1275 F_C_SignEncryptUpdate, 1276 "C_SignEncryptUpdate hSession pPart ulPartLen pEncryptedPart \\\n" 1277 " pulEncryptedPartLen\n\n" 1278 "C_SignEncryptUpdate continues a multiple-part signing and encryption\n" 1279 "operation.\n" 1280 " hSession session's handle\n" 1281 " pPart the plaintext data\n" 1282 " ulPartLen plaintext length\n" 1283 " pEncryptedPart gets ciphertext\n" 1284 " pulEncryptedPartLen gets c-text length\n", 1285 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1286 ArgNone, ArgNone, ArgNone, ArgNone } }, 1287 { "C_DecryptVerifyUpdate", 1288 F_C_DecryptVerifyUpdate, 1289 "C_DecryptVerifyUpdate hSession pEncryptedPart ulEncryptedPartLen pPart \\\n" 1290 " pulPartLen\n\n" 1291 "C_DecryptVerifyUpdate continues a multiple-part decryption and verify\n" 1292 "operation.\n" 1293 " hSession session's handle\n" 1294 " pEncryptedPart ciphertext\n" 1295 " ulEncryptedPartLen ciphertext length\n" 1296 " pPart gets plaintext\n" 1297 " pulPartLen gets p-text length\n", 1298 { ArgULong, ArgChar, ArgULong, ArgChar | ArgOut, ArgULong | ArgOut, ArgNone, 1299 ArgNone, ArgNone, ArgNone, ArgNone } }, 1300 { "C_GenerateKeyPair", 1301 F_C_GenerateKeyPair, 1302 "C_GenerateKeyPair hSession pMechanism pPublicKeyTemplate \\\n" 1303 " ulPublicKeyAttributeCount pPrivateKeyTemplate ulPrivateKeyAttributeCount \\\n" 1304 " phPublicKey phPrivateKey\n\n" 1305 "C_GenerateKeyPair generates a public-key/private-key pair creating new key\n" 1306 "objects.\n" 1307 " hSession sessionhandle\n" 1308 " pMechanism key-genmech.\n" 1309 " pPublicKeyTemplate templatefor pub. key\n" 1310 " ulPublicKeyAttributeCount # pub. attrs.\n" 1311 " pPrivateKeyTemplate templatefor priv. key\n" 1312 " ulPrivateKeyAttributeCount # priv. attrs.\n" 1313 " phPublicKey gets pub. keyhandle\n" 1314 " phPrivateKey getspriv. keyhandle\n", 1315 { ArgULong, ArgMechanism, ArgAttribute | ArgArray, ArgULong, 1316 ArgAttribute | ArgArray, ArgULong, ArgULong | ArgOut, ArgULong | ArgOut, ArgNone, 1317 ArgNone } }, 1318 { "C_GenerateKey", 1319 F_C_GenerateKey, 1320 "C_GenerateKey hSession pMechanism pTemplate ulCount phKey\n\n" 1321 "C_GenerateKey generates a secret key creating a new key object.\n" 1322 " hSession the session's handle\n" 1323 " pMechanism key generation mech.\n" 1324 " pTemplate template for new key\n" 1325 " ulCount # of attrs in template\n" 1326 " phKey gets handle of new key\n", 1327 { ArgULong, ArgMechanism, ArgAttribute | ArgArray, ArgULong, ArgULong | ArgOut, 1328 ArgNone, ArgNone, ArgNone, ArgNone, ArgNone } }, 1329 { "C_WrapKey", 1330 F_C_WrapKey, 1331 "C_WrapKey hSession pMechanism hWrappingKey hKey pWrappedKey pulWrappedKeyLen\n\n" 1332 "C_WrapKey wraps (i.e. encrypts) a key.\n" 1333 " hSession the session's handle\n" 1334 " pMechanism the wrapping mechanism\n" 1335 " hWrappingKey wrapping key\n" 1336 " hKey key to be wrapped\n" 1337 " pWrappedKey gets wrapped key\n" 1338 " pulWrappedKeyLen gets wrapped key size\n", 1339 { ArgULong, ArgMechanism, ArgULong, ArgULong, ArgULong, ArgChar | ArgOut, 1340 ArgULong | ArgOut, ArgNone, ArgNone, ArgNone } }, 1341 { "C_UnwrapKey", 1342 F_C_UnwrapKey, 1343 "C_UnwrapKey hSession pMechanism hUnwrappingKey pWrappedKey ulWrappedKeyLen \\\n" 1344 " pTemplate ulAttributeCount phKey\n\n" 1345 "C_UnwrapKey unwraps (decrypts) a wrapped key creating a new key object.\n" 1346 " hSession session's handle\n" 1347 " pMechanism unwrapping mech.\n" 1348 " hUnwrappingKey unwrapping key\n" 1349 " pWrappedKey the wrapped key\n" 1350 " ulWrappedKeyLen wrapped key len\n" 1351 " pTemplate new key template\n" 1352 " ulAttributeCount template length\n" 1353 " phKey gets new handle\n", 1354 { ArgULong, ArgMechanism, ArgULong, ArgChar, ArgULong, ArgAttribute | ArgArray, 1355 ArgULong, ArgULong | ArgOut, ArgNone, ArgNone } }, 1356 { "C_DeriveKey", 1357 F_C_DeriveKey, 1358 "C_DeriveKey hSession pMechanism hBaseKey pTemplate ulAttributeCount phKey\n\n" 1359 "C_DeriveKey derives a key from a base key creating a new key object.\n" 1360 " hSession session's handle\n" 1361 " pMechanism key deriv. mech.\n" 1362 " hBaseKey base key\n" 1363 " pTemplate new key template\n" 1364 " ulAttributeCount template length\n" 1365 " phKey gets new handle\n", 1366 { ArgULong, ArgMechanism, ArgULong, ArgAttribute | ArgArray, ArgULong, 1367 ArgULong | ArgOut, ArgNone, ArgNone, ArgNone, ArgNone } }, 1368 { "C_SeedRandom", 1369 F_C_SeedRandom, 1370 "C_SeedRandom hSession pSeed ulSeedLen\n\n" 1371 "C_SeedRandom mixes additional seed material into the token's random number\n" 1372 "generator.\n" 1373 " hSession the session's handle\n" 1374 " pSeed the seed material\n" 1375 " ulSeedLen length of seed material\n", 1376 { ArgULong, ArgChar, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1377 ArgNone } }, 1378 { "C_GenerateRandom", 1379 F_C_GenerateRandom, 1380 "C_GenerateRandom hSession RandomData ulRandomLen\n\n" 1381 "C_GenerateRandom generates random data.\n" 1382 " hSession the session's handle\n" 1383 " RandomData receives the random data\n" 1384 " ulRandomLen # of bytes to generate\n", 1385 { ArgULong, ArgChar, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1386 ArgNone } }, 1387 { "C_GetFunctionStatus", 1388 F_C_GetFunctionStatus, 1389 "C_GetFunctionStatus hSession\n\n" 1390 "C_GetFunctionStatus is a legacy function; it obtains an updated status of\n" 1391 "a function running in parallel with an application.\n" 1392 " hSession the session's handle\n", 1393 { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1394 ArgNone } }, 1395 { "C_CancelFunction", 1396 F_C_CancelFunction, 1397 "C_CancelFunction hSession\n\n" 1398 "C_CancelFunction is a legacy function; it cancels a function running in\n" 1399 "parallel.\n" 1400 " hSession the session's handle\n", 1401 { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1402 ArgNone } }, 1403 { "C_WaitForSlotEvent", 1404 F_C_WaitForSlotEvent, 1405 "C_WaitForSlotEvent flags pSlot pRserved\n\n" 1406 "C_WaitForSlotEvent waits for a slot event (token insertion removal etc.)\n" 1407 "to occur.\n" 1408 " flags blocking/nonblocking flag\n" 1409 " pSlot location that receives the slot ID\n" 1410 " pRserved reserved. Should be NULL_PTR\n", 1411 { ArgULong, ArgULong | ArgArray, ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, 1412 ArgNone, ArgNone, ArgNone } }, 1413 { "NewArray", 1414 F_NewArray, 1415 "NewArray varName varType array size\n\n" 1416 "Creates a new array variable.\n" 1417 " varName variable name of the new array\n" 1418 " varType data type of the new array\n" 1419 " size number of elements in the array\n", 1420 { ArgVar | ArgNew, ArgVar, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1421 ArgNone, ArgNone } }, 1422 { "NewInitArg", 1423 F_NewInitializeArgs, 1424 "NewInitArg varName flags string\n\n" 1425 "Creates a new init variable.\n" 1426 " varName variable name of the new initArg\n" 1427 " flags value to set the flags field\n" 1428 " string string parameter for init arg\n", 1429 { ArgVar | ArgNew, ArgULong, ArgVar | ArgNew, ArgNone, ArgNone, ArgNone, ArgNone, 1430 ArgNone, ArgNone, ArgNone } }, 1431 { "NewTemplate", 1432 F_NewTemplate, 1433 "NewTemplate varName attributeList\n\n" 1434 "Create a new empty template and populate the attribute list\n" 1435 " varName variable name of the new template\n" 1436 " attributeList comma separated list of CKA_ATTRIBUTE types\n", 1437 { ArgVar | ArgNew, ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1438 ArgNone, ArgNone } }, 1439 { "NewMechanism", 1440 F_NewMechanism, 1441 "NewMechanism varName mechanismType\n\n" 1442 "Create a new CK_MECHANISM object with type NULL parameters and specified type\n" 1443 " varName variable name of the new mechansim\n" 1444 " mechanismType CKM_ mechanism type value to set int the type field\n", 1445 { ArgVar | ArgNew, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1446 ArgNone, ArgNone } }, 1447 { "BuildTemplate", 1448 F_BuildTemplate, 1449 "BuildTemplate template\n\n" 1450 "Allocates space for the value in a template which has the sizes filled in,\n" 1451 "but no values allocated yet.\n" 1452 " template variable name of the template\n", 1453 { ArgAttribute, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1454 ArgNone, ArgNone } }, 1455 { "SetTemplate", 1456 F_SetTemplate, 1457 "SetTemplate template index value\n\n" 1458 "Sets a particular element of a template to a CK_ULONG\n" 1459 " template variable name of the template\n" 1460 " index index into the template to the element to change\n" 1461 " value 32 bit value to set in the template\n", 1462 { ArgAttribute, ArgULong, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1463 ArgNone, ArgNone } }, 1464 { "SetString", 1465 F_SetStringVar, 1466 "SetString varName string\n\n" 1467 "Sets a particular variable to a string value\n" 1468 " variable variable name of new string\n" 1469 " string String to set the variable to\n", 1470 { ArgVar | ArgNew, ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1471 ArgNone, ArgNone } }, 1472 { "Set", 1473 F_SetVar, 1474 "Set varName value\n\n" 1475 "Sets a particular variable to CK_ULONG\n" 1476 " variable name of the new variable\n" 1477 " value 32 bit value to set variable to\n", 1478 { ArgVar | ArgNew, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1479 ArgNone, ArgNone } }, 1480 { "Print", 1481 F_Print, 1482 "Print varName\n\n" 1483 "prints a variable\n" 1484 " variable name of the variable to print\n", 1485 { ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1486 ArgNone } }, 1487 { "Delete", 1488 F_Delete, 1489 "Delete varName\n\n" 1490 "delete a variable\n" 1491 " variable name of the variable to delete\n", 1492 { ArgVar | ArgNew, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1493 ArgNone, ArgNone } }, 1494 { "Load", 1495 F_Load, 1496 "load libraryName\n\n" 1497 "load a pkcs #11 module\n" 1498 " libraryName Name of a shared library\n", 1499 { ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1500 ArgNone } }, 1501 { "Save", 1502 F_SaveVar, 1503 "Save filename variable\n\n" 1504 "Saves the binary value of 'variable' in file 'filename'\n" 1505 " fileName target file to save the variable in\n" 1506 " variable variable to save\n", 1507 { ArgVar | ArgNew, ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1508 ArgNone, ArgNone } }, 1509 { "Restore", 1510 F_RestoreVar, 1511 "Restore filename variable\n\n" 1512 "Restores a variable from a file\n" 1513 " fileName target file to restore the variable from\n" 1514 " variable variable to restore\n", 1515 { ArgVar | ArgNew, ArgVar, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1516 ArgNone, ArgNone } }, 1517 { "Increment", 1518 F_Increment, 1519 "Increment variable value\n\n" 1520 "Increment a variable by value\n", 1521 { ArgVar, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1522 ArgNone } }, 1523 { "Decrement", 1524 F_Decrement, 1525 "Decrement variable value\n\n" 1526 "Decrement a variable by value\n", 1527 { ArgVar, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1528 ArgNone } }, 1529 { "List", 1530 F_List, 1531 "List all the variables\n", 1532 { ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1533 ArgNone } }, 1534 { "Unload", 1535 F_Unload, 1536 "Unload the currrently loaded PKCS #11 library\n", 1537 { ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1538 ArgNone } }, 1539 { "Run", 1540 F_Run, 1541 "Run filename\n\n" 1542 "reads filename as script of commands to execute\n", 1543 { ArgVar | ArgNew, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1544 ArgNone, ArgNone } }, 1545 { "Time", 1546 F_Time, 1547 "Time pkcs11 command\n\n" 1548 "Execute a pkcs #11 command and time the results\n", 1549 { ArgVar | ArgFull, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1550 ArgNone, ArgNone } }, 1551 { "System", 1552 F_System, 1553 "Set System Flag", 1554 { ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1555 ArgNone } }, 1556 { "LoopRun", 1557 F_Loop, 1558 "LoopRun filename var start end step\n\n" 1559 "Run in a loop. Loop exit if scrip does and explicit quit (Quit QuitIf etc.)", 1560 { ArgVar | ArgNew, ArgVar | ArgNew, ArgULong, ArgULong, ArgULong, ArgNone, ArgNone, 1561 ArgNone, ArgNone, ArgNone } }, 1562 { "Help", 1563 F_Help, 1564 "Help [command]\n\n" 1565 "print general help, or help for a specific command\n", 1566 { ArgVar | ArgOpt, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1567 ArgNone, ArgNone } }, 1568 { "QuitIf", 1569 F_QuitIf, 1570 "QuitIf arg1 comparator arg2\n\n" 1571 "Exit from this program if Condition is valid, valid comparators:\n" 1572 " < > <= >= = !=\n", 1573 { ArgULong, ArgVar | ArgNew, ArgULong, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1574 ArgNone, ArgNone } }, 1575 { "QuitIfString", 1576 F_QuitIfString, 1577 "QuitIfString arg1 comparator arg2\n\n" 1578 "Exit from this program if Condition is valid, valid comparators:\n" 1579 " = !=\n", 1580 { ArgVar | ArgNew, ArgVar | ArgNew, ArgVar | ArgNew, ArgNone, ArgNone, ArgNone, 1581 ArgNone, ArgNone, ArgNone, ArgNone } }, 1582 { "Quit", 1583 F_Quit, 1584 "Exit from this program", 1585 { ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, ArgNone, 1586 ArgNone } }, 1587 }; 1588 1589 const Commands *commands = &_commands[0]; 1590 const int commandCount = sizeof(_commands) / sizeof(_commands[0]); 1591 1592 const Topics _topics[] = { 1593 { "variables", 1594 "Variables are random strings of characters. These should begin with alpha\n" 1595 " characters, and should not contain any spaces, nor should they match any\n" 1596 " built-in constants. There is some checking in the code for these things,\n" 1597 " but it's not 100% and using invalid variable names can cause problems.\n" 1598 " Variables are created by any 'OUT' parameter. If the variable does not\n" 1599 " exist, it will be created. For in parameters variables must already exist.\n" }, 1600 { "constants", 1601 "pk11util recognizes *lots* of constants. All CKA_, CKF_, CKO_, CKU_, CKS_,\n" 1602 " CKC_, CKK_, CKH_, CKM_, CKT_ values from the PKCS #11 spec are recognized.\n" 1603 " Constants can be specified with their fully qualified CK?_ value, or the\n" 1604 " prefix can be dropped. Constants are matched case insensitve.\n" }, 1605 { "arrays", 1606 "Arrays are special variables which represent 'C' arrays. Each array \n" 1607 " variable can be referenced as a group (using just the name), or as \n" 1608 " individual elements (with the [int] operator). Example:\n" 1609 " print myArray # prints the full array.\n" 1610 " print myArray[3] # prints the 3rd elemement of the array \n" }, 1611 { "sizes", 1612 "Size operaters returns the size in bytes of a variable, or the number of\n" 1613 " elements in an array.\n" 1614 " size(var) and sizeof(var) return the size of var in bytes.\n" 1615 " sizea(var) and sizeofarray(var) return the number of elements in var.\n" 1616 " If var is not an array, sizea(var) returns 1.\n" }, 1617 }; 1618 1619 const Topics *topics = &_topics[0]; 1620 const int topicCount = sizeof(_topics) / sizeof(_topics[0]); 1621 1622 const char * 1623 getName(CK_ULONG value, ConstType type) 1624 { 1625 unsigned int i; 1626 1627 for (i = 0; i < constCount; i++) { 1628 if (consts[i].type == type && consts[i].value == value) { 1629 return consts[i].name; 1630 } 1631 if (type == ConstNone && consts[i].value == value) { 1632 return consts[i].name; 1633 } 1634 } 1635 1636 return NULL; 1637 } 1638 1639 const char * 1640 getNameFromAttribute(CK_ATTRIBUTE_TYPE type) 1641 { 1642 return getName(type, ConstAttribute); 1643 } 1644 1645 unsigned int 1646 totalKnownType(ConstType type) 1647 { 1648 unsigned int count = 0; 1649 unsigned int i; 1650 1651 for (i = 0; i < constCount; i++) { 1652 if (consts[i].type == type) 1653 count++; 1654 } 1655 return count; 1656 }