- fix compile warnings generated by -Wall
- always return a non-zero error code to the command line on test error
- use a macro to send output to stderr when appropriate
- print file/line numbers for any failures

Signed-off-by: Kent Yoder <[email protected]>

 testcases/driver/sess_mgmt.c |  414 +++++++++++++++++++++---------------------
 1 files changed, 208 insertions(+), 206 deletions(-)

diff --git a/testcases/driver/sess_mgmt.c b/testcases/driver/sess_mgmt.c
index a0d7488..cd75dd2 100755
--- a/testcases/driver/sess_mgmt.c
+++ b/testcases/driver/sess_mgmt.c
@@ -38,7 +38,7 @@ void dump_session_info( CK_SESSION_INFO *info )
 
 //
 //
-int do_OpenSession( void )
+CK_RV do_OpenSession( void )
 {
        CK_SLOT_ID        slot_id;
        CK_FLAGS          flags;
@@ -53,24 +53,24 @@ int do_OpenSession( void )
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &handle );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #1", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_CloseSession( handle );
        if (rc != CKR_OK) {
                show_error("   C_CloseSession #1", rc );
-               return FALSE;
+               return rc;
        }
 
        printf("Looks okay...\n");
 
-       return TRUE;
+       return rc;
 }
 
 
 //
 //
-int do_OpenSession2( void )
+CK_RV do_OpenSession2( void )
 {
        CK_SLOT_ID        slot_id;
        CK_FLAGS          flags;
@@ -85,37 +85,37 @@ int do_OpenSession2( void )
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h1 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #1", rc );
-               return FALSE;
+               return rc;
        }
 
        flags = CKF_SERIAL_SESSION | CKF_RW_SESSION;
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h2 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #2", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_CloseSession( h1 );
        if (rc != CKR_OK) {
                show_error("   C_CloseSession #1", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_CloseSession( h2 );
        if (rc != CKR_OK) {
                show_error("   C_CloseSession #2", rc );
-               return FALSE;
+               return rc;
        }
 
        printf("Looks okay...\n");
 
-       return TRUE;
+       return rc;
 }
 
 
 //
 //
-int do_CloseAllSessions( void )
+CK_RV do_CloseAllSessions( void )
 {
        CK_SLOT_ID        slot_id;
        CK_FLAGS          flags;
@@ -130,38 +130,38 @@ int do_CloseAllSessions( void )
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h1 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #1", rc );
-               return FALSE;
+               return rc;
        }
 
        flags = CKF_SERIAL_SESSION | CKF_RW_SESSION;
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h2 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #2", rc );
-               return FALSE;
+               return rc;
        }
 
        flags = CKF_SERIAL_SESSION | CKF_RW_SESSION;
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h3 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #3", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_CloseAllSessions( slot_id );
        if (rc != CKR_OK) {
                show_error("   C_CloseAllSessions", rc );
-               return FALSE;
+               return rc;
        }
 
        printf("Looks okay...\n");
 
-       return TRUE;
+       return rc;
 }
 
 
 //
 //
-int do_GetSessionInfo( void )
+CK_RV do_GetSessionInfo( void )
 {
        CK_SLOT_ID        slot_id;
        CK_FLAGS          flags;
@@ -177,27 +177,27 @@ int do_GetSessionInfo( void )
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h1 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #1", rc );
-               return FALSE;
+               return rc;
        }
 
        flags = CKF_SERIAL_SESSION | CKF_RW_SESSION;
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h2 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #2", rc );
-               return FALSE;
+               return rc;
        }
 
        flags = CKF_SERIAL_SESSION | CKF_RW_SESSION;
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h3 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #3", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_GetSessionInfo( h1, &info );
        if (rc != CKR_OK) {
                show_error("   C_GetSessionInfo #1", rc );
-               return FALSE;
+               return rc;
        }
 
        dump_session_info( &info );
@@ -205,7 +205,7 @@ int do_GetSessionInfo( void )
        rc = funcs->C_GetSessionInfo( h2, &info );
        if (rc != CKR_OK) {
                show_error("   C_GetSessionInfo #2", rc );
-               return FALSE;
+               return rc;
        }
 
        dump_session_info( &info );
@@ -213,7 +213,7 @@ int do_GetSessionInfo( void )
        rc = funcs->C_GetSessionInfo( h2, &info );
        if (rc != CKR_OK) {
                show_error("   C_GetSessionInfo #3", rc );
-               return FALSE;
+               return rc;
        }
 
        dump_session_info( &info );
@@ -221,12 +221,12 @@ int do_GetSessionInfo( void )
        rc = funcs->C_CloseAllSessions( slot_id );
        if (rc != CKR_OK) {
                show_error("   C_CloseAllSessions", rc );
-               return FALSE;
+               return rc;
        }
 
        printf("Looks okay...\n");
 
-       return TRUE;
+       return rc;
 }
 
 
@@ -247,7 +247,7 @@ int do_GetSessionInfo( void )
 //  C) Try to create a RO session.  Verify that it fails (SO session exists)
 //  D) Close all sessions and return
 //
-int do_LoginLogout( void )
+CK_RV do_LoginLogout( void )
 {
        CK_SLOT_ID        slot_id;
        CK_FLAGS          flags;
@@ -278,21 +278,21 @@ int do_LoginLogout( void )
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h1 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #1", rc );
-               return FALSE;
+               return rc;
        }
 
        flags = CKF_SERIAL_SESSION | CKF_RW_SESSION;
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h2 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #2", rc );
-               return FALSE;
+               return rc;
        }
 
        flags = CKF_SERIAL_SESSION | CKF_RW_SESSION;
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h3 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #3", rc );
-               return FALSE;
+               return rc;
        }
 
        //
@@ -301,13 +301,13 @@ int do_LoginLogout( void )
        rc = funcs->C_Login( h1, CKU_USER, user_pin, user_pin_len );
        if (rc != CKR_OK) {
                show_error("   C_Login #1", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_GetSessionInfo( h1, &info );
        if (rc != CKR_OK) {
                show_error("   C_GetSessionInfo #1", rc );
-               return FALSE;
+               return rc;
        }
 
        dump_session_info( &info );
@@ -315,7 +315,7 @@ int do_LoginLogout( void )
        rc = funcs->C_GetSessionInfo( h2, &info );
        if (rc != CKR_OK) {
                show_error("   C_GetSessionInfo #2", rc );
-               return FALSE;
+               return rc;
        }
 
        dump_session_info( &info );
@@ -323,7 +323,7 @@ int do_LoginLogout( void )
        rc = funcs->C_GetSessionInfo( h2, &info );
        if (rc != CKR_OK) {
                show_error("   C_GetSessionInfo #3", rc );
-               return FALSE;
+               return rc;
        }
 
        dump_session_info( &info );
@@ -335,8 +335,8 @@ int do_LoginLogout( void )
        rc = funcs->C_Login( h2, CKU_USER, user_pin, user_pin_len );
        if (rc != CKR_USER_ALREADY_LOGGED_IN) {
                show_error("   C_Login #2", rc );
-               printf("   Expected CKR_USER_ALREADY_LOGGED_IN\n");
-               return FALSE;
+               PRINT_ERR("   Expected CKR_USER_ALREADY_LOGGED_IN\n");
+               return -1;
        }
 
        //
@@ -345,14 +345,14 @@ int do_LoginLogout( void )
        rc = funcs->C_Logout( h1 );
        if (rc != CKR_OK) {
                show_error("   C_Logout #1", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_Logout( h2 );
        if (rc != CKR_USER_NOT_LOGGED_IN) {
                show_error("   C_Logout #2", rc );
-               printf("   Expected CKR_USER_NOT_LOGGED_IN\n");
-               return FALSE;
+               PRINT_ERR("   Expected CKR_USER_NOT_LOGGED_IN\n");
+               return rc;
        }
 
        //
@@ -361,15 +361,15 @@ int do_LoginLogout( void )
        rc = funcs->C_Login( h1, CKU_SO, so_pin, so_pin_len );
        if (rc != CKR_SESSION_READ_ONLY_EXISTS) {
                show_error("   C_Login #4", rc );
-               printf("   Expected CKR_SESSION_READ_ONLY_EXISTS\n");
-               return FALSE;
+               PRINT_ERR("   Expected CKR_SESSION_READ_ONLY_EXISTS\n");
+               return -1;
        }
 
        rc = funcs->C_Login( h2, CKU_SO, so_pin, so_pin_len );
        if (rc != CKR_SESSION_READ_ONLY_EXISTS) {
                show_error("   C_Login #5", rc );
-               printf("   Expected CKR_SESSION_READ_ONLY_EXISTS\n");
-               return FALSE;
+               PRINT_ERR("   Expected CKR_SESSION_READ_ONLY_EXISTS\n");
+               return -1;
        }
 
        //
@@ -379,7 +379,7 @@ int do_LoginLogout( void )
        rc = funcs->C_CloseAllSessions( slot_id );
        if (rc != CKR_OK) {
                show_error("   C_CloseAllSessions #1", rc );
-               return FALSE;
+               return rc;
        }
 
        //
@@ -389,14 +389,14 @@ int do_LoginLogout( void )
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h1 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #4", rc );
-               return FALSE;
+               return rc;
        }
 
        flags = CKF_SERIAL_SESSION | CKF_RW_SESSION;
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h2 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #5", rc );
-               return FALSE;
+               return rc;
        }
 
        //
@@ -405,13 +405,13 @@ int do_LoginLogout( void )
        rc = funcs->C_Login( h1, CKU_SO, so_pin, so_pin_len );
        if (rc != CKR_OK) {
                show_error("   C_Login #6", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_GetSessionInfo( h1, &info );
        if (rc != CKR_OK) {
                show_error("   C_GetSessionInfo #4", rc );
-               return FALSE;
+               return rc;
        }
 
        dump_session_info( &info );
@@ -419,7 +419,7 @@ int do_LoginLogout( void )
        rc = funcs->C_GetSessionInfo( h2, &info );
        if (rc != CKR_OK) {
                show_error("   C_GetSessionInfo #5", rc );
-               return FALSE;
+               return rc;
        }
 
        dump_session_info( &info );
@@ -431,13 +431,13 @@ int do_LoginLogout( void )
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h3 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #6", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_GetSessionInfo( h3, &info );
        if (rc != CKR_OK) {
                show_error("   C_GetSessionInfo #6", rc );
-               return FALSE;
+               return rc;
        }
 
        dump_session_info( &info );
@@ -449,8 +449,8 @@ int do_LoginLogout( void )
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &h4 );
        if (rc != CKR_SESSION_READ_WRITE_SO_EXISTS) {
                show_error("   C_OpenSession #6", rc );
-               printf("   Expected CKR_SESSION_READ_WRITE_SO_EXISTS\n");
-               return FALSE;
+               PRINT_ERR("   Expected CKR_SESSION_READ_WRITE_SO_EXISTS\n");
+               return -1;
        }
 
 
@@ -460,19 +460,19 @@ int do_LoginLogout( void )
        rc = funcs->C_CloseAllSessions( slot_id );
        if (rc != CKR_OK) {
                show_error("   C_CloseAllSessions #2:  %d", rc );
-               return FALSE;
+               return rc;
        }
 
 
        printf("Looks okay...\n");
 
-       return TRUE;
+       return rc;
 }
 
 
 //
 //
-int do_OperationState1( void )
+CK_RV do_OperationState1( void )
 {
        CK_SLOT_ID          slot_id;
        CK_SESSION_HANDLE   session1, session2;
@@ -519,13 +519,13 @@ int do_OperationState1( void )
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &session1 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #1", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &session2 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #2", rc );
-               return FALSE;
+               return rc;
        }
 
        if (get_user_pin(user_pin))
@@ -535,7 +535,7 @@ int do_OperationState1( void )
        rc = funcs->C_Login( session1, CKU_USER, user_pin, user_pin_len );
        if (rc != CKR_OK) {
                show_error("   C_Login #1", rc );
-               return FALSE;
+               return rc;
        }
 
        orig_len = sizeof(original);
@@ -555,7 +555,7 @@ int do_OperationState1( void )
        rc = funcs->C_GenerateKey( session1, &mech, NULL, 0, &h_key );
        if (rc != CKR_OK) {
                show_error("   C_GenerateKey #1", rc );
-               return FALSE;
+               return rc;
        }
 
        // now encrypt the original data all at once using CBC
@@ -567,14 +567,14 @@ int do_OperationState1( void )
        rc = funcs->C_EncryptInit( session1, &mech, h_key );
        if (rc != CKR_OK) {
                show_error("   C_EncryptInit #1", rc );
-               return FALSE;
+               return rc;
        }
 
        crypt1_len = sizeof(crypt1);
        rc = funcs->C_Encrypt( session1, original, orig_len, crypt1, 
&crypt1_len );
        if (rc != CKR_OK) {
                show_error("   C_Encrypt #1", rc );
-               return FALSE;
+               return rc;
        }
 
 
@@ -583,7 +583,7 @@ int do_OperationState1( void )
        rc = funcs->C_EncryptInit( session1, &mech, h_key );
        if (rc != CKR_OK) {
                show_error("   C_EncryptInit #2", rc );
-               return FALSE;
+               return rc;
        }
 
        crypt2_len = sizeof(crypt2);
@@ -591,7 +591,7 @@ int do_OperationState1( void )
                        crypt2,   &crypt2_len );
        if (rc != CKR_OK) {
                show_error("   C_EncryptUpdate #1", rc );
-               return FALSE;
+               return rc;
        }
 
        // save session #1's operation state
@@ -599,19 +599,19 @@ int do_OperationState1( void )
        rc = funcs->C_GetOperationState( session1, NULL, &op_state_len );
        if (rc != CKR_OK) {
                show_error("   C_GetOperationState #1", rc );
-               return FALSE;
+               return rc;
        }
 
        op_state = (CK_BYTE *)malloc(op_state_len);
        if (!op_state) {
-               show_error("   HOST MEMORY ERROR", CKR_HOST_MEMORY );
-               return FALSE;
+               show_error("   HOST MEMORY ERROR", (CK_ULONG)CKR_HOST_MEMORY );
+               return -1;
        }
 
        rc = funcs->C_GetOperationState( session1, op_state, &op_state_len );
        if (rc != CKR_OK) {
                show_error("   C_GetOperationState #1", rc );
-               return FALSE;
+               return rc;
        }
 
        // now, encrypt some garbage.  this will affect the CBC even if
@@ -622,7 +622,7 @@ int do_OperationState1( void )
                        trash2, &trash2_len );
        if (rc != CKR_OK) {
                show_error("   C_EncryptUpdate #2", rc );
-               return FALSE;
+               return rc;
        }
 
        // restore session #1's operation state that we just saved back
@@ -632,7 +632,7 @@ int do_OperationState1( void )
                        h_key, 0 );
        if (rc != CKR_OK) {
                show_error("   C_SetOperationState #1", rc );
-               return FALSE;
+               return rc;
        }
 
        free( op_state );
@@ -646,7 +646,7 @@ int do_OperationState1( void )
                        crypt2 + i,            &crypt2_len );
        if (rc != CKR_OK) {
                show_error("   C_EncryptUpdate #3", rc );
-               return FALSE;
+               return rc;
        }
 
        crypt2_len += i;
@@ -655,39 +655,39 @@ int do_OperationState1( void )
        rc = funcs->C_EncryptFinal( session2, trash2, &trash2_len );
        if (rc != CKR_OK) {
                show_error("   C_EncryptFinal #1", rc );
-               return FALSE;
+               return rc;
        }
 
        if (crypt2_len != crypt1_len) {
-               printf("   ERROR:  Lengths don't match\n");
-               return FALSE;
+               PRINT_ERR("   ERROR:  Lengths don't match\n");
+               return -1;
        }
 
        if (memcmp(crypt1, crypt2, crypt1_len) != 0) {
-               printf("   ERROR:  crypt1 != crypt2\n");
-               return FALSE;
+               PRINT_ERR("   ERROR:  crypt1 != crypt2\n");
+               return -1;
        }
 
        rc = funcs->C_CloseSession( session1 );
        if (rc != CKR_OK) {
                show_error("   C_CloseSession #1", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_CloseSession( session2 );
        if (rc != CKR_OK) {
                show_error("   C_CloseSession #2", rc );
-               return FALSE;
+               return rc;
        }
 
        printf("Looks okay...\n");
-       return TRUE;
+       return rc;
 }
 
 
 //
 //
-int do_OperationState2( void )
+CK_RV do_OperationState2( void )
 {
        CK_SLOT_ID          slot_id;
        CK_SESSION_HANDLE   session1, session2, session3;
@@ -738,19 +738,19 @@ int do_OperationState2( void )
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &session1 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #1", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &session2 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #2", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &session3 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #3", rc );
-               return FALSE;
+               return rc;
        }
 
        if (get_user_pin(user_pin))
@@ -760,7 +760,7 @@ int do_OperationState2( void )
        rc = funcs->C_Login( session1, CKU_USER, user_pin, user_pin_len );
        if (rc != CKR_OK) {
                show_error("   C_Login #1", rc );
-               return FALSE;
+               return rc;
        }
 
        orig_len = sizeof(original);
@@ -774,31 +774,31 @@ int do_OperationState2( void )
        rc = funcs->C_DigestInit( session1, &mech );
        if (rc != CKR_OK) {
                show_error("   C_DigestInit #1", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_DigestInit( session2, &mech );
        if (rc != CKR_OK) {
                show_error("   C_DigestInit #2", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_DigestInit( session3, &mech );
        if (rc != CKR_OK) {
                show_error("   C_DigestInit #3", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_DigestUpdate( session1, original, 499 );
        if (rc != CKR_OK) {
                show_error("   C_DigestUpdate #1", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_DigestUpdate( session2, original, 27 );
        if (rc != CKR_OK) {
                show_error("   C_DigestUpdate #2", rc );
-               return FALSE;
+               return rc;
        }
 
        orig_len = sizeof(original);
@@ -807,7 +807,7 @@ int do_OperationState2( void )
                        digest3,  &digest3_len );
        if (rc != CKR_OK) {
                show_error("   C_Digest #1", rc );
-               return FALSE;
+               return rc;
        }
 
        // save the operation states of sessions 1 and 2
@@ -815,33 +815,33 @@ int do_OperationState2( void )
        rc = funcs->C_GetOperationState( session1, NULL, &op_state1_len );
        if (rc != CKR_OK) {
                show_error("   C_GetOperationState #1", rc );
-               return FALSE;
+               return rc;
        }
        op_state1 = (CK_BYTE *)malloc(op_state1_len);
        if (!op_state1) {
-               show_error("   HOST MEMORY ERROR", CKR_HOST_MEMORY );
-               return FALSE;
+               show_error("   HOST MEMORY ERROR", (CK_ULONG)CKR_HOST_MEMORY );
+               return -1;
        }
        rc = funcs->C_GetOperationState( session1, op_state1, &op_state1_len );
        if (rc != CKR_OK) {
                show_error("   C_GetOperationState #2", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_GetOperationState( session2, NULL, &op_state2_len );
        if (rc != CKR_OK) {
                show_error("   C_GetOperationState #3", rc );
-               return FALSE;
+               return rc;
        }
        op_state2 = (CK_BYTE *)malloc(op_state2_len);
        if (!op_state2) {
-               show_error("   HOST MEMORY ERROR", CKR_HOST_MEMORY );
-               return FALSE;
+               show_error("   HOST MEMORY ERROR", (CK_ULONG)CKR_HOST_MEMORY );
+               return -1;
        }
        rc = funcs->C_GetOperationState( session2, op_state2, &op_state2_len );
        if (rc != CKR_OK) {
                show_error("   C_GetOperationState #4", rc );
-               return FALSE;
+               return rc;
        }
 
        // switch the states
@@ -850,14 +850,14 @@ int do_OperationState2( void )
                        0, 0 );
        if (rc != CKR_OK) {
                show_error("   C_SetOperationState #2", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_SetOperationState( session2, op_state1, op_state1_len,
                        0, 0 );
        if (rc != CKR_OK) {
                show_error("   C_SetOperationState #3", rc );
-               return FALSE;
+               return rc;
        }
 
        // now, finish the digest operations
@@ -865,68 +865,68 @@ int do_OperationState2( void )
        rc = funcs->C_DigestUpdate( session2, original+499, (orig_len - 499) );
        if (rc != CKR_OK) {
                show_error("   C_DigestUpdate #3", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_DigestUpdate( session1, original+27, orig_len - 27 );
        if (rc != CKR_OK) {
                show_error("   C_DigestUpdate #4", rc );
-               return FALSE;
+               return rc;
        }
 
        digest1_len = sizeof(digest1);
        rc = funcs->C_DigestFinal( session1, digest1, &digest1_len );
        if (rc != CKR_OK) {
                show_error("   C_DigestFinal #1", rc );
-               return FALSE;
+               return rc;
        }
 
        digest2_len = sizeof(digest2);
        rc = funcs->C_DigestFinal( session2, digest2, &digest2_len );
        if (rc != CKR_OK) {
                show_error("   C_DigestFinal #2", rc );
-               return FALSE;
+               return rc;
        }
 
        if (digest1_len != digest2_len || digest1_len != digest3_len) {
-               printf("   ERROR:  digested lengths don't match\n");
-               return FALSE;
+               PRINT_ERR("   ERROR:  digested lengths don't match\n");
+               return -1;
        }
 
        if (memcmp(digest1, digest2, digest1_len) != 0) {
-               printf("   ERROR:  digest1 != digest2\n");
-               return FALSE;
+               PRINT_ERR("   ERROR:  digest1 != digest2\n");
+               return -1;
        }
 
        if (memcmp(digest1, digest3, digest1_len) != 0) {
-               printf("   ERROR:  digest1 != digest3\n");
-               return FALSE;
+               PRINT_ERR("   ERROR:  digest1 != digest3\n");
+               return -1;
        }
 
        rc = funcs->C_CloseSession( session1 );
        if (rc != CKR_OK) {
                show_error("   C_CloseSession #3", rc );
-               return FALSE;
+               return rc;
        }
        rc = funcs->C_CloseSession( session2 );
        if (rc != CKR_OK) {
                show_error("   C_CloseSession #4", rc );
-               return FALSE;
+               return rc;
        }
        rc = funcs->C_CloseSession( session3 );
        if (rc != CKR_OK) {
                show_error("   C_CloseSession #5", rc );
-               return FALSE;
+               return rc;
        }
 
        printf("Looks okay...\n");
-       return TRUE;
+       return rc;
 }
 
 
 //
 //
-int do_OperationState3( void )
+CK_RV do_OperationState3( void )
 {
        CK_SLOT_ID          slot_id;
        CK_SESSION_HANDLE   session1, session2, session3;
@@ -975,19 +975,19 @@ int do_OperationState3( void )
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &session1 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #1", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &session2 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #2", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_OpenSession( slot_id, flags, NULL, NULL, &session3 );
        if (rc != CKR_OK) {
                show_error("   C_OpenSession #3", rc );
-               return FALSE;
+               return rc;
        }
 
        if (get_user_pin(user_pin))
@@ -997,7 +997,7 @@ int do_OperationState3( void )
        rc = funcs->C_Login( session1, CKU_USER, user_pin, user_pin_len );
        if (rc != CKR_OK) {
                show_error("   C_Login #1", rc );
-               return FALSE;
+               return rc;
        }
 
        orig_len = sizeof(original);
@@ -1012,7 +1012,7 @@ int do_OperationState3( void )
        rc = funcs->C_GenerateKey( session1, &mech1, NULL, 0, &key );
        if (rc != CKR_OK) {
                show_error("   C_GenerateKey #1", rc );
-               return FALSE;
+               return rc;
        }
 
 
@@ -1023,7 +1023,7 @@ int do_OperationState3( void )
        rc = funcs->C_EncryptInit( session1, &mech1, key );
        if (rc != CKR_OK) {
                show_error("   C_EncryptInit #1", rc );
-               return FALSE;
+               return rc;
        }
 
        mech2.mechanism      = CKM_MD5;
@@ -1033,19 +1033,19 @@ int do_OperationState3( void )
        rc = funcs->C_DigestInit( session2, &mech2 );
        if (rc != CKR_OK) {
                show_error("   C_DigestInit #1", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_DigestInit( session3, &mech2 );
        if (rc != CKR_OK) {
                show_error("   C_DigestInit #2", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_DigestUpdate( session2, original, 499 );
        if (rc != CKR_OK) {
                show_error("   C_DigestUpdate #1", rc );
-               return FALSE;
+               return rc;
        }
 
        orig_len = sizeof(original);
@@ -1054,30 +1054,30 @@ int do_OperationState3( void )
                        digest3,  &digest3_len );
        if (rc != CKR_OK) {
                show_error("   C_Digest #1", rc );
-               return FALSE;
+               return rc;
        }
 
 
        rc = funcs->C_GetOperationState( session2, NULL, &op_state2_len );
        if (rc != CKR_OK) {
                show_error("   C_GetOperationState #1", rc );
-               return FALSE;
+               return rc;
        }
        op_state2 = (CK_BYTE *)malloc(op_state2_len);
        if (!op_state2) {
-               show_error("   HOST MEMORY ERROR #1", CKR_HOST_MEMORY );
-               return FALSE;
+               show_error("   HOST MEMORY ERROR #1", (CK_ULONG)CKR_HOST_MEMORY 
);
+               return -1;
        }
        rc = funcs->C_GetOperationState( session2, op_state2, &op_state2_len );
        if (rc != CKR_OK) {
                show_error("   C_GetOperationState #2", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_SetOperationState( session1, op_state2, op_state2_len, 0, 
0 );
        if (rc != CKR_OK) {
                show_error("   C_SetOperationState #1", rc );
-               return FALSE;
+               return rc;
        }
 
        // session #1 should not be set to do digest not encryption
@@ -1086,8 +1086,8 @@ int do_OperationState3( void )
        rc = funcs->C_EncryptUpdate( session1, original, 499, junk, &junk_len );
        if (rc != CKR_OPERATION_NOT_INITIALIZED) {
                show_error("   C_EncryptUpdate #1", rc );
-               printf("   Expected CKR_OPERATION_NOT_INITIALIZED\n" );
-               return FALSE;
+               PRINT_ERR("   Expected CKR_OPERATION_NOT_INITIALIZED\n" );
+               return -1;
        }
 
 
@@ -1096,13 +1096,13 @@ int do_OperationState3( void )
        rc = funcs->C_DigestUpdate( session1, original+499, (orig_len - 499) );
        if (rc != CKR_OK) {
                show_error("   C_DigestUpdate #2", rc );
-               return FALSE;
+               return rc;
        }
 
        rc = funcs->C_DigestUpdate( session2, original+499, (orig_len - 499) );
        if (rc != CKR_OK) {
                show_error("   C_DigestUpdate #3", rc );
-               return FALSE;
+               return rc;
        }
 
 
@@ -1110,160 +1110,162 @@ int do_OperationState3( void )
        rc = funcs->C_DigestFinal( session1, digest1, &digest1_len );
        if (rc != CKR_OK) {
                show_error("   C_DigestFinal #1", rc );
-               return FALSE;
+               return rc;
        }
 
        digest2_len = sizeof(digest2);
        rc = funcs->C_DigestFinal( session2, digest2, &digest2_len );
        if (rc != CKR_OK) {
                show_error("   C_DigestFinal #2", rc );
-               return FALSE;
+               return rc;
        }
 
        if (digest1_len != digest2_len || digest1_len != digest3_len) {
-               printf("   ERROR:  digested lengths don't match\n");
-               return FALSE;
+               PRINT_ERR("   ERROR:  digested lengths don't match\n");
+               return -1;
        }
 
        if (memcmp(digest1, digest2, digest1_len) != 0) {
-               printf("   ERROR:  digest1 != digest2\n");
-               return FALSE;
+               PRINT_ERR("   ERROR:  digest1 != digest2\n");
+               return -1;
        }
 
        if (memcmp(digest1, digest3, digest1_len) != 0) {
-               printf("   ERROR:  digest1 != digest3\n");
-               return FALSE;
+               PRINT_ERR("   ERROR:  digest1 != digest3\n");
+               return -1;
        }
 
        rc = funcs->C_CloseSession( session1 );
        if (rc != CKR_OK) {
                show_error("   C_CloseSession #3", rc );
-               return FALSE;
+               return rc;
        }
        rc = funcs->C_CloseSession( session2 );
        if (rc != CKR_OK) {
                show_error("   C_CloseSession #4", rc );
-               return FALSE;
+               return rc;
        }
        rc = funcs->C_CloseSession( session3 );
        if (rc != CKR_OK) {
                show_error("   C_CloseSession #5", rc );
-               return FALSE;
-       }
-
-       printf("Looks okay...\n");
-       return TRUE;
-}
-
-int main(int argc, char **argv)
-{
-       CK_C_INITIALIZE_ARGS cinit_args;
-       int rc, i;
-
-       
-       rc = do_ParseArgs(argc, argv);
-       if ( rc != 1)
-               return rc;
-
-       printf("Using slot #%lu...\n\n", SLOT_ID );
-       printf("With option: no_init: %d\n", no_init);
-
-       rc = do_GetFunctionList();
-       if (!rc) {
-               fprintf(stderr, "ERROR do_GetFunctionList() Failed , rc = 
0x%0x\n", rc); 
                return rc;
        }
-       
-       memset( &cinit_args, 0x0, sizeof(cinit_args) );
-       cinit_args.flags = CKF_OS_LOCKING_OK;
-
-       // SAB Add calls to ALL functions before the C_Initialize gets hit
-
-       funcs->C_Initialize( &cinit_args );
-
-       {
-               CK_SESSION_HANDLE  hsess = 0;
-
-               rc = funcs->C_GetFunctionStatus(hsess);
-               if (rc  != CKR_FUNCTION_NOT_PARALLEL)  
-                       return rc;
-
-               rc = funcs->C_CancelFunction(hsess);
-               if (rc  != CKR_FUNCTION_NOT_PARALLEL)
-                       return rc;
 
-       }
-
-       sess_mgmt_functions();
+       printf("Looks okay...\n");
+       return rc;
 }
 
-int sess_mgmt_functions()
+CK_RV sess_mgmt_functions()
 {
        SYSTEMTIME  t1, t2;
-       int         rc;
+       CK_RV         rc;
 
 
        GetSystemTime(&t1);
        rc = do_OpenSession();
-       if (!rc && !no_stop)
-               return FALSE;
+       if (rc && !no_stop)
+               return rc;
        GetSystemTime(&t2);
        process_time( t1, t2 );
 
 
        GetSystemTime(&t1);
        rc = do_OpenSession2();
-       if (!rc && !no_stop)
-               return FALSE;
+       if (rc && !no_stop)
+               return rc;
        GetSystemTime(&t2);
        process_time( t1, t2 );
 
 
        GetSystemTime(&t1);
        rc = do_CloseAllSessions();
-       if (!rc && !no_stop)
-               return FALSE;
+       if (rc && !no_stop)
+               return rc;
        GetSystemTime(&t2);
        process_time( t1, t2 );
 
        GetSystemTime(&t1);
        rc = do_GetSessionInfo();
-       if (!rc && !no_stop)
-               return FALSE;
+       if (rc && !no_stop)
+               return rc;
        GetSystemTime(&t2);
        process_time( t1, t2 );
 
 
        GetSystemTime(&t1);
        rc = do_LoginLogout();
-       if (!rc && !no_stop)
-               return FALSE;
+       if (rc && !no_stop)
+               return rc;
        GetSystemTime(&t2);
        process_time( t1, t2 );
 
 
        GetSystemTime(&t1);
        rc = do_OperationState1();
-       if (!rc && !no_stop)
-               return FALSE;
+       if (rc && !no_stop)
+               return rc;
        GetSystemTime(&t2);
        process_time( t1, t2 );
 
 
        GetSystemTime(&t1);
        rc = do_OperationState2();
-       if (!rc && !no_stop)
-               return FALSE;
+       if (rc && !no_stop)
+               return rc;
        GetSystemTime(&t2);
        process_time( t1, t2 );
 
 
        GetSystemTime(&t1);
        rc = do_OperationState3();
-       if (!rc && !no_stop)
-               return FALSE;
+       if (rc && !no_stop)
+               return rc;
        GetSystemTime(&t2);
        process_time( t1, t2 );
 
-       return TRUE;
+       return rc;
+}
+
+int main(int argc, char **argv)
+{
+       CK_C_INITIALIZE_ARGS cinit_args;
+       int rc;
+       CK_RV rv;
+       
+       rc = do_ParseArgs(argc, argv);
+       if ( rc != 1)
+               return rc;
+
+       printf("Using slot #%lu...\n\n", SLOT_ID );
+       printf("With option: no_init: %d\n", no_init);
+
+       rc = do_GetFunctionList();
+       if (!rc) {
+               PRINT_ERR("ERROR do_GetFunctionList() Failed , rc = 0x%0x\n", 
rc); 
+               return rc;
+       }
+       
+       memset( &cinit_args, 0x0, sizeof(cinit_args) );
+       cinit_args.flags = CKF_OS_LOCKING_OK;
+
+       // SAB Add calls to ALL functions before the C_Initialize gets hit
+
+       funcs->C_Initialize( &cinit_args );
+
+       {
+               CK_SESSION_HANDLE  hsess = 0;
+
+               rc = funcs->C_GetFunctionStatus(hsess);
+               if (rc  != CKR_FUNCTION_NOT_PARALLEL)  
+                       return rc;
+
+               rc = funcs->C_CancelFunction(hsess);
+               if (rc  != CKR_FUNCTION_NOT_PARALLEL)
+                       return rc;
+
+       }
+
+       rv = sess_mgmt_functions();
+       /* make sure we return non-zero if rv is non-zero */
+       return ((rv==0) || (rv % 256) ? rv : -1);
 }

------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Opencryptoki-tech mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opencryptoki-tech

Reply via email to