summaryrefslogtreecommitdiff
path: root/src/module.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/module.c')
-rw-r--r--src/module.c73
1 files changed, 43 insertions, 30 deletions
diff --git a/src/module.c b/src/module.c
index b1b82b0..9e018e7 100644
--- a/src/module.c
+++ b/src/module.c
@@ -166,14 +166,17 @@ p11t_module_load(const char *filename)
if(rv != CKR_OK)
p11t_msg_fatal("C_GetFunctiontList: couldn't get function list: %s", p11t_msg_rv(rv));
- /** C_GetFunctionList */
- rv = (p11t_module_funcs->C_GetFunctionList)(&list);
- if(rv != CKR_OK)
- p11t_msg_print("C_GetFunctionList: call through function list failed: %s", p11t_msg_rv(rv));
-
- /** - See if returns same data as library entry point */
- if(!memcmp(list, p11t_module_funcs, sizeof(*list)) != 0)
- p11t_msg_print("C_GetFunctionList: function lists returned directly and recursively differ");
+ if(p11t_test_unexpected)
+ {
+ /** C_GetFunctionList */
+ rv = (p11t_module_funcs->C_GetFunctionList)(&list);
+ if(rv != CKR_OK)
+ p11t_msg_print("C_GetFunctionList: call through function list failed: %s", p11t_msg_rv(rv));
+
+ /** - See if returns same data as library entry point */
+ if(!memcmp(list, p11t_module_funcs, sizeof(*list)) != 0)
+ p11t_msg_print("C_GetFunctionList: function lists returned directly and recursively differ");
+ }
}
static int
@@ -259,15 +262,18 @@ p11t_module_initialize(void)
assert(p11t_module_funcs);
- /** - Calls without initializing */
- rv = (p11t_module_funcs->C_GetInfo)(&info);
- p11t_check_returns("C_GetInfo: shouldn't run without initialize", rv, CKR_CRYPTOKI_NOT_INITIALIZED);
+ if(p11t_test_unexpected)
+ {
+ /** - Calls without initializing */
+ rv = (p11t_module_funcs->C_GetInfo)(&info);
+ p11t_check_returns("C_GetInfo: shouldn't run without initialize", rv, CKR_CRYPTOKI_NOT_INITIALIZED);
- /** - NULL argument */
- rv = (p11t_module_funcs->C_Initialize) (NULL);
- p11t_check_returns("C_Initialize: should succeed with null argument", rv, CKR_OK);
- is_initialized = 1;
- p11t_module_finalize();
+ /** - NULL argument */
+ rv = (p11t_module_funcs->C_Initialize) (NULL);
+ p11t_check_returns("C_Initialize: should succeed with null argument", rv, CKR_OK);
+ is_initialized = 1;
+ p11t_module_finalize();
+ }
/** - Multiple initialize with C_Finalize between */
initialize_locking_1();
@@ -286,16 +292,17 @@ p11t_module_initialize(void)
if(!is_initialized)
p11t_msg_fatal("C_Initialize: couldn't initialize pkcs11 module");
- /** - Double initialize in a row */
- rv = (p11t_module_funcs->C_Initialize) (&init_args);
- if (rv != CKR_CRYPTOKI_ALREADY_INITIALIZED)
+ if(p11t_test_unexpected)
{
- p11t_msg_print("C_Initialize: double initialize should return CKR_CRYPTOKI_ALREADY_INITIALIZED: %s", p11t_msg_rv(rv));
- }
- else
- {
- is_initialized = 1;
+ /** - Double initialize in a row */
+ rv = (p11t_module_funcs->C_Initialize) (&init_args);
+ if(rv != CKR_CRYPTOKI_ALREADY_INITIALIZED)
+ {
+ p11t_msg_print("C_Initialize: double initialize should return CKR_CRYPTOKI_ALREADY_INITIALIZED: %s", p11t_msg_rv(rv));
+ }
}
+
+ is_initialized = 1;
}
void
@@ -306,9 +313,12 @@ p11t_module_finalize(void)
/** C_Finalize */
if(is_initialized)
{
- /** - With invalid argument */
- rv = p11t_module_funcs->C_Finalize(&rv);
- p11t_check_returns("C_Finalize: bad argument", rv, CKR_ARGUMENTS_BAD);
+ if(p11t_test_unexpected)
+ {
+ /** - With invalid argument */
+ rv = p11t_module_funcs->C_Finalize(&rv);
+ p11t_check_returns("C_Finalize: bad argument", rv, CKR_ARGUMENTS_BAD);
+ }
/** - Normal call */
assert(p11t_module_funcs);
@@ -317,9 +327,12 @@ p11t_module_finalize(void)
is_initialized = 0;
}
- /** - Double finalize in a row */
- rv = p11t_module_funcs->C_Finalize(NULL);
- p11t_check_returns("C_Finalize: double finalize", rv, CKR_CRYPTOKI_NOT_INITIALIZED);
+ if(p11t_test_unexpected)
+ {
+ /** - Double finalize in a row */
+ rv = p11t_module_funcs->C_Finalize(NULL);
+ p11t_check_returns("C_Finalize: double finalize", rv, CKR_CRYPTOKI_NOT_INITIALIZED);
+ }
}
void