Commit 492f22abc1c8f0f708f177ec6bfe0bcb7447449f

Authored by Perry Werneck
1 parent 2d72ed5d

Adding option to disable automatic download of the CRL.

src/core/properties/boolean.c
@@ -45,6 +45,13 @@ @@ -45,6 +45,13 @@
45 return hSession->starting != 0; 45 return hSession->starting != 0;
46 } 46 }
47 47
  48 + void lib3270_disable_crl_download(H3270 *hSession)
  49 + {
  50 +#ifdef SSL_ENABLE_CRL_CHECK
  51 + hSession->ssl.crl.download = 0;
  52 +#endif // SSL_ENABLE_CRL_CHECK
  53 + }
  54 +
48 const LIB3270_INT_PROPERTY * lib3270_get_boolean_properties_list(void) 55 const LIB3270_INT_PROPERTY * lib3270_get_boolean_properties_list(void)
49 { 56 {
50 57
src/core/session.c
@@ -410,6 +410,10 @@ H3270 * lib3270_session_new(const char *model) @@ -410,6 +410,10 @@ H3270 * lib3270_session_new(const char *model)
410 hSession = lib3270_malloc(sizeof(H3270)); 410 hSession = lib3270_malloc(sizeof(H3270));
411 hSession->id = 0; 411 hSession->id = 0;
412 412
  413 +#ifdef SSL_ENABLE_CRL_CHECK
  414 + hSession->ssl.crl.download = 1;
  415 +#endif // SSL_ENABLE_CRL_CHECK
  416 +
413 if(!default_session) 417 if(!default_session)
414 default_session = hSession; 418 default_session = hSession;
415 419
src/include/internals.h
@@ -147,15 +147,6 @@ LIB3270_INTERNAL const char * build_rpq_revision; @@ -147,15 +147,6 @@ LIB3270_INTERNAL const char * build_rpq_revision;
147 LIB3270_INTERNAL Boolean dbcs; 147 LIB3270_INTERNAL Boolean dbcs;
148 #endif /*]*/ 148 #endif /*]*/
149 149
150 -  
151 -/**  
152 - * @brief toggle names  
153 - */ /*  
154 -struct toggle_name {  
155 - const char *name;  
156 - int index;  
157 -}; */  
158 -  
159 /// @brief State macros 150 /// @brief State macros
160 #define PCONNECTED lib3270_pconnected(hSession) 151 #define PCONNECTED lib3270_pconnected(hSession)
161 #define HALF_CONNECTED lib3270_half_connected(hSession) 152 #define HALF_CONNECTED lib3270_half_connected(hSession)
@@ -188,14 +179,6 @@ struct toggle_name { @@ -188,14 +179,6 @@ struct toggle_name {
188 #define PN ((XtPointer) NULL) 179 #define PN ((XtPointer) NULL)
189 #define Replace(var, value) { lib3270_free(var); var = (value); }; 180 #define Replace(var, value) { lib3270_free(var); var = (value); };
190 181
191 -/// @brief Configuration change masks.  
192 -//#define NO_CHANGE 0x0000 /// @brief no change  
193 -// #define MODEL_CHANGE 0x0001 /// @brief screen dimensions changed  
194 -//#define FONT_CHANGE 0x0002 /// @brief emulator font changed  
195 -//#define COLOR_CHANGE 0x0004 /// @brief color scheme or 3278/9 mode changed  
196 -//#define SCROLL_CHANGE 0x0008 /// @brief scrollbar snapped on or off  
197 -//#define CHARSET_CHANGE 0x0010 /// @brief character set changed  
198 -// #define ALL_CHANGE 0xffff /// @brief everything changed  
199 182
200 /* Portability macros */ 183 /* Portability macros */
201 184
@@ -218,14 +201,6 @@ struct toggle_name { @@ -218,14 +201,6 @@ struct toggle_name {
218 #define DFT_BUF (4 * 1024) 201 #define DFT_BUF (4 * 1024)
219 #endif /*]*/ 202 #endif /*]*/
220 203
221 -/* DBCS Preedit Types */ /*  
222 -#if defined(X3270_DBCS)  
223 - #define PT_ROOT "Root"  
224 - #define PT_OVER_THE_SPOT "OverTheSpot"  
225 - #define PT_OFF_THE_SPOT "OffTheSpot"  
226 - #define PT_ON_THE_SPOT "OnTheSpot"  
227 -#endif */  
228 -  
229 /** 204 /**
230 * @brief input key type 205 * @brief input key type
231 */ 206 */
@@ -690,6 +665,7 @@ struct _h3270 @@ -690,6 +665,7 @@ struct _h3270
690 #ifdef SSL_ENABLE_CRL_CHECK 665 #ifdef SSL_ENABLE_CRL_CHECK
691 struct 666 struct
692 { 667 {
  668 + char download; ///< @brief Non zero to download CRL.
693 char * prefer; ///< @brief Prefered protocol for CRL. 669 char * prefer; ///< @brief Prefered protocol for CRL.
694 char * url; ///< @brief URL for CRL download. 670 char * url; ///< @brief URL for CRL download.
695 X509_CRL * cert; ///< @brief Loaded CRL (can be null). 671 X509_CRL * cert; ///< @brief Loaded CRL (can be null).
src/include/lib3270/properties.h
@@ -212,6 +212,14 @@ @@ -212,6 +212,14 @@
212 */ 212 */
213 LIB3270_EXPORT const LIB3270_UINT_PROPERTY * lib3270_unsigned_property_get_by_name(const char *name); 213 LIB3270_EXPORT const LIB3270_UINT_PROPERTY * lib3270_unsigned_property_get_by_name(const char *name);
214 214
  215 + /**
  216 + * @brief Disable automatic download of the CRL.
  217 + *
  218 + * @param hSession Session handle.
  219 + *
  220 + */
  221 + LIB3270_EXPORT void lib3270_disable_crl_download(H3270 *hSession);
  222 +
215 #ifdef __cplusplus 223 #ifdef __cplusplus
216 } 224 }
217 #endif 225 #endif
@@ -247,32 +247,40 @@ int lib3270_crl_new_from_dist_points(H3270 *hSession, void *ssl_error, CRL_DIST_ @@ -247,32 +247,40 @@ int lib3270_crl_new_from_dist_points(H3270 *hSession, void *ssl_error, CRL_DIST_
247 hSession->ssl.crl.url = NULL; 247 hSession->ssl.crl.url = NULL;
248 } 248 }
249 249
250 - if(hSession->ssl.crl.prefer && *hSession->ssl.crl.prefer) 250 + //
  251 + // Downloading CRLs
  252 + //
  253 + if(hSession->ssl.crl.download)
251 { 254 {
252 - size_t length = strlen(hSession->ssl.crl.prefer);  
253 -  
254 - for(ix = 0; ix < uris->length; ix++) 255 + if(hSession->ssl.crl.prefer && *hSession->ssl.crl.prefer)
255 { 256 {
256 - if(!strncmp(uris->str[ix],hSession->ssl.crl.prefer,length)) 257 + size_t length = strlen(hSession->ssl.crl.prefer);
  258 +
  259 + for(ix = 0; ix < uris->length; ix++)
257 { 260 {
258 - trace_ssl(hSession,"Trying preferred URL %s\n",uris->str[ix]);  
259 - if(lib3270_crl_new_from_url(hSession, ssl_error, uris->str[ix]) == 0)  
260 - return 0; 261 + if(!strncmp(uris->str[ix],hSession->ssl.crl.prefer,length))
  262 + {
  263 + trace_ssl(hSession,"Trying preferred URL %s\n",uris->str[ix]);
  264 + if(lib3270_crl_new_from_url(hSession, ssl_error, uris->str[ix]) == 0)
  265 + return 0;
  266 + }
  267 +
261 } 268 }
262 269
263 } 270 }
264 271
265 - } 272 + // Can't load, try all of them.
  273 + for(ix = 0; ix < uris->length; ix++)
  274 + {
  275 + trace_ssl(hSession,"Trying CRL from %s\n",uris->str[ix]);
  276 + if(lib3270_crl_new_from_url(hSession, ssl_error, uris->str[ix]) == 0)
  277 + return 0;
  278 + }
266 279
267 - // Can't load, try all of them.  
268 - for(ix = 0; ix < uris->length; ix++)  
269 - {  
270 - trace_ssl(hSession,"Trying CRL from %s\n",uris->str[ix]);  
271 - if(lib3270_crl_new_from_url(hSession, ssl_error, uris->str[ix]) == 0)  
272 - return 0; 280 + return -1;
273 } 281 }
274 282
275 - return -1; 283 + return 0;
276 284
277 } 285 }
278 286