/*
* COPYRIGHT (c) International Business Machines Corp. 2001-2017
*
* This program is provided under the terms of the Common Public License,
* version 1.0 (CPL-1.0). Any use, reproduction or distribution for this
* software constitutes recipient's acceptance of CPL-1.0 terms which can be
* found in the file LICENSE file or at
* https://opensource.org/licenses/cpl1.0.php
*/
#include <errno.h>
#include <signal.h>
#include <stdarg.h>
#include <sys/types.h>
#include "log.h"
#include "slotmgr.h"
#include "err.h"
static ConstInfo SysErrorInfo[] = {
CONSTINFO(EPERM),
CONSTINFO(ENOENT),
CONSTINFO(ESRCH),
CONSTINFO(EINTR),
CONSTINFO(EIO),
CONSTINFO(ENXIO),
CONSTINFO(E2BIG),
CONSTINFO(ENOEXEC),
CONSTINFO(EBADF),
CONSTINFO(ECHILD),
CONSTINFO(EAGAIN),
CONSTINFO(ENOMEM),
CONSTINFO(EACCES),
CONSTINFO(EFAULT),
CONSTINFO(ENOTBLK),
CONSTINFO(EBUSY),
CONSTINFO(EEXIST),
CONSTINFO(EXDEV),
CONSTINFO(ENODEV),
CONSTINFO(ENOTDIR),
CONSTINFO(EISDIR),
CONSTINFO(EINVAL),
CONSTINFO(ENFILE),
CONSTINFO(EMFILE),
CONSTINFO(ENOTTY),
CONSTINFO(ETXTBSY),
CONSTINFO(EFBIG),
CONSTINFO(ENOSPC),
CONSTINFO(ESPIPE),
CONSTINFO(EROFS),
CONSTINFO(EMLINK),
CONSTINFO(EPIPE),
CONSTINFO(EDOM),
CONSTINFO(ERANGE),
CONSTINFO(ENOMSG),
CONSTINFO(EIDRM),
#ifdef ECHRNG
CONSTINFO(ECHRNG),
#endif
#ifdef EL2NSYNC
CONSTINFO(EL2NSYNC),
#endif
#ifdef EL3HLT
CONSTINFO(EL3HLT),
#endif
#ifdef EL3RST
CONSTINFO(EL3RST),
#endif
#ifdef ELNRNG
CONSTINFO(ELNRNG),
#endif
#ifdef EUNATCH
CONSTINFO(EUNATCH),
#endif
#ifdef ENOCSI
CONSTINFO(ENOCSI),
#endif
#ifdef EL2HLT
CONSTINFO(EL2HLT),
#endif
CONSTINFO(EDEADLK),
CONSTINFO(ESTALE),
CONSTINFO(EWOULDBLOCK),
CONSTINFO(EINPROGRESS),
CONSTINFO(EALREADY),
CONSTINFO(ENOTSOCK),
CONSTINFO(EDESTADDRREQ),
CONSTINFO(EMSGSIZE),
CONSTINFO(EPROTOTYPE),
CONSTINFO(ENOPROTOOPT),
CONSTINFO(EPROTONOSUPPORT),
CONSTINFO(ESOCKTNOSUPPORT),
CONSTINFO(EOPNOTSUPP),
CONSTINFO(EPFNOSUPPORT),
CONSTINFO(EAFNOSUPPORT),
CONSTINFO(EADDRINUSE),
CONSTINFO(EADDRNOTAVAIL),
CONSTINFO(ENETDOWN),
CONSTINFO(ENETUNREACH),
CONSTINFO(ENETRESET),
CONSTINFO(ECONNABORTED),
CONSTINFO(ECONNRESET),
CONSTINFO(ENOBUFS),
CONSTINFO(EISCONN),
CONSTINFO(ENOTCONN),
CONSTINFO(ESHUTDOWN),
CONSTINFO(ETIMEDOUT),
CONSTINFO(ECONNREFUSED),
CONSTINFO(EHOSTDOWN),
CONSTINFO(EHOSTUNREACH),
#ifdef ERESTART
CONSTINFO(ERESTART),
#endif
CONSTINFO(EUSERS),
CONSTINFO(ELOOP),
CONSTINFO(ENAMETOOLONG),
CONSTINFO(ENOTEMPTY),
CONSTINFO(EDQUOT),
CONSTINFO(EREMOTE),
CONSTINFO(ENOSYS),
CONSTINFO(ETOOMANYREFS),
CONSTINFO(EILSEQ),
CONSTINFO(ECANCELED),
#ifdef ENOSR
CONSTINFO(ENOSR),
#endif
#ifdef ETIME
CONSTINFO(ETIME),
#endif
#ifdef EBADMSG
CONSTINFO(EBADMSG),
#endif
#ifdef EPROTO
CONSTINFO(EPROTO),
#endif
#ifdef ENODATA
CONSTINFO(ENODATA),
#endif
#ifdef ENOSTR
CONSTINFO(ENOSTR),
#endif
CONSTINFO(ENOTSUP),
#ifdef EMULTIHOP
CONSTINFO(EMULTIHOP),
#endif
#ifdef ENOLINK
CONSTINFO(ENOLINK),
#endif
#ifdef EOVERFLOW
CONSTINFO(EOVERFLOW),
#endif
};
static int SysErrorSize = (sizeof(SysErrorInfo) / sizeof(SysErrorInfo[0]));
static ConstInfo SignalInfo[] = {
CONSTINFO(SIGHUP),
CONSTINFO(SIGINT),
CONSTINFO(SIGQUIT),
CONSTINFO(SIGILL),
CONSTINFO(SIGTRAP),
CONSTINFO(SIGABRT),
CONSTINFO(SIGFPE),
CONSTINFO(SIGKILL),
CONSTINFO(SIGBUS),
CONSTINFO(SIGSEGV),
CONSTINFO(SIGSYS),
CONSTINFO(SIGPIPE),
CONSTINFO(SIGALRM),
CONSTINFO(SIGTERM),
CONSTINFO(SIGURG),
CONSTINFO(SIGSTOP),
CONSTINFO(SIGTSTP),
CONSTINFO(SIGCONT),
CONSTINFO(SIGCHLD),
CONSTINFO(SIGTTIN),
CONSTINFO(SIGTTOU),
CONSTINFO(SIGIO),
CONSTINFO(SIGXCPU),
CONSTINFO(SIGXFSZ),
CONSTINFO(SIGWINCH),
#ifdef SIGPWR
CONSTINFO(SIGPWR),
#endif
CONSTINFO(SIGUSR1),
CONSTINFO(SIGUSR2),
CONSTINFO(SIGPROF),
CONSTINFO(SIGVTALRM),
CONSTINFO(SIGIOT),
#ifdef SIGCLD
CONSTINFO(SIGCLD),
#endif
#ifdef SIGPOLL
CONSTINFO(SIGPOLL),
#endif
#if 0
CONSTINFO(SIG_DFL),
CONSTINFO(SIG_IGN),
CONSTINFO(SIG_HOLD),
CONSTINFO(SIG_CATCH),
CONSTINFO(SIG_ERR),
#endif /* 0 */
};
static int SignalInfoSize = (sizeof(SignalInfo) / sizeof(SignalInfo[0]));
static ConstInfo PkcsReturnInfo[] = {
CONSTINFO(CKR_OK),
CONSTINFO(CKR_CANCEL),
CONSTINFO(CKR_HOST_MEMORY),
CONSTINFO(CKR_SLOT_ID_INVALID),
CONSTINFO(CKR_GENERAL_ERROR),
CONSTINFO(CKR_FUNCTION_FAILED),
CONSTINFO(CKR_ARGUMENTS_BAD),
CONSTINFO(CKR_NO_EVENT),
CONSTINFO(CKR_NEED_TO_CREATE_THREADS),
CONSTINFO(CKR_CANT_LOCK),
CONSTINFO(CKR_ATTRIBUTE_READ_ONLY),
CONSTINFO(CKR_ATTRIBUTE_SENSITIVE),
CONSTINFO(CKR_ATTRIBUTE_TYPE_INVALID),
CONSTINFO(CKR_ATTRIBUTE_VALUE_INVALID),
CONSTINFO(CKR_DATA_INVALID),
CONSTINFO(CKR_DATA_LEN_RANGE),
CONSTINFO(CKR_DEVICE_ERROR),
CONSTINFO(CKR_DEVICE_MEMORY),
CONSTINFO(CKR_DEVICE_REMOVED),
CONSTINFO(CKR_ENCRYPTED_DATA_INVALID),
CONSTINFO(CKR_ENCRYPTED_DATA_LEN_RANGE),
CONSTINFO(CKR_FUNCTION_CANCELED),
CONSTINFO(CKR_FUNCTION_NOT_PARALLEL),
CONSTINFO(CKR_FUNCTION_NOT_SUPPORTED),
CONSTINFO(CKR_KEY_HANDLE_INVALID),
CONSTINFO(CKR_KEY_SIZE_RANGE),
CONSTINFO(CKR_KEY_TYPE_INCONSISTENT),
CONSTINFO(CKR_KEY_NOT_NEEDED),
CONSTINFO(CKR_KEY_CHANGED),
CONSTINFO(CKR_KEY_NEEDED),
CONSTINFO(CKR_KEY_INDIGESTIBLE),
CONSTINFO(CKR_KEY_FUNCTION_NOT_PERMITTED),
CONSTINFO(CKR_KEY_NOT_WRAPPABLE),
CONSTINFO(CKR_KEY_UNEXTRACTABLE),
CONSTINFO(CKR_MECHANISM_INVALID),
CONSTINFO(CKR_MECHANISM_PARAM_INVALID),
CONSTINFO(CKR_OBJECT_HANDLE_INVALID),
CONSTINFO(CKR_OPERATION_ACTIVE),
CONSTINFO(CKR_OPERATION_NOT_INITIALIZED),
CONSTINFO(CKR_PIN_INCORRECT),
CONSTINFO(CKR_PIN_INVALID),
CONSTINFO(CKR_PIN_LEN_RANGE),
CONSTINFO(CKR_PIN_EXPIRED),
CONSTINFO(CKR_PIN_LOCKED),
CONSTINFO(CKR_SESSION_CLOSED),
CONSTINFO(CKR_SESSION_COUNT),
CONSTINFO(CKR_SESSION_HANDLE_INVALID),
CONSTINFO(CKR_SESSION_PARALLEL_NOT_SUPPORTED),
CONSTINFO(CKR_SESSION_READ_ONLY),
CONSTINFO(CKR_SESSION_EXISTS),
CONSTINFO(CKR_SESSION_READ_ONLY_EXISTS),
CONSTINFO(CKR_SESSION_READ_WRITE_SO_EXISTS),
CONSTINFO(CKR_SIGNATURE_INVALID),
CONSTINFO(CKR_SIGNATURE_LEN_RANGE),
CONSTINFO(CKR_TEMPLATE_INCOMPLETE),
CONSTINFO(CKR_TEMPLATE_INCONSISTENT),
CONSTINFO(CKR_TOKEN_NOT_PRESENT),
CONSTINFO(CKR_TOKEN_NOT_RECOGNIZED),
CONSTINFO(CKR_TOKEN_WRITE_PROTECTED),
CONSTINFO(CKR_UNWRAPPING_KEY_HANDLE_INVALID),
CONSTINFO(CKR_UNWRAPPING_KEY_SIZE_RANGE),
CONSTINFO(CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT),
CONSTINFO(CKR_USER_ALREADY_LOGGED_IN),
CONSTINFO(CKR_USER_NOT_LOGGED_IN),
CONSTINFO(CKR_USER_PIN_NOT_INITIALIZED),
CONSTINFO(CKR_USER_TYPE_INVALID),
CONSTINFO(CKR_USER_ANOTHER_ALREADY_LOGGED_IN),
CONSTINFO(CKR_USER_TOO_MANY_TYPES),
CONSTINFO(CKR_WRAPPED_KEY_INVALID),
CONSTINFO(CKR_WRAPPED_KEY_LEN_RANGE),
CONSTINFO(CKR_WRAPPING_KEY_HANDLE_INVALID),
CONSTINFO(CKR_WRAPPING_KEY_SIZE_RANGE),
CONSTINFO(CKR_WRAPPING_KEY_TYPE_INCONSISTENT),
CONSTINFO(CKR_RANDOM_SEED_NOT_SUPPORTED),
CONSTINFO(CKR_RANDOM_NO_RNG),
CONSTINFO(CKR_DOMAIN_PARAMS_INVALID),
CONSTINFO(CKR_CURVE_NOT_SUPPORTED),
CONSTINFO(CKR_BUFFER_TOO_SMALL),
CONSTINFO(CKR_SAVED_STATE_INVALID),
CONSTINFO(CKR_INFORMATION_SENSITIVE),
CONSTINFO(CKR_STATE_UNSAVEABLE),
CONSTINFO(CKR_CRYPTOKI_NOT_INITIALIZED),
CONSTINFO(CKR_CRYPTOKI_ALREADY_INITIALIZED),
CONSTINFO(CKR_MUTEX_BAD),
CONSTINFO(CKR_MUTEX_NOT_LOCKED),
CONSTINFO(CKR_FUNCTION_REJECTED),
CONSTINFO(CKR_VENDOR_DEFINED),
};
static int PkcsReturnSize =
(sizeof(PkcsReturnInfo) / sizeof(PkcsReturnInfo[0]));
static ConstInfo PkcsFlagsInfo[] = {
CONSTINFO((CKF_RNG | CKF_HW | CKF_LIBRARY_CANT_CREATE_OS_THREADS |
CKF_TOKEN_PRESENT)),
CONSTINFO((CKF_REMOVABLE_DEVICE | CKF_OS_LOCKING_OK | CKF_RW_SESSION |
CKF_WRITE_PROTECTED)),
CONSTINFO((CKF_SERIAL_SESSION | CKF_HW_SLOT | CKF_LOGIN_REQUIRED)),
CONSTINFO(CKF_USER_PIN_INITIALIZED),
CONSTINFO(CKF_RESTORE_KEY_NOT_NEEDED),
CONSTINFO(CKF_CLOCK_ON_TOKEN),
CONSTINFO((CKF_PROTECTED_AUTHENTICATION_PATH | CKF_ENCRYPT)),
CONSTINFO((CKF_DUAL_CRYPTO_OPERATIONS | CKF_DECRYPT)),
CONSTINFO(CKF_DIGEST),
CONSTINFO(CKF_SIGN),
CONSTINFO(CKF_SIGN_RECOVER),
CONSTINFO(CKF_VERIFY),
CONSTINFO(CKF_VERIFY_RECOVER),
CONSTINFO(CKF_GENERATE),
CONSTINFO((CKF_GENERATE_KEY_PAIR | CKF_USER_PIN_COUNT_LOW)),
CONSTINFO((CKF_USER_PIN_FINAL_TRY | CKF_WRAP)),
CONSTINFO((CKF_UNWRAP | CKF_USER_PIN_LOCKED)),
CONSTINFO((CKF_DERIVE /*| CKF_USER_PIN_MANUFACT_VALUE */ )),
CONSTINFO(CKF_SO_PIN_DERIVED),
CONSTINFO(CKF_SO_CARD),
CONSTINFO(CKF_SO_PIN_COUNT_LOW),
CONSTINFO(CKF_SO_PIN_FINAL_TRY),
CONSTINFO(CKF_SO_PIN_LOCKED),
/*CONSTINFO(CKF_SO_PIN_MANUFACT_VALUE), */
CONSTINFO(CKF_EXTENSION),
};
static int PkcsFlagsSize = (sizeof(PkcsFlagsInfo) / sizeof(PkcsFlagsInfo[0]));
static ConstInfo PkcsMechanismInfo[] = {
CONSTINFO(CKM_RSA_PKCS_KEY_PAIR_GEN),
CONSTINFO(CKM_RSA_PKCS),
CONSTINFO(CKM_RSA_9796),
CONSTINFO(CKM_RSA_X_509),
CONSTINFO(CKM_MD2_RSA_PKCS),
CONSTINFO(CKM_MD5_RSA_PKCS),
CONSTINFO(CKM_SHA1_RSA_PKCS),
CONSTINFO(CKM_DSA_KEY_PAIR_GEN),
CONSTINFO(CKM_DSA),
CONSTINFO(CKM_DSA_SHA1),
CONSTINFO(CKM_DH_PKCS_KEY_PAIR_GEN),
CONSTINFO(CKM_DH_PKCS_DERIVE),
CONSTINFO(CKM_RC2_KEY_GEN),
CONSTINFO(CKM_RC2_ECB),
CONSTINFO(CKM_RC2_CBC),
CONSTINFO(CKM_RC2_MAC),
CONSTINFO(CKM_RC2_MAC_GENERAL),
CONSTINFO(CKM_RC2_CBC_PAD),
CONSTINFO(CKM_RC4_KEY_GEN),
CONSTINFO(CKM_RC4),
CONSTINFO(CKM_DES_KEY_GEN),
CONSTINFO(CKM_DES_ECB),
CONSTINFO(CKM_DES_CBC),
CONSTINFO(CKM_DES_MAC),
CONSTINFO(CKM_DES_MAC_GENERAL),
CONSTINFO(CKM_DES_CBC_PAD),
CONSTINFO(CKM_DES2_KEY_GEN),
CONSTINFO(CKM_DES3_KEY_GEN),
CONSTINFO(CKM_DES3_ECB),
CONSTINFO(CKM_DES3_CBC),
CONSTINFO(CKM_DES3_MAC),
CONSTINFO(CKM_DES3_MAC_GENERAL),
CONSTINFO(CKM_DES3_CBC_PAD),
CONSTINFO(CKM_CDMF_KEY_GEN),
CONSTINFO(CKM_CDMF_ECB),
CONSTINFO(CKM_CDMF_CBC),
CONSTINFO(CKM_CDMF_MAC),
CONSTINFO(CKM_CDMF_MAC_GENERAL),
CONSTINFO(CKM_CDMF_CBC_PAD),
CONSTINFO(CKM_MD2),
CONSTINFO(CKM_MD2_HMAC),
CONSTINFO(CKM_MD2_HMAC_GENERAL),
CONSTINFO(CKM_MD5),
CONSTINFO(CKM_MD5_HMAC),
CONSTINFO(CKM_MD5_HMAC_GENERAL),
CONSTINFO(CKM_SHA_1),
CONSTINFO(CKM_SHA_1_HMAC),
CONSTINFO(CKM_SHA_1_HMAC_GENERAL),
CONSTINFO(CKM_SHA224),
CONSTINFO(CKM_SHA224_HMAC),
CONSTINFO(CKM_SHA224_HMAC_GENERAL),
CONSTINFO(CKM_SHA256),
CONSTINFO(CKM_SHA256_HMAC),
CONSTINFO(CKM_SHA256_HMAC_GENERAL),
CONSTINFO(CKM_SHA384),
CONSTINFO(CKM_SHA384_HMAC),
CONSTINFO(CKM_SHA384_HMAC_GENERAL),
CONSTINFO(CKM_SHA512),
CONSTINFO(CKM_SHA512_HMAC),
CONSTINFO(CKM_SHA512_HMAC_GENERAL),
CONSTINFO(CKM_SHA512_224),
CONSTINFO(CKM_SHA512_224_HMAC),
CONSTINFO(CKM_SHA512_224_HMAC_GENERAL),
CONSTINFO(CKM_SHA512_256),
CONSTINFO(CKM_SHA512_256_HMAC),
CONSTINFO(CKM_SHA512_256_HMAC_GENERAL),
CONSTINFO(CKM_CAST_KEY_GEN),
CONSTINFO(CKM_CAST_ECB),
CONSTINFO(CKM_CAST_CBC),
CONSTINFO(CKM_CAST_MAC),
CONSTINFO(CKM_CAST_MAC_GENERAL),
CONSTINFO(CKM_CAST_CBC_PAD),
CONSTINFO(CKM_CAST3_KEY_GEN),
CONSTINFO(CKM_CAST3_ECB),
CONSTINFO(CKM_CAST3_CBC),
CONSTINFO(CKM_CAST3_MAC),
CONSTINFO(CKM_CAST3_MAC_GENERAL),
CONSTINFO(CKM_CAST3_CBC_PAD),
CONSTINFO(CKM_CAST5_KEY_GEN),
CONSTINFO(CKM_CAST128_KEY_GEN),
CONSTINFO(CKM_CAST5_ECB),
CONSTINFO(CKM_CAST128_ECB),
CONSTINFO(CKM_CAST5_CBC),
CONSTINFO(CKM_CAST128_CBC),
CONSTINFO(CKM_CAST5_MAC),
CONSTINFO(CKM_CAST128_MAC),
CONSTINFO(CKM_CAST5_MAC_GENERAL),
CONSTINFO(CKM_CAST128_MAC_GENERAL),
CONSTINFO(CKM_CAST5_CBC_PAD),
CONSTINFO(CKM_CAST128_CBC_PAD),
CONSTINFO(CKM_RC5_KEY_GEN),
CONSTINFO(CKM_RC5_ECB),
CONSTINFO(CKM_RC5_CBC),
CONSTINFO(CKM_RC5_MAC),
CONSTINFO(CKM_RC5_MAC_GENERAL),
CONSTINFO(CKM_RC5_CBC_PAD),
CONSTINFO(CKM_IDEA_KEY_GEN),
CONSTINFO(CKM_IDEA_ECB),
CONSTINFO(CKM_IDEA_CBC),
CONSTINFO(CKM_IDEA_MAC),
CONSTINFO(CKM_IDEA_MAC_GENERAL),
CONSTINFO(CKM_IDEA_CBC_PAD),
CONSTINFO(CKM_GENERIC_SECRET_KEY_GEN),
CONSTINFO(CKM_CONCATENATE_BASE_AND_KEY),
CONSTINFO(CKM_CONCATENATE_BASE_AND_DATA),
CONSTINFO(CKM_CONCATENATE_DATA_AND_BASE),
CONSTINFO(CKM_XOR_BASE_AND_DATA),
CONSTINFO(CKM_EXTRACT_KEY_FROM_KEY),
CONSTINFO(CKM_SSL3_PRE_MASTER_KEY_GEN),
CONSTINFO(CKM_SSL3_MASTER_KEY_DERIVE),
CONSTINFO(CKM_SSL3_KEY_AND_MAC_DERIVE),
CONSTINFO(CKM_SSL3_MD5_MAC),
CONSTINFO(CKM_SSL3_SHA1_MAC),
CONSTINFO(CKM_MD5_KEY_DERIVATION),
CONSTINFO(CKM_MD2_KEY_DERIVATION),
CONSTINFO(CKM_SHA1_KEY_DERIVATION),
CONSTINFO(CKM_PBE_MD2_DES_CBC),
CONSTINFO(CKM_PBE_MD5_DES_CBC),
CONSTINFO(CKM_PBE_MD5_CAST_CBC),
CONSTINFO(CKM_PBE_MD5_CAST3_CBC),
CONSTINFO(CKM_PBE_MD5_CAST5_CBC),
CONSTINFO(CKM_PBE_MD5_CAST128_CBC),
CONSTINFO(CKM_PBE_SHA1_CAST5_CBC),
CONSTINFO(CKM_PBE_SHA1_CAST128_CBC),
CONSTINFO(CKM_PBE_SHA1_RC4_128),
CONSTINFO(CKM_PBE_SHA1_RC4_40),
CONSTINFO(CKM_PBE_SHA1_DES3_EDE_CBC),
CONSTINFO(CKM_PBE_SHA1_DES2_EDE_CBC),
CONSTINFO(CKM_PBE_SHA1_RC2_128_CBC),
CONSTINFO(CKM_PBE_SHA1_RC2_40_CBC),
CONSTINFO(CKM_PBA_SHA1_WITH_SHA1_HMAC),
CONSTINFO(CKM_KEY_WRAP_LYNKS),
CONSTINFO(CKM_KEY_WRAP_SET_OAEP),
CONSTINFO(CKM_SKIPJACK_KEY_GEN),
CONSTINFO(CKM_SKIPJACK_ECB64),
CONSTINFO(CKM_SKIPJACK_CBC64),
CONSTINFO(CKM_SKIPJACK_OFB64),
CONSTINFO(CKM_SKIPJACK_CFB64),
CONSTINFO(CKM_SKIPJACK_CFB32),
CONSTINFO(CKM_SKIPJACK_CFB16),
CONSTINFO(CKM_SKIPJACK_CFB8),
CONSTINFO(CKM_SKIPJACK_WRAP),
CONSTINFO(CKM_SKIPJACK_PRIVATE_WRAP),
CONSTINFO(CKM_SKIPJACK_RELAYX),
CONSTINFO(CKM_KEA_KEY_PAIR_GEN),
CONSTINFO(CKM_KEA_KEY_DERIVE),
CONSTINFO(CKM_FORTEZZA_TIMESTAMP),
CONSTINFO(CKM_BATON_KEY_GEN),
CONSTINFO(CKM_BATON_ECB128),
CONSTINFO(CKM_BATON_ECB96),
CONSTINFO(CKM_BATON_CBC128),
CONSTINFO(CKM_BATON_COUNTER),
CONSTINFO(CKM_BATON_SHUFFLE),
CONSTINFO(CKM_BATON_WRAP),
CONSTINFO(CKM_ECDSA_KEY_PAIR_GEN),
CONSTINFO(CKM_ECDSA),
CONSTINFO(CKM_ECDSA_SHA1),
CONSTINFO(CKM_ECDSA_SHA224),
CONSTINFO(CKM_ECDSA_SHA256),
CONSTINFO(CKM_ECDSA_SHA384),
CONSTINFO(CKM_ECDSA_SHA512),
CONSTINFO(CKM_SHA224_RSA_PKCS),
CONSTINFO(CKM_SHA256_RSA_PKCS),
CONSTINFO(CKM_SHA384_RSA_PKCS),
CONSTINFO(CKM_SHA512_RSA_PKCS),
CONSTINFO(CKM_SHA224_RSA_PKCS_PSS),
CONSTINFO(CKM_SHA256_RSA_PKCS_PSS),
CONSTINFO(CKM_SHA384_RSA_PKCS_PSS),
CONSTINFO(CKM_SHA512_RSA_PKCS_PSS),
CONSTINFO(CKM_SHA224_KEY_DERIVATION),
CONSTINFO(CKM_SHA256_KEY_DERIVATION),
CONSTINFO(CKM_SHA384_KEY_DERIVATION),
CONSTINFO(CKM_SHA512_KEY_DERIVATION),
CONSTINFO(CKM_JUNIPER_KEY_GEN),
CONSTINFO(CKM_JUNIPER_ECB128),
CONSTINFO(CKM_JUNIPER_CBC128),
CONSTINFO(CKM_JUNIPER_COUNTER),
CONSTINFO(CKM_JUNIPER_SHUFFLE),
CONSTINFO(CKM_JUNIPER_WRAP),
CONSTINFO(CKM_FASTHASH),
CONSTINFO(CKM_VENDOR_DEFINED),
CONSTINFO(CKM_IBM_SHA3_224),
CONSTINFO(CKM_IBM_SHA3_256),
CONSTINFO(CKM_IBM_SHA3_384),
CONSTINFO(CKM_IBM_SHA3_512),
CONSTINFO(CKM_IBM_SHA3_224_HMAC),
CONSTINFO(CKM_IBM_SHA3_256_HMAC),
CONSTINFO(CKM_IBM_SHA3_384_HMAC),
CONSTINFO(CKM_IBM_SHA3_512_HMAC),
CONSTINFO(CKM_IBM_CMAC),
CONSTINFO(CKM_IBM_EC_C25519),
CONSTINFO(CKM_IBM_ED25519_SHA512),
CONSTINFO(CKM_IBM_EC_C448),
CONSTINFO(CKM_IBM_ED448_SHA3),
CONSTINFO(CKM_IBM_DILITHIUM),
};
static unsigned int PkcsMechanismSize =
(sizeof(PkcsMechanismInfo) / sizeof(PkcsMechanismInfo[0]));
static ConstInfo PkcsObjectInfo[] = {
CONSTINFO(CKO_DATA),
CONSTINFO(CKO_CERTIFICATE),
CONSTINFO(CKO_PUBLIC_KEY),
CONSTINFO(CKO_PRIVATE_KEY),
CONSTINFO(CKO_SECRET_KEY),
CONSTINFO(CKO_VENDOR_DEFINED),
};
static unsigned int PkcsObjectSize =
(sizeof(PkcsObjectInfo) / sizeof(PkcsObjectInfo[0]));
static ConstInfo PkcsKeyInfo[] = {
CONSTINFO(CKK_RSA),
CONSTINFO(CKK_DSA),
CONSTINFO(CKK_DH),
CONSTINFO(CKK_ECDSA),
CONSTINFO(CKK_KEA),
CONSTINFO(CKK_GENERIC_SECRET),
CONSTINFO(CKK_RC2),
CONSTINFO(CKK_RC4),
CONSTINFO(CKK_DES),
CONSTINFO(CKK_DES2),
CONSTINFO(CKK_DES3),
CONSTINFO(CKK_CAST),
CONSTINFO(CKK_CAST3),
CONSTINFO((CKK_CAST5 | CKK_CAST128)),
CONSTINFO(CKK_RC5),
CONSTINFO(CKK_IDEA),
CONSTINFO(CKK_SKIPJACK),
CONSTINFO(CKK_BATON),
CONSTINFO(CKK_JUNIPER),
CONSTINFO(CKK_CDMF),
CONSTINFO(CKK_IBM_PQC_DILITHIUM),
CONSTINFO(CKK_VENDOR_DEFINED),
};
static unsigned int PkcsKeySize =
(sizeof(PkcsKeyInfo) / sizeof(PkcsKeyInfo[0]));
static ConstInfo PkcsAttributeInfo[] = {
CONSTINFO(CKA_CLASS),
CONSTINFO(CKA_TOKEN),
CONSTINFO(CKA_PRIVATE),
CONSTINFO(CKA_LABEL),
CONSTINFO(CKA_APPLICATION),
CONSTINFO(CKA_VALUE),
CONSTINFO(CKA_CERTIFICATE_TYPE),
CONSTINFO(CKA_ISSUER),
CONSTINFO(CKA_SERIAL_NUMBER),
CONSTINFO(CKA_KEY_TYPE),
CONSTINFO(CKA_SUBJECT),
CONSTINFO(CKA_ID),
CONSTINFO(CKA_SENSITIVE),
CONSTINFO(CKA_ENCRYPT),
CONSTINFO(CKA_DECRYPT),
CONSTINFO(CKA_WRAP),
CONSTINFO(CKA_UNWRAP),
CONSTINFO(CKA_SIGN),
CONSTINFO(CKA_SIGN_RECOVER),
CONSTINFO(CKA_VERIFY),
CONSTINFO(CKA_VERIFY_RECOVER),
CONSTINFO(CKA_DERIVE),
CONSTINFO(CKA_START_DATE),
CONSTINFO(CKA_END_DATE),
CONSTINFO(CKA_MODULUS),
CONSTINFO(CKA_MODULUS_BITS),
CONSTINFO(CKA_PUBLIC_EXPONENT),
CONSTINFO(CKA_PRIVATE_EXPONENT),
CONSTINFO(CKA_PRIME_1),
CONSTINFO(CKA_PRIME_2),
CONSTINFO(CKA_EXPONENT_1),
CONSTINFO(CKA_EXPONENT_2),
CONSTINFO(CKA_COEFFICIENT),
CONSTINFO(CKA_PRIME),
CONSTINFO(CKA_SUBPRIME),
CONSTINFO(CKA_BASE),
CONSTINFO(CKA_VALUE_BITS),
CONSTINFO(CKA_VALUE_LEN),
CONSTINFO(CKA_EXTRACTABLE),
CONSTINFO(CKA_LOCAL),
CONSTINFO(CKA_NEVER_EXTRACTABLE),
CONSTINFO(CKA_ALWAYS_SENSITIVE),
CONSTINFO(CKA_MODIFIABLE),
CONSTINFO(CKA_ECDSA_PARAMS),
CONSTINFO(CKA_EC_POINT),
CONSTINFO(CKA_VENDOR_DEFINED),
CONSTINFO(CKA_IBM_OPAQUE),
CONSTINFO(CKA_IBM_RESTRICTABLE),
CONSTINFO(CKA_IBM_NEVER_MODIFIABLE),
CONSTINFO(CKA_IBM_RETAINKEY),
CONSTINFO(CKA_IBM_ATTRBOUND),
CONSTINFO(CKA_IBM_KEYTYPE),
CONSTINFO(CKA_IBM_CV),
CONSTINFO(CKA_IBM_MACKEY),
CONSTINFO(CKA_IBM_USE_AS_DATA),
CONSTINFO(CKA_IBM_STRUCT_PARAMS),
CONSTINFO(CKA_IBM_STD_COMPLIANCE1),
CONSTINFO(CKA_NSS_MOZILLA_CA_POLICY),
CONSTINFO(CKA_IBM_DILITHIUM_KEYFORM),
CONSTINFO(CKA_IBM_DILITHIUM_RHO),
CONSTINFO(CKA_IBM_DILITHIUM_SEED),
CONSTINFO(CKA_IBM_DILITHIUM_TR),
CONSTINFO(CKA_IBM_DILITHIUM_S1),
CONSTINFO(CKA_IBM_DILITHIUM_S2),
CONSTINFO(CKA_IBM_DILITHIUM_T0),
CONSTINFO(CKA_IBM_DILITHIUM_T1),
};
static unsigned int PkcsAttributeSize =
(sizeof(PkcsAttributeInfo) / sizeof(PkcsAttributeInfo[0]));
#if 0
static ConstInfo PkcsSessionStateInfo[] = {
CONSTINFO(CKS_RO_PUBLIC_SESSION),
CONSTINFO(CKS_RO_USER_FUNCTIONS),
CONSTINFO(CKS_RW_PUBLIC_SESSION),
CONSTINFO(CKS_RW_USER_FUNCTIONS),
CONSTINFO(CKS_RW_SO_FUNCTIONS),
};
#endif
static ConstInfo PkcsResponseSeverityInfo[] = {
{SEV_EXPECTED, "expected"},
{SEV_ALLOWED, "allowed"},
{SEV_ERROR, "an error"},
{SEV_FATAL, "fatal"},
};
static unsigned int PkcsResponseSeveritySize =
(sizeof(PkcsResponseSeverityInfo) / sizeof(PkcsResponseSeverityInfo[0]));
const unsigned char *ConstName(pConstInfo pInfoArray,
unsigned int InfoArraySize,
unsigned int ConstValue)
{
unsigned int i;
unsigned const char *retval = NULL;
for (i = 0; i < InfoArraySize; i++) {
if (pInfoArray[i].Code == ConstValue) {
retval = (unsigned char *)&(pInfoArray[i].Name[0]);
break;
}
/* end if */
} /* end for i */
if (retval == NULL) {
if (ConstValue == 0) {
retval = (const unsigned char *) "NULL";
} else {
retval = (const unsigned char *) "\"<*>CONSTANT NOT FOUND<*>\"";
}
}
return retval;
}
const unsigned char *SignalConst(unsigned int Val)
{
return ConstName(SignalInfo, SignalInfoSize, Val);
}
const unsigned char *SysConst(unsigned int Val)
{
return ConstName(SysErrorInfo, SysErrorSize, Val);
}
const unsigned char *PkcsReturn(unsigned int Val)
{
return ConstName(PkcsReturnInfo, PkcsReturnSize, Val);
}
const unsigned char *PkcsFlags(unsigned int Val)
{
return ConstName(PkcsFlagsInfo, PkcsFlagsSize, Val);
}
const unsigned char *PkcsMechanism(unsigned int Val)
{
return ConstName(PkcsMechanismInfo, PkcsMechanismSize, Val);
}
const unsigned char *PkcsObject(unsigned int Val)
{
return ConstName(PkcsObjectInfo, PkcsObjectSize, Val);
}
const unsigned char *PkcsKey(unsigned int Val)
{
return ConstName(PkcsKeyInfo, PkcsKeySize, Val);
}
const unsigned char *PkcsAttribute(unsigned int Val)
{
return ConstName(PkcsAttributeInfo, PkcsAttributeSize, Val);
}
const unsigned char *ResponseSeverity(unsigned int Val)
{
return ConstName(PkcsResponseSeverityInfo, PkcsResponseSeveritySize, Val);
}