00001 #include "../../config.h"
00002 #include <stdio.h>
00003 #include <stdlib.h>
00004 #include <string.h>
00005
00006 #if !defined(ENABLE_PKCS11H_SLOTEVENT)
00007 int main () {
00008 printf ("!win32, certificate, enum and crypto engine interfaces should be enabled for this test");
00009 exit (0);
00010 return 0;
00011 }
00012 #else
00013
00014 #if defined(_WIN32)
00015 #include <windows.h>
00016 #else
00017 #include <unistd.h>
00018 #endif
00019
00020 #include <pkcs11-helper-1.0/pkcs11h-core.h>
00021
00022 static
00023 void
00024 fatal (const char * const m, CK_RV rv) {
00025 fprintf (stderr, "%s - %08lu - %s\n", m, rv, pkcs11h_getMessage (rv));
00026 exit (1);
00027 }
00028
00029 static
00030 void
00031 mypause (const char * const m) {
00032 char temp[10];
00033
00034 fprintf (stdout, "%s", m);
00035 fgets (temp, sizeof (temp), stdin);
00036 }
00037
00038 static
00039 void
00040 _pkcs11h_hooks_log (
00041 IN void * const global_data,
00042 IN unsigned flags,
00043 IN const char * const format,
00044 IN va_list args
00045 ) {
00046 vfprintf (stdout, format, args);
00047 fprintf (stdout, "\n");
00048 }
00049
00050 static
00051 void
00052 _pkcs11h_hooks_slotevent (
00053 IN void * const global_data
00054 ) {
00055 printf ("slotevent\n");
00056 }
00057
00058 int main () {
00059 CK_RV rv;
00060
00061 printf ("Initializing pkcs11-helper\n");
00062
00063 if ((rv = pkcs11h_initialize ()) != CKR_OK) {
00064 fatal ("pkcs11h_initialize failed", rv);
00065 }
00066
00067 printf ("Registering pkcs11-helper hooks\n");
00068
00069 if ((rv = pkcs11h_setLogHook (_pkcs11h_hooks_log, NULL)) != CKR_OK) {
00070 fatal ("pkcs11h_setLogHook failed", rv);
00071 }
00072
00073 pkcs11h_setLogLevel (TEST_LOG_LEVEL);
00074
00075 if ((rv = pkcs11h_setSlotEventHook (_pkcs11h_hooks_slotevent, NULL)) != CKR_OK) {
00076 fatal ("pkcs11h_setSlotEventHook failed", rv);
00077 }
00078
00079 printf ("Adding provider '%s' as auto\n", TEST_PROVIDER);
00080
00081 if (
00082 (rv = pkcs11h_addProvider (
00083 TEST_PROVIDER,
00084 TEST_PROVIDER,
00085 FALSE,
00086 PKCS11H_PRIVATEMODE_MASK_AUTO,
00087 PKCS11H_SLOTEVENT_METHOD_AUTO,
00088 0,
00089 FALSE
00090 )) != CKR_OK
00091 ) {
00092 fatal ("pkcs11h_terminate failed", rv);
00093 }
00094
00095 printf ("Please remove and insert tokens (pause for 30 seconds)\n");
00096
00097 #if defined(_WIN32)
00098 Sleep (30*1024);
00099 #else
00100 sleep (30);
00101 #endif
00102
00103 if ((rv = pkcs11h_removeProvider (TEST_PROVIDER)) != CKR_OK) {
00104 fatal ("pkcs11h_removeProvider failed", rv);
00105 }
00106
00107 printf ("Adding provider '%s' as trigger\n", TEST_PROVIDER);
00108
00109 if (
00110 (rv = pkcs11h_addProvider (
00111 TEST_PROVIDER,
00112 TEST_PROVIDER,
00113 FALSE,
00114 PKCS11H_PRIVATEMODE_MASK_AUTO,
00115 PKCS11H_SLOTEVENT_METHOD_TRIGGER,
00116 0,
00117 FALSE
00118 )) != CKR_OK
00119 ) {
00120 fatal ("pkcs11h_terminate failed", rv);
00121 }
00122
00123 printf ("Please remove and insert tokens (pause for 30 seconds)\n");
00124
00125 #if defined(_WIN32)
00126 Sleep (30*1024);
00127 #else
00128 sleep (30);
00129 #endif
00130
00131 if ((rv = pkcs11h_removeProvider (TEST_PROVIDER)) != CKR_OK) {
00132 fatal ("pkcs11h_removeProvider failed", rv);
00133 }
00134
00135 printf ("Adding provider '%s' as poll\n", TEST_PROVIDER);
00136
00137 if (
00138 (rv = pkcs11h_addProvider (
00139 TEST_PROVIDER,
00140 TEST_PROVIDER,
00141 FALSE,
00142 PKCS11H_PRIVATEMODE_MASK_AUTO,
00143 PKCS11H_SLOTEVENT_METHOD_POLL,
00144 0,
00145 FALSE
00146 )) != CKR_OK
00147 ) {
00148 fatal ("pkcs11h_terminate failed", rv);
00149 }
00150
00151 printf ("Please remove and insert tokens (pause for 30 seconds)\n");
00152
00153 #if defined(_WIN32)
00154 Sleep (30*1024);
00155 #else
00156 sleep (30);
00157 #endif
00158
00159 printf ("Adding provider '%s' as fetch\n", TEST_PROVIDER);
00160
00161 if (
00162 (rv = pkcs11h_addProvider (
00163 TEST_PROVIDER,
00164 TEST_PROVIDER,
00165 FALSE,
00166 PKCS11H_PRIVATEMODE_MASK_AUTO,
00167 PKCS11H_SLOTEVENT_METHOD_FETCH,
00168 0,
00169 FALSE
00170 )) != CKR_OK
00171 ) {
00172 fatal ("pkcs11h_terminate failed", rv);
00173 }
00174
00175 printf ("Please remove and insert tokens (pause for 30 seconds)\n");
00176
00177 #if defined(_WIN32)
00178 Sleep (30*1024);
00179 #else
00180 sleep (30);
00181 #endif
00182
00183 printf ("Terminating pkcs11-helper\n");
00184
00185 if ((rv = pkcs11h_terminate ()) != CKR_OK) {
00186 fatal ("pkcs11h_terminate failed", rv);
00187 }
00188
00189 printf ("Terminating pkcs11-helper\n");
00190
00191 if ((rv = pkcs11h_terminate ()) != CKR_OK) {
00192 fatal ("pkcs11h_terminate failed", rv);
00193 }
00194
00195 exit (0);
00196 return 0;
00197 }
00198
00199 #endif