Commit ddf48c522b973ee8363e5f3ef56fcb42c62073d5
1 parent
4d11746a
Exists in
master
and in
3 other branches
Adding property to enable/disable the CRL download.
Showing
3 changed files
with
36 additions
and
0 deletions
Show diff stats
src/core/properties/boolean.c
| @@ -52,11 +52,21 @@ | @@ -52,11 +52,21 @@ | ||
| 52 | hSession->ssl.crl.download = enabled ? 1 : 0; | 52 | hSession->ssl.crl.download = enabled ? 1 : 0; |
| 53 | return 0; | 53 | return 0; |
| 54 | } | 54 | } |
| 55 | + | ||
| 56 | +LIB3270_EXPORT int lib3270_ssl_get_crl_download(const H3270 *hSession) | ||
| 57 | +{ | ||
| 58 | + return hSession->ssl.crl.download; | ||
| 59 | +} | ||
| 55 | #else | 60 | #else |
| 56 | LIB3270_EXPORT int lib3270_ssl_set_crl_download(H3270 GNUC_UNUSED(*hSession), int GNUC_UNUSED(enabled)) | 61 | LIB3270_EXPORT int lib3270_ssl_set_crl_download(H3270 GNUC_UNUSED(*hSession), int GNUC_UNUSED(enabled)) |
| 57 | { | 62 | { |
| 58 | return errno = ENOTSUP; | 63 | return errno = ENOTSUP; |
| 59 | } | 64 | } |
| 65 | + | ||
| 66 | + LIB3270_EXPORT int lib3270_ssl_get_crl_download(H3270 GNUC_UNUSED(*hSession)) | ||
| 67 | + { | ||
| 68 | + return 0; | ||
| 69 | + } | ||
| 60 | #endif // SSL_ENABLE_CRL_CHECK | 70 | #endif // SSL_ENABLE_CRL_CHECK |
| 61 | 71 | ||
| 62 | const LIB3270_INT_PROPERTY * lib3270_get_boolean_properties_list(void) | 72 | const LIB3270_INT_PROPERTY * lib3270_get_boolean_properties_list(void) |
| @@ -199,6 +209,13 @@ | @@ -199,6 +209,13 @@ | ||
| 199 | }, | 209 | }, |
| 200 | 210 | ||
| 201 | { | 211 | { |
| 212 | + .name = "crlget", // Property name. | ||
| 213 | + .description = N_( "Non zero if the download of CRL is enabled" ), // Property description. | ||
| 214 | + .get = lib3270_ssl_get_crl_download, // Get value. | ||
| 215 | + .set = lib3270_ssl_set_crl_download // Set value. | ||
| 216 | + }, | ||
| 217 | + | ||
| 218 | + { | ||
| 202 | .name = NULL, | 219 | .name = NULL, |
| 203 | .description = NULL, | 220 | .description = NULL, |
| 204 | .get = NULL, | 221 | .get = NULL, |
src/include/lib3270/properties.h
| @@ -225,6 +225,8 @@ | @@ -225,6 +225,8 @@ | ||
| 225 | */ | 225 | */ |
| 226 | LIB3270_EXPORT int lib3270_ssl_set_crl_download(H3270 *hSession, int enabled); | 226 | LIB3270_EXPORT int lib3270_ssl_set_crl_download(H3270 *hSession, int enabled); |
| 227 | 227 | ||
| 228 | + LIB3270_EXPORT int lib3270_ssl_get_crl_download(const H3270 *hSession); | ||
| 229 | + | ||
| 228 | /** | 230 | /** |
| 229 | * @brief Get lib3270 version info. | 231 | * @brief Get lib3270 version info. |
| 230 | * | 232 | * |
src/ssl/negotiate.c
| @@ -57,6 +57,7 @@ | @@ -57,6 +57,7 @@ | ||
| 57 | #include <lib3270/trace.h> | 57 | #include <lib3270/trace.h> |
| 58 | #include <lib3270/log.h> | 58 | #include <lib3270/log.h> |
| 59 | #include <lib3270/toggle.h> | 59 | #include <lib3270/toggle.h> |
| 60 | +#include <lib3270/properties.h> | ||
| 60 | #include "hostc.h" // host_disconnect | 61 | #include "hostc.h" // host_disconnect |
| 61 | #include "trace_dsc.h" | 62 | #include "trace_dsc.h" |
| 62 | 63 | ||
| @@ -412,6 +413,22 @@ static int background_ssl_negotiation(H3270 *hSession, void *message) | @@ -412,6 +413,22 @@ static int background_ssl_negotiation(H3270 *hSession, void *message) | ||
| 412 | break; | 413 | break; |
| 413 | #endif // SSL_ENABLE_SELF_SIGNED_CERT_CHECK | 414 | #endif // SSL_ENABLE_SELF_SIGNED_CERT_CHECK |
| 414 | 415 | ||
| 416 | + case X509_V_ERR_UNABLE_TO_GET_CRL: | ||
| 417 | + | ||
| 418 | + trace_ssl(hSession,"TLS/SSL verify result was %d (%s)\n", rv, msg->body); | ||
| 419 | + | ||
| 420 | + ((SSL_ERROR_MESSAGE *) message)->popup = (LIB3270_POPUP *) msg; | ||
| 421 | + | ||
| 422 | + debug("message: %s",((SSL_ERROR_MESSAGE *) message)->popup->summary); | ||
| 423 | + debug("description: %s",((SSL_ERROR_MESSAGE *) message)->popup->body); | ||
| 424 | + | ||
| 425 | + set_ssl_state(hSession,LIB3270_SSL_NEGOTIATED); | ||
| 426 | + | ||
| 427 | + if(msg->type == LIB3270_NOTIFY_ERROR && lib3270_ssl_get_crl_download(hSession)) | ||
| 428 | + return EACCES; | ||
| 429 | + | ||
| 430 | + break; | ||
| 431 | + | ||
| 415 | default: | 432 | default: |
| 416 | trace_ssl(hSession,"TLS/SSL verify result was %d (%s)\n", rv, msg->body); | 433 | trace_ssl(hSession,"TLS/SSL verify result was %d (%s)\n", rv, msg->body); |
| 417 | 434 |