OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // OpenSSL binding for SSLClientSocket. The class layout and general principle | 5 // OpenSSL binding for SSLClientSocket. The class layout and general principle |
6 // of operation is derived from SSLClientSocketNSS. | 6 // of operation is derived from SSLClientSocketNSS. |
7 | 7 |
8 #include "net/socket/ssl_client_socket_openssl.h" | 8 #include "net/socket/ssl_client_socket_openssl.h" |
9 | 9 |
10 #include <openssl/ssl.h> | 10 #include <openssl/ssl.h> |
(...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
861 } | 861 } |
862 | 862 |
863 // Unlike SSL_get_peer_certificate, SSL_get_peer_cert_chain does not | 863 // Unlike SSL_get_peer_certificate, SSL_get_peer_cert_chain does not |
864 // increment the reference so sk_X509_free does not need to be called. | 864 // increment the reference so sk_X509_free does not need to be called. |
865 STACK_OF(X509)* chain = SSL_get_peer_cert_chain(ssl_); | 865 STACK_OF(X509)* chain = SSL_get_peer_cert_chain(ssl_); |
866 X509Certificate::OSCertHandles intermediates; | 866 X509Certificate::OSCertHandles intermediates; |
867 if (chain) { | 867 if (chain) { |
868 for (int i = 0; i < sk_X509_num(chain); ++i) | 868 for (int i = 0; i < sk_X509_num(chain); ++i) |
869 intermediates.push_back(sk_X509_value(chain, i)); | 869 intermediates.push_back(sk_X509_value(chain, i)); |
870 } | 870 } |
871 server_cert_ = X509Certificate::CreateFromHandle( | 871 server_cert_ = X509Certificate::CreateFromHandle(cert.get(), |
872 cert.get(), X509Certificate::SOURCE_FROM_NETWORK, intermediates); | 872 intermediates); |
873 DCHECK(server_cert_); | 873 DCHECK(server_cert_); |
874 | 874 |
875 return server_cert_; | 875 return server_cert_; |
876 } | 876 } |
877 | 877 |
878 bool SSLClientSocketOpenSSL::DoTransportIO() { | 878 bool SSLClientSocketOpenSSL::DoTransportIO() { |
879 bool network_moved = false; | 879 bool network_moved = false; |
880 int nsent = BufferSend(); | 880 int nsent = BufferSend(); |
881 int nreceived = BufferRecv(); | 881 int nreceived = BufferRecv(); |
882 network_moved = (nsent > 0 || nreceived >= 0); | 882 network_moved = (nsent > 0 || nreceived >= 0); |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1183 int rv = SSL_write(ssl_, user_write_buf_->data(), user_write_buf_len_); | 1183 int rv = SSL_write(ssl_, user_write_buf_->data(), user_write_buf_len_); |
1184 | 1184 |
1185 if (rv >= 0) | 1185 if (rv >= 0) |
1186 return rv; | 1186 return rv; |
1187 | 1187 |
1188 int err = SSL_get_error(ssl_, rv); | 1188 int err = SSL_get_error(ssl_, rv); |
1189 return MapOpenSSLError(err, err_tracer); | 1189 return MapOpenSSLError(err, err_tracer); |
1190 } | 1190 } |
1191 | 1191 |
1192 } // namespace net | 1192 } // namespace net |
OLD | NEW |