From e8fe761b0f44bc4ebe42dff3aecce811b7f6c312 Mon Sep 17 00:00:00 2001 From: Stef Walter Date: Thu, 4 Dec 2008 20:22:41 +0000 Subject: Add basic module loading and printing of messages. --- src/msg.c | 147 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 src/msg.c (limited to 'src/msg.c') diff --git a/src/msg.c b/src/msg.c new file mode 100644 index 0000000..600f217 --- /dev/null +++ b/src/msg.c @@ -0,0 +1,147 @@ + +#include "config.h" + +#include "p11-tests.h" + +#include +#include +#include + +static const char *the_prefix = NULL; + +const char* +p11t_msg_rv(CK_RV rv) +{ + switch(rv) { + #define CT(x) case x: return #x; + CT(CKR_OK) + CT(CKR_CANCEL) + CT(CKR_HOST_MEMORY) + CT(CKR_SLOT_ID_INVALID) + CT(CKR_GENERAL_ERROR) + CT(CKR_FUNCTION_FAILED) + CT(CKR_ARGUMENTS_BAD) + CT(CKR_NO_EVENT) + CT(CKR_NEED_TO_CREATE_THREADS) + CT(CKR_CANT_LOCK) + CT(CKR_ATTRIBUTE_READ_ONLY) + CT(CKR_ATTRIBUTE_SENSITIVE) + CT(CKR_ATTRIBUTE_TYPE_INVALID) + CT(CKR_ATTRIBUTE_VALUE_INVALID) + CT(CKR_DATA_INVALID) + CT(CKR_DATA_LEN_RANGE) + CT(CKR_DEVICE_ERROR) + CT(CKR_DEVICE_MEMORY) + CT(CKR_DEVICE_REMOVED) + CT(CKR_ENCRYPTED_DATA_INVALID) + CT(CKR_ENCRYPTED_DATA_LEN_RANGE) + CT(CKR_FUNCTION_CANCELED) + CT(CKR_FUNCTION_NOT_PARALLEL) + CT(CKR_FUNCTION_NOT_SUPPORTED) + CT(CKR_KEY_HANDLE_INVALID) + CT(CKR_KEY_SIZE_RANGE) + CT(CKR_KEY_TYPE_INCONSISTENT) + CT(CKR_KEY_NOT_NEEDED) + CT(CKR_KEY_CHANGED) + CT(CKR_KEY_NEEDED) + CT(CKR_KEY_INDIGESTIBLE) + CT(CKR_KEY_FUNCTION_NOT_PERMITTED) + CT(CKR_KEY_NOT_WRAPPABLE) + CT(CKR_KEY_UNEXTRACTABLE) + CT(CKR_MECHANISM_INVALID) + CT(CKR_MECHANISM_PARAM_INVALID) + CT(CKR_OBJECT_HANDLE_INVALID) + CT(CKR_OPERATION_ACTIVE) + CT(CKR_OPERATION_NOT_INITIALIZED) + CT(CKR_PIN_INCORRECT) + CT(CKR_PIN_INVALID) + CT(CKR_PIN_LEN_RANGE) + CT(CKR_PIN_EXPIRED) + CT(CKR_PIN_LOCKED) + CT(CKR_SESSION_CLOSED) + CT(CKR_SESSION_COUNT) + CT(CKR_SESSION_HANDLE_INVALID) + CT(CKR_SESSION_PARALLEL_NOT_SUPPORTED) + CT(CKR_SESSION_READ_ONLY) + CT(CKR_SESSION_EXISTS) + CT(CKR_SESSION_READ_ONLY_EXISTS) + CT(CKR_SESSION_READ_WRITE_SO_EXISTS) + CT(CKR_SIGNATURE_INVALID) + CT(CKR_SIGNATURE_LEN_RANGE) + CT(CKR_TEMPLATE_INCOMPLETE) + CT(CKR_TEMPLATE_INCONSISTENT) + CT(CKR_TOKEN_NOT_PRESENT) + CT(CKR_TOKEN_NOT_RECOGNIZED) + CT(CKR_TOKEN_WRITE_PROTECTED) + CT(CKR_UNWRAPPING_KEY_HANDLE_INVALID) + CT(CKR_UNWRAPPING_KEY_SIZE_RANGE) + CT(CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT) + CT(CKR_USER_ALREADY_LOGGED_IN) + CT(CKR_USER_NOT_LOGGED_IN) + CT(CKR_USER_PIN_NOT_INITIALIZED) + CT(CKR_USER_TYPE_INVALID) + CT(CKR_USER_ANOTHER_ALREADY_LOGGED_IN) + CT(CKR_USER_TOO_MANY_TYPES) + CT(CKR_WRAPPED_KEY_INVALID) + CT(CKR_WRAPPED_KEY_LEN_RANGE) + CT(CKR_WRAPPING_KEY_HANDLE_INVALID) + CT(CKR_WRAPPING_KEY_SIZE_RANGE) + CT(CKR_WRAPPING_KEY_TYPE_INCONSISTENT) + CT(CKR_RANDOM_SEED_NOT_SUPPORTED) + CT(CKR_RANDOM_NO_RNG) + CT(CKR_DOMAIN_PARAMS_INVALID) + CT(CKR_BUFFER_TOO_SMALL) + CT(CKR_SAVED_STATE_INVALID) + CT(CKR_INFORMATION_SENSITIVE) + CT(CKR_STATE_UNSAVEABLE) + CT(CKR_CRYPTOKI_NOT_INITIALIZED) + CT(CKR_CRYPTOKI_ALREADY_INITIALIZED) + CT(CKR_MUTEX_BAD) + CT(CKR_MUTEX_NOT_LOCKED) + CT(CKR_FUNCTION_REJECTED) + CT(CKR_VENDOR_DEFINED) + #undef CT + default: + p11t_msg_print("unknown or invalid CK_RV value: 0x%08X", rv); + return ""; + } +} + +void +p11t_msg_va(const char *message, va_list va) +{ + int len; + + if(the_prefix) + fprintf(stderr, "%s: ", the_prefix); + vfprintf(stderr, message, va); + len = strlen(message); + if(len && message[len - 1] != '\n') + fputc('\n', stderr); + fflush(stderr); +} + +void +p11t_msg_print(const char *message, ...) +{ + va_list va; + va_start(va, message); + p11t_msg_va(message, va); + va_end(va); +} + +void +p11t_msg_fatal(const char *message, ...) +{ + va_list va; + va_start(va, message); + p11t_msg_va(message, va); + va_end(va); + exit(1); +} + +void +p11t_msg_prefix(const char *prefix) +{ + the_prefix = prefix; +} -- cgit v1.2.3