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 fflush (stdout); 00036 fgets (temp, sizeof (temp), stdin); 00037 } 00038 00039 static 00040 void 00041 _pkcs11h_hooks_log ( 00042 IN void * const global_data, 00043 IN unsigned flags, 00044 IN const char * const format, 00045 IN va_list args 00046 ) { 00047 vfprintf (stdout, format, args); 00048 fprintf (stdout, "\n"); 00049 fflush (stdout); 00050 } 00051 00052 static 00053 void 00054 _pkcs11h_hooks_slotevent ( 00055 IN void * const global_data 00056 ) { 00057 printf ("slotevent\n"); 00058 } 00059 00060 int main () { 00061 CK_RV rv; 00062 00063 printf ("Initializing pkcs11-helper\n"); 00064 00065 if ((rv = pkcs11h_initialize ()) != CKR_OK) { 00066 fatal ("pkcs11h_initialize failed", rv); 00067 } 00068 00069 printf ("Registering pkcs11-helper hooks\n"); 00070 00071 if ((rv = pkcs11h_setLogHook (_pkcs11h_hooks_log, NULL)) != CKR_OK) { 00072 fatal ("pkcs11h_setLogHook failed", rv); 00073 } 00074 00075 pkcs11h_setLogLevel (TEST_LOG_LEVEL); 00076 00077 if ((rv = pkcs11h_setSlotEventHook (_pkcs11h_hooks_slotevent, NULL)) != CKR_OK) { 00078 fatal ("pkcs11h_setSlotEventHook failed", rv); 00079 } 00080 00081 printf ("Adding provider '%s' as auto\n", TEST_PROVIDER); 00082 00083 if ( 00084 (rv = pkcs11h_addProvider ( 00085 TEST_PROVIDER, 00086 TEST_PROVIDER, 00087 FALSE, 00088 PKCS11H_PRIVATEMODE_MASK_AUTO, 00089 PKCS11H_SLOTEVENT_METHOD_AUTO, 00090 0, 00091 FALSE 00092 )) != CKR_OK 00093 ) { 00094 fatal ("pkcs11h_addProvider failed", rv); 00095 } 00096 00097 printf ("Please remove and insert tokens (pause for 30 seconds)\n"); 00098 00099 #if defined(_WIN32) 00100 Sleep (30*1024); 00101 #else 00102 sleep (30); 00103 #endif 00104 00105 if ((rv = pkcs11h_removeProvider (TEST_PROVIDER)) != CKR_OK) { 00106 fatal ("pkcs11h_removeProvider failed", rv); 00107 } 00108 00109 printf ("Adding provider '%s' as trigger\n", TEST_PROVIDER); 00110 00111 if ( 00112 (rv = pkcs11h_addProvider ( 00113 TEST_PROVIDER, 00114 TEST_PROVIDER, 00115 FALSE, 00116 PKCS11H_PRIVATEMODE_MASK_AUTO, 00117 PKCS11H_SLOTEVENT_METHOD_TRIGGER, 00118 0, 00119 FALSE 00120 )) != CKR_OK 00121 ) { 00122 fatal ("pkcs11h_addProvider failed", rv); 00123 } 00124 00125 printf ("Please remove and insert tokens (pause for 30 seconds)\n"); 00126 00127 #if defined(_WIN32) 00128 Sleep (30*1024); 00129 #else 00130 sleep (30); 00131 #endif 00132 00133 if ((rv = pkcs11h_removeProvider (TEST_PROVIDER)) != CKR_OK) { 00134 fatal ("pkcs11h_removeProvider failed", rv); 00135 } 00136 00137 printf ("Adding provider '%s' as poll\n", TEST_PROVIDER); 00138 00139 if ( 00140 (rv = pkcs11h_addProvider ( 00141 TEST_PROVIDER, 00142 TEST_PROVIDER, 00143 FALSE, 00144 PKCS11H_PRIVATEMODE_MASK_AUTO, 00145 PKCS11H_SLOTEVENT_METHOD_POLL, 00146 0, 00147 FALSE 00148 )) != CKR_OK 00149 ) { 00150 fatal ("pkcs11h_addProvider failed", rv); 00151 } 00152 00153 printf ("Please remove and insert tokens (pause for 30 seconds)\n"); 00154 00155 #if defined(_WIN32) 00156 Sleep (30*1024); 00157 #else 00158 sleep (30); 00159 #endif 00160 00161 if ((rv = pkcs11h_removeProvider (TEST_PROVIDER)) != CKR_OK) { 00162 fatal ("pkcs11h_removeProvider failed", rv); 00163 } 00164 00165 printf ("Adding provider '%s' as fetch\n", TEST_PROVIDER); 00166 00167 if ( 00168 (rv = pkcs11h_addProvider ( 00169 TEST_PROVIDER, 00170 TEST_PROVIDER, 00171 FALSE, 00172 PKCS11H_PRIVATEMODE_MASK_AUTO, 00173 PKCS11H_SLOTEVENT_METHOD_FETCH, 00174 0, 00175 FALSE 00176 )) != CKR_OK 00177 ) { 00178 fatal ("pkcs11h_addProvider failed", rv); 00179 } 00180 00181 printf ("Please remove and insert tokens (pause for 30 seconds)\n"); 00182 00183 #if defined(_WIN32) 00184 Sleep (30*1024); 00185 #else 00186 sleep (30); 00187 #endif 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
pkcs11-helper, Copyright (C) Alon Bar-Lev <alon.barlev@gmail.com> | ![]() |