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)) | ... | ... |