From fb9374be05108422a9662217e727b940ef896bf6 Mon Sep 17 00:00:00 2001 From: Stef Walter Date: Tue, 9 Dec 2008 21:56:50 +0000 Subject: Fix copious amounts of debugging messages. Add concept of warning messages. --- module/p11-capi-builtin.c | 10 +++++----- module/p11-capi-cert.c | 4 ++-- module/p11-capi-object.c | 4 ++-- module/p11-capi-object.h | 15 ++++++++------- module/p11-capi-session.c | 12 ++++++------ module/p11-capi-session.h | 9 +++++++-- module/p11-capi-trust.c | 2 +- module/p11-capi.c | 40 +++++++++++++++++++++++++++++++++------- module/p11-capi.h | 10 ++++++++-- module/p11-capi.vcproj | 36 ++++++++++++++++++------------------ 10 files changed, 90 insertions(+), 52 deletions(-) diff --git a/module/p11-capi-builtin.c b/module/p11-capi-builtin.c index 95fd476..4341f0c 100644 --- a/module/p11-capi-builtin.c +++ b/module/p11-capi-builtin.c @@ -58,12 +58,12 @@ typedef struct _BuiltinMatch BuiltinMatch; static const BuiltinMatch all_builtins[] = { - { (CK_ATTRIBUTE_PTR)&builtin_root, P11C_SLOT_TRUSTED | P11C_SLOT_CA | P11C_SLOT_CERTS }, +// { (CK_ATTRIBUTE_PTR)&builtin_root, P11C_SLOT_TRUSTED | P11C_SLOT_CA | P11C_SLOT_CERTS }, { NULL, 0 } }; /* This is filled in later */ -static CK_ULONG num_builtins = 0; +static CK_ULONG num_builtins = CK_END_LIST; /* -------------------------------------------------------------------------- * IMPLEMENTATION @@ -131,7 +131,7 @@ builtin_load_data(P11cSession* sess, P11cObject* obj, P11cObjectData** objdata) ASSERT(bobj); ASSERT(objdata); - ASSERT(num_builtins > 0); + ASSERT(num_builtins != CK_END_LIST); bdata = (BuiltinObjectData*)calloc(1, sizeof(BuiltinObjectData)); if(!bdata) @@ -211,11 +211,11 @@ p11c_builtin_find(P11cSession* sess, CK_OBJECT_CLASS cls, CK_ATTRIBUTE_PTR match CK_ULONG i, fl; /* First time around count total number */ - if(!num_builtins) + if(num_builtins == CK_END_LIST) { + num_builtins = 0; while(all_builtins[num_builtins].attr) ++num_builtins; - ASSERT(num_builtins > 0); } /* Match each certificate */ diff --git a/module/p11-capi-cert.c b/module/p11-capi-cert.c index 53e198f..49cc508 100644 --- a/module/p11-capi-cert.c +++ b/module/p11-capi-cert.c @@ -89,7 +89,7 @@ parse_basic_constraints(CertObjectData* cdata, CK_ULONG* category) { if(basic->SubjectType.cbData != 1) { - DBG(("basic constraints bits are of invalid size")); + WARN(("basic constraints bits are of invalid size")); ret = CKR_GENERAL_ERROR; } else @@ -372,7 +372,7 @@ calculate_check_value(PCCERT_CONTEXT cert, CK_ATTRIBUTE_PTR attr) if(length < 3) { - DBG(("SHA1 hash length too short: %d", length)); + WARN(("SHA1 hash length too short: %d", length)); return CKR_DEVICE_ERROR; } diff --git a/module/p11-capi-object.c b/module/p11-capi-object.c index 6c2330e..2c37987 100644 --- a/module/p11-capi-object.c +++ b/module/p11-capi-object.c @@ -142,7 +142,7 @@ attribute_data_type(CK_ATTRIBUTE_TYPE type) case CKA_WRAP_TEMPLATE: case CKA_UNWRAP_TEMPLATE: default: - DBG(("unknown attribute type: %x", type)); + WARN(("unknown attribute type: %x", type)); return DATA_UNKNOWN; }; } @@ -269,7 +269,7 @@ p11c_object_data_get_attrs(P11cObjectData* objdata, CK_ATTRIBUTE_PTR attrs, /* Attribute doesn't exist */ else if(rv == CKR_ATTRIBUTE_TYPE_INVALID) { - DBG(("O%d: attribute not found: 0x%08x", objdata->object, attrs[i].type)); + WARN(("O%d: attribute not found: 0x%08x", objdata->object, attrs[i].type)); attrs[i].ulValueLen = (CK_ULONG)-1; } diff --git a/module/p11-capi-object.h b/module/p11-capi-object.h index e884ee1..c204f17 100644 --- a/module/p11-capi-object.h +++ b/module/p11-capi-object.h @@ -22,10 +22,6 @@ #include "p11-capi.h" -/* Debug print something about an object */ -#define DBGO(obj, msg) \ - p11c_debug("O%d: %s", (obj) ? (obj)->id : 0, (msg)) - /* A function to load data for an object */ typedef CK_RV (*P11cLoadData)(P11cSession* sess, struct _P11cObject* obj, P11cObjectData** objdata); @@ -93,8 +89,13 @@ CK_BBOOL p11c_object_data_match_attr (P11cObjectData* objdata, CK_RV p11c_object_data_get_attrs (P11cObjectData* objdata, CK_ATTRIBUTE_PTR attrs, CK_ULONG count); -/* Debug print something about an object data */ -#define DBGOD(objdata, msg) \ - p11c_debug("O%d: %s", (objdata) ? (objdata)->obj : 0, (msg)) +/* Debug print something about an object or object data */ +#if DBG_OUTPUT +#define DBGO(obj, msg) p11c_log("O%d: %s", (obj) ? (obj)->id : 0, (msg)) +#define DBGOD(objdata, msg) p11c_log("O%d: %s", (objdata) ? (objdata)->obj : 0, (msg)) +#else +#define DBGO(obj, msg) +#define DBGOD(objdata, msg) +#endif #endif /* P11C_OBJECT_H */ diff --git a/module/p11-capi-session.c b/module/p11-capi-session.c index e921875..5b2fc14 100644 --- a/module/p11-capi-session.c +++ b/module/p11-capi-session.c @@ -244,7 +244,7 @@ lock_ref_internal(P11cArray* sessions, CK_SESSION_HANDLE id, if(id >= sessions->len) { - DBG(("invalid session id: %d", id)); + WARN(("invalid session id: %d", id)); return CKR_SESSION_HANDLE_INVALID; } @@ -254,7 +254,7 @@ lock_ref_internal(P11cArray* sessions, CK_SESSION_HANDLE id, if(!sess) { - DBG(("session does not exist: %d", id)); + WARN(("session does not exist: %d", id)); return CKR_SESSION_HANDLE_INVALID; } @@ -276,7 +276,7 @@ lock_ref_internal(P11cArray* sessions, CK_SESSION_HANDLE id, if(sess->in_call) { - DBGS(sess, ("an operation is already active in this session")); + WARNS(sess, ("an operation is already active in this session")); return CKR_OPERATION_ACTIVE; } } @@ -289,7 +289,7 @@ lock_ref_internal(P11cArray* sessions, CK_SESSION_HANDLE id, if(!remove && sess->in_call) { ReleaseMutex(sess->mutex); - DBGS(sess, ("an operation is already active in this session")); + WARNS(sess, ("an operation is already active in this session")); return CKR_OPERATION_ACTIVE; } @@ -331,7 +331,7 @@ p11c_session_get_lock_ref(CK_ULONG id, BOOL writable, P11cSession **sess) if(id <= 0) { - DBG(("invalid session id passed: %d", id)); + WARN(("invalid session id passed: %d", id)); return CKR_ARGUMENTS_BAD; } @@ -355,7 +355,7 @@ p11c_session_remove_lock_ref(CK_ULONG id, P11cSession **sess) if(id <= 0) { - DBG(("invalid session id passed: %d", id)); + WARN(("invalid session id passed: %d", id)); return CKR_ARGUMENTS_BAD; } diff --git a/module/p11-capi-session.h b/module/p11-capi-session.h index 8f84026..cb02ee5 100644 --- a/module/p11-capi-session.h +++ b/module/p11-capi-session.h @@ -69,8 +69,13 @@ typedef struct _P11cSession P11cSession; /* Debug print something related to a session */ -#define DBGS(sess, msg) \ - p11c_debug("S%d: %s", (sess) ? (sess)->id : 0, (msg)) +#if DBG_OUTPUT +#define DBGS(sess, msg) p11c_log("S%d: %s", (sess) ? (sess)->id : 0, (msg)) +#else +#define DBGS(sess, msg) +#endif + +#define WARNS(sess, msg) p11c_log("S%d: %s", (sess) ? (sess)->id : 0, (msg)) /* Create a session */ CK_RV p11c_session_create (CK_SLOT_ID slot, P11cSession** ret); diff --git a/module/p11-capi-trust.c b/module/p11-capi-trust.c index e45106a..08e5ac6 100644 --- a/module/p11-capi-trust.c +++ b/module/p11-capi-trust.c @@ -365,7 +365,7 @@ parse_restrictions(TrustObjectData* tdata) if(rst->cbData != 1 && rst->cUnusedBits != 0) { - DBG(("key usage are of invalid size")); + WARN(("key usage are of invalid size")); } else { diff --git a/module/p11-capi.c b/module/p11-capi.c index b5f7f62..8f15cf5 100644 --- a/module/p11-capi.c +++ b/module/p11-capi.c @@ -37,8 +37,8 @@ static int cryptoki_initialized = 0; static HANDLE global_mutex = NULL; -#define MANUFACTURER_ID "Cryptoki CAPI " -#define LIBRARY_DESCRIPTION "Cryptoki CAPI Provider " +#define MANUFACTURER_ID "p11-capi " +#define LIBRARY_DESCRIPTION "PKCS#11 CAPI Provider " #define LIBRARY_VERSION_MAJOR 1 #define LIBRARY_VERSION_MINOR 1 #define HARDWARE_VERSION_MAJOR 0 @@ -61,7 +61,7 @@ static CK_MECHANISM_TYPE all_mechanisms[] = { #define LINE 1024 void -p11c_debug(const char* msg, ...) +p11c_log(const char* msg, ...) { char buf[LINE]; va_list va; @@ -76,10 +76,12 @@ p11c_debug(const char* msg, ...) strncpy(buf + len, "\n", 1024 - len); buf[LINE - 1] = 0; - // OutputDebugStringA(buf); + OutputDebugStringA(buf); } /* Bah humbug, MSVC doesn't have __func__ */ +#if DBG_OUTPUT + #define ENTER(func) \ char* _func = #func; \ p11c_debug("%s: enter", _func) @@ -87,8 +89,26 @@ p11c_debug(const char* msg, ...) #define RETURN(ret) \ return (p11c_debug("%s: %d", _func, ret), ret) +#else /* !DBG_OUTPUT */ + +#define ENTER(func) \ + char* _func = #func; + +#define RETURN(ret) \ + return log_return(_func, ret) + +static CK_RV +log_return(char *func, CK_RV ret) +{ + if(ret != CKR_OK) + p11c_log("%s: %d", func, ret); + return ret; +} + +#endif /* !DBG_OUTPUT */ + #define PREREQ(cond, ret) \ - if (!(cond)) { p11c_debug("%s: %s failed: %d", _func, #cond, ret); return ret; } + if (!(cond)) { p11c_log("%s: %s failed: %d", _func, #cond, ret); return ret; } void p11c_lock_global(void) @@ -325,7 +345,7 @@ p11c_return_filetime(CK_ATTRIBUTE_PTR attr, FILETIME *ftime) if(!FileTimeToSystemTime(ftime, &stime)) { - DBG(("An invalid FILETIME was encountered")); + WARN(("An invalid FILETIME was encountered")); return CKR_GENERAL_ERROR; } @@ -377,7 +397,7 @@ PC_C_Initialize(CK_VOID_PTR init_args) } cryptoki_initialized = 1; - + p11c_log("initialized p11-capi module"); RETURN(CKR_OK); } @@ -393,6 +413,7 @@ PC_C_Finalize(CK_VOID_PTR pReserved) p11c_session_cleanup_all(); p11c_token_cleanup_all(); + p11c_log("finalized p11-capi module"); RETURN(CKR_OK); } @@ -893,6 +914,11 @@ PC_C_GetAttributeValue(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object, p11c_session_unref_unlock(sess); } + if(ret == CKR_OBJECT_HANDLE_INVALID) + { + WARN(("object handle invalid")); + } + RETURN(ret); } diff --git a/module/p11-capi.h b/module/p11-capi.h index e522bfa..d672b69 100644 --- a/module/p11-capi.h +++ b/module/p11-capi.h @@ -66,9 +66,15 @@ typedef struct _P11cSession P11cSession; * Module helper and logging functions. */ -#define DBG(args) p11c_debug args +#if DBG_OUTPUT +#define DBG(args) p11c_log args +#else +#define DBG(args) +#endif + +#define WARN(args) p11c_log args -void p11c_debug (const char* msg, ...); +void p11c_log (const char* msg, ...); /* * Protect global data with these. diff --git a/module/p11-capi.vcproj b/module/p11-capi.vcproj index 7c554d1..288a8ed 100644 --- a/module/p11-capi.vcproj +++ b/module/p11-capi.vcproj @@ -16,8 +16,8 @@ @@ -169,11 +169,11 @@