MCPcopy Create free account
hub / github.com/CalcProgrammer1/OpenRGB / initialize_ssl

Method initialize_ssl

dependencies/httplib/httplib.h:7572–7629  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7570}
7571
7572inline bool SSLClient::initialize_ssl(Socket &socket, Error &error) {
7573 auto ssl = detail::ssl_new(
7574 socket.sock, ctx_, ctx_mutex_,
7575 [&](SSL *ssl) {
7576 if (server_certificate_verification_) {
7577 if (!load_certs()) {
7578 error = Error::SSLLoadingCerts;
7579 return false;
7580 }
7581 SSL_set_verify(ssl, SSL_VERIFY_NONE, nullptr);
7582 }
7583
7584 if (!detail::ssl_connect_or_accept_nonblocking(
7585 socket.sock, ssl, SSL_connect, connection_timeout_sec_,
7586 connection_timeout_usec_)) {
7587 error = Error::SSLConnection;
7588 return false;
7589 }
7590
7591 if (server_certificate_verification_) {
7592 verify_result_ = SSL_get_verify_result(ssl);
7593
7594 if (verify_result_ != X509_V_OK) {
7595 error = Error::SSLServerVerification;
7596 return false;
7597 }
7598
7599 auto server_cert = SSL_get_peer_certificate(ssl);
7600
7601 if (server_cert == nullptr) {
7602 error = Error::SSLServerVerification;
7603 return false;
7604 }
7605
7606 if (!verify_host(server_cert)) {
7607 X509_free(server_cert);
7608 error = Error::SSLServerVerification;
7609 return false;
7610 }
7611 X509_free(server_cert);
7612 }
7613
7614 return true;
7615 },
7616 [&](SSL *ssl) {
7617 SSL_set_tlsext_host_name(ssl, host_.c_str());
7618 return true;
7619 });
7620
7621 if (ssl) {
7622 socket.ssl = ssl;
7623 return true;
7624 }
7625
7626 shutdown_socket(socket);
7627 close_socket(socket);
7628 return false;
7629}

Callers 1

sendMethod · 0.80

Calls 4

ssl_newFunction · 0.85
shutdown_socketFunction · 0.85
close_socketFunction · 0.85

Tested by

no test coverage detected