diff options
author | fireice-uk <fireice2@o2.pl> | 2017-02-07 20:45:26 +0000 |
---|---|---|
committer | fireice-uk <fireice2@o2.pl> | 2017-02-08 21:20:19 +0000 |
commit | 2801c518b4f184f5761ca33227b69fc82eb62ef8 (patch) | |
tree | 1a633c8853a63ae570b3eadb72d194447b866cb2 /socket.cpp | |
parent | 1a8323ef6f366058803ce6590b8167ec59928872 (diff) | |
download | xmr-stak-2801c518b4f184f5761ca33227b69fc82eb62ef8.zip xmr-stak-2801c518b4f184f5761ca33227b69fc82eb62ef8.tar.gz |
Figerprint calc
Diffstat (limited to 'socket.cpp')
-rw-r--r-- | socket.cpp | 36 |
1 files changed, 21 insertions, 15 deletions
@@ -5,6 +5,7 @@ #include <openssl/ssl.h> #include <openssl/err.h> #include <openssl/opensslconf.h> + #ifndef OPENSSL_THREADS #error OpenSSL was compiled without thread support #endif @@ -168,13 +169,6 @@ void tls_socket::init_ctx() if(ctx == nullptr) return; - /* Cannot fail ??? */ - //SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, verify_callback); - - /* Cannot fail ??? */ - //SSL_CTX_set_verify_depth(ctx, 4); - - /* Cannot fail ??? */ SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_COMPRESSION); } @@ -233,22 +227,34 @@ bool tls_socket::connect() /* Step 1: verify a server certificate was presented during the negotiation */ X509* cert = SSL_get_peer_certificate(ssl); - if(cert) { X509_free(cert); } /* Free immediately */ - if(cert == nullptr) { print_error(); return false; } - /* Step 2: verify the result of chain verification */ - /* Verification performed according to RFC 4158 */ - //res = SSL_get_verify_result(ssl); - //if(!(X509_V_OK == res)) handleFailure(); + const EVP_MD* digest; + unsigned char md[EVP_MAX_MD_SIZE]; + unsigned int dlen; + + digest = EVP_get_digestbyname("sha256"); + if(digest == nullptr) + { + print_error(); + false; + } + + if(X509_digest(cert, digest, md, &dlen) != 1) + { + print_error(); + false; + } - /* Step 3: hostname verification */ - /* An exercise left to the reader */ + for(size_t i=0; i < dlen; i++) + printf("%.2X:", md[i]); + printf("\n"); + X509_free(cert); return true; } |