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
pkcs11-helper, Copyright (C) Alon Bar-Lev <alon.barlev@gmail.com> | ![]() |