Commit 4cf65783f1c6b21cfe2fbbf29c6cc322613e6711
1 parent
80abb883
Exists in
master
and in
5 other branches
Incluindo dump do certificado no trace de comunicação para facilitar o debug de SSL
Showing
1 changed file
with
23 additions
and
0 deletions
Show diff stats
src/lib3270/telnet.c
... | ... | @@ -776,6 +776,7 @@ static void ssl_negotiate(H3270 *hSession) |
776 | 776 | char buffer[4096]; |
777 | 777 | int alg_bits = 0; |
778 | 778 | const SSL_CIPHER * cipher = SSL_get_current_cipher(hSession->ssl_con); |
779 | + X509 * peer = SSL_get_peer_certificate(hSession->ssl_con); | |
779 | 780 | |
780 | 781 | trace_dsn(hSession,"TLS/SSL negotiated connection complete. Connection is now secure.\n"); |
781 | 782 | |
... | ... | @@ -786,6 +787,28 @@ static void ssl_negotiate(H3270 *hSession) |
786 | 787 | SSL_CIPHER_get_version(cipher), |
787 | 788 | alg_bits, |
788 | 789 | SSL_get_verify_result(hSession->ssl_con)); |
790 | + | |
791 | + if(peer) | |
792 | + { | |
793 | + BIO * out = BIO_new(BIO_s_mem()); | |
794 | + unsigned char * data; | |
795 | + unsigned char * text; | |
796 | + int n; | |
797 | + | |
798 | + X509_print(out,peer); | |
799 | + | |
800 | + n = BIO_get_mem_data(out, &data); | |
801 | + text = (unsigned char *) malloc (n+1); | |
802 | + text[n] ='\0'; | |
803 | + memcpy(text,data,n); | |
804 | + | |
805 | + trace_dsn(hSession,"TLS/SSL peer certificate:\n%s\n",text); | |
806 | + | |
807 | + free(text); | |
808 | + BIO_free(out); | |
809 | + X509_free(peer); | |
810 | + | |
811 | + } | |
789 | 812 | } |
790 | 813 | |
791 | 814 | if(!SSL_get_verify_result(hSession->ssl_con)) | ... | ... |