summaryrefslogtreecommitdiff
path: root/src/msg.c
diff options
context:
space:
mode:
authorStef Walter <stef@memberwebs.com>2008-12-04 20:22:41 +0000
committerStef Walter <stef@memberwebs.com>2008-12-04 20:22:41 +0000
commite8fe761b0f44bc4ebe42dff3aecce811b7f6c312 (patch)
treefa70dc00a8b1295e7f67e6d2003842b4e8119e51 /src/msg.c
parentc980526f600dcc010b7a930be5413e3c7a4a8e96 (diff)
Add basic module loading and printing of messages.
Diffstat (limited to 'src/msg.c')
-rw-r--r--src/msg.c147
1 files changed, 147 insertions, 0 deletions
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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+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;
+}