MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / initialize_ssl

Method initialize_ssl

examples/server/httplib.h:8092–8149  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8090}
8091
8092inline bool SSLClient::initialize_ssl(Socket &socket, Error &error) {
8093 auto ssl = detail::ssl_new(
8094 socket.sock, ctx_, ctx_mutex_,
8095 [&](SSL *ssl2) {
8096 if (server_certificate_verification_) {
8097 if (!load_certs()) {
8098 error = Error::SSLLoadingCerts;
8099 return false;
8100 }
8101 SSL_set_verify(ssl2, SSL_VERIFY_NONE, nullptr);
8102 }
8103
8104 if (!detail::ssl_connect_or_accept_nonblocking(
8105 socket.sock, ssl2, SSL_connect, connection_timeout_sec_,
8106 connection_timeout_usec_)) {
8107 error = Error::SSLConnection;
8108 return false;
8109 }
8110
8111 if (server_certificate_verification_) {
8112 verify_result_ = SSL_get_verify_result(ssl2);
8113
8114 if (verify_result_ != X509_V_OK) {
8115 error = Error::SSLServerVerification;
8116 return false;
8117 }
8118
8119 auto server_cert = SSL_get1_peer_certificate(ssl2);
8120
8121 if (server_cert == nullptr) {
8122 error = Error::SSLServerVerification;
8123 return false;
8124 }
8125
8126 if (!verify_host(server_cert)) {
8127 X509_free(server_cert);
8128 error = Error::SSLServerVerification;
8129 return false;
8130 }
8131 X509_free(server_cert);
8132 }
8133
8134 return true;
8135 },
8136 [&](SSL *ssl2) {
8137 SSL_set_tlsext_host_name(ssl2, host_.c_str());
8138 return true;
8139 });
8140
8141 if (ssl) {
8142 socket.ssl = ssl;
8143 return true;
8144 }
8145
8146 shutdown_socket(socket);
8147 close_socket(socket);
8148 return false;
8149}

Callers 1

send_Method · 0.80

Calls 5

ssl_newFunction · 0.85
shutdown_socketFunction · 0.85
close_socketFunction · 0.85
c_strMethod · 0.45

Tested by

no test coverage detected