Commit ad9b3856f6278bbcc14c2c17a6df162ae3d7b715
1 parent
b4112fce
Exists in
master
and in
3 other branches
Updating SSL state API.
Showing
5 changed files
with
62 additions
and
23 deletions
Show diff stats
src/include/lib3270.h
... | ... | @@ -522,12 +522,16 @@ |
522 | 522 | */ |
523 | 523 | LIB3270_EXPORT const char * lib3270_get_ssl_state_message(H3270 *hSession); |
524 | 524 | |
525 | + LIB3270_EXPORT const char * lib3270_get_ssl_state_icon_name(H3270 *hSession); | |
526 | + | |
525 | 527 | /** |
526 | 528 | * @brief Get security state message. |
527 | 529 | * |
528 | 530 | */ |
529 | 531 | LIB3270_EXPORT const char * lib3270_get_ssl_state_description(H3270 *hSession); |
530 | 532 | |
533 | + LIB3270_EXPORT char * lib3270_get_crl_text(H3270 *hSession); | |
534 | + | |
531 | 535 | /** |
532 | 536 | * @brief Get service or port for the connect/reconnect operations. |
533 | 537 | * | ... | ... |
src/lib3270/properties.c
... | ... | @@ -297,8 +297,8 @@ |
297 | 297 | const char * lib3270_get_crl_url(H3270 *hSession) |
298 | 298 | { |
299 | 299 | #ifdef SSL_ENABLE_CRL_CHECK |
300 | - if(hSession->ssl.url) | |
301 | - return hSession->ssl.url; | |
300 | + if(hSession->ssl.crl.url) | |
301 | + return hSession->ssl.crl.url; | |
302 | 302 | |
303 | 303 | #ifdef SSL_DEFAULT_CRL_URL |
304 | 304 | return SSL_DEFAULT_CRL_URL; |
... | ... | @@ -322,15 +322,21 @@ |
322 | 322 | |
323 | 323 | #ifdef SSL_ENABLE_CRL_CHECK |
324 | 324 | |
325 | - if(hSession->ssl.crl) | |
325 | + if(hSession->ssl.crl.url) | |
326 | 326 | { |
327 | - free(hSession->ssl.crl); | |
328 | - hSession->ssl.crl = NULL; | |
327 | + free(hSession->ssl.crl.url); | |
328 | + hSession->ssl.crl.url = NULL; | |
329 | + } | |
330 | + | |
331 | + if(hSession->ssl.crl.cert) | |
332 | + { | |
333 | + X509_CRL_free(hSession->ssl.crl.cert); | |
334 | + hSession->ssl.crl.cert = NULL; | |
329 | 335 | } |
330 | 336 | |
331 | 337 | if(crl) |
332 | 338 | { |
333 | - hSession->ssl.crl = strdup(crl); | |
339 | + hSession->ssl.crl.url = strdup(crl); | |
334 | 340 | } |
335 | 341 | |
336 | 342 | return 0; |
... | ... | @@ -628,3 +634,33 @@ LIB3270_EXPORT int lib3270_get_secure_host(H3270 *hSession) |
628 | 634 | |
629 | 635 | } |
630 | 636 | |
637 | +LIB3270_EXPORT char * lib3270_get_crl_text(H3270 *hSession) | |
638 | +{ | |
639 | +#ifdef SSL_ENABLE_CRL_CHECK | |
640 | + | |
641 | + if(hSession->ssl.crl.cert) | |
642 | + { | |
643 | + | |
644 | + BIO * out = BIO_new(BIO_s_mem()); | |
645 | + unsigned char * data; | |
646 | + unsigned char * text; | |
647 | + int n; | |
648 | + | |
649 | + X509_CRL_print(out,hSession->ssl.crl.cert); | |
650 | + | |
651 | + n = BIO_get_mem_data(out, &data); | |
652 | + text = (unsigned char *) lib3270_malloc(n+1); | |
653 | + text[n] ='\0'; | |
654 | + | |
655 | + memcpy(text,data,n); | |
656 | + BIO_free(out); | |
657 | + | |
658 | + return (char *) text; | |
659 | + | |
660 | + } | |
661 | + | |
662 | + | |
663 | +#endif // SSL_ENABLE_CRL_CHECK | |
664 | + | |
665 | + return NULL; | |
666 | +} | ... | ... |
src/lib3270/session.c
src/lib3270/ssl/ctx_init.c
... | ... | @@ -135,27 +135,21 @@ int ssl_ctx_init(H3270 *hSession, SSL_ERROR_MESSAGE * message) |
135 | 135 | |
136 | 136 | if(lib3270_get_toggle(hSession,LIB3270_TOGGLE_SSL_TRACE)) |
137 | 137 | { |
138 | - BIO * out = BIO_new(BIO_s_mem()); | |
139 | - unsigned char * data; | |
140 | - unsigned char * text; | |
141 | - int n; | |
138 | + lib3270_autoptr(char) text = lib3270_get_crl_text(hSession); | |
142 | 139 | |
143 | - X509_CRL_print(out,crl); | |
140 | + if(text) | |
141 | + trace_ssl(hSession,"\n%s\n",text); | |
144 | 142 | |
145 | - n = BIO_get_mem_data(out, &data); | |
146 | - text = (unsigned char *) malloc (n+1); | |
147 | - text[n] ='\0'; | |
148 | - memcpy(text,data,n); | |
149 | - | |
150 | - trace_ssl(hSession,"\n%s\n",text); | |
143 | + } | |
151 | 144 | |
152 | - free(text); | |
153 | - BIO_free(out); | |
145 | + X509_STORE *store = SSL_CTX_get_cert_store(ssl_ctx); | |
154 | 146 | |
147 | + if(hSession->ssl.crl.cert) | |
148 | + { | |
149 | + X509_STORE_add_crl(store, hSession->ssl.crl.cert); | |
150 | + trace_ssl(hSession,"CRL was added to cert store"); | |
155 | 151 | } |
156 | 152 | |
157 | - X509_STORE *store = SSL_CTX_get_cert_store(ssl_ctx); | |
158 | - X509_STORE_add_crl(store, crl); | |
159 | 153 | X509_VERIFY_PARAM *param = X509_VERIFY_PARAM_new(); |
160 | 154 | X509_VERIFY_PARAM_set_flags(param, X509_V_FLAG_CRL_CHECK); |
161 | 155 | X509_STORE_set1_param(store, param); | ... | ... |
src/lib3270/ssl/state.c
... | ... | @@ -437,5 +437,10 @@ void set_ssl_state(H3270 *hSession, LIB3270_SSL_STATE state) |
437 | 437 | return LIB3270_NOTIFY_ERROR; |
438 | 438 | } |
439 | 439 | |
440 | + const char * lib3270_get_ssl_state_icon_name(H3270 *hSession) | |
441 | + { | |
442 | + return "dialog-error"; | |
443 | + } | |
444 | + | |
440 | 445 | #endif // HAVE_LIBSSL |
441 | 446 | ... | ... |