| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 851 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 862 } | 862 } |
| 863 | 863 |
| 864 // Unlike SSL_get_peer_certificate, SSL_get_peer_cert_chain does not | 864 // Unlike SSL_get_peer_certificate, SSL_get_peer_cert_chain does not |
| 865 // increment the reference so sk_X509_free does not need to be called. | 865 // increment the reference so sk_X509_free does not need to be called. |
| 866 STACK_OF(X509)* chain = SSL_get_peer_cert_chain(ssl_); | 866 STACK_OF(X509)* chain = SSL_get_peer_cert_chain(ssl_); |
| 867 X509Certificate::OSCertHandles intermediates; | 867 X509Certificate::OSCertHandles intermediates; |
| 868 if (chain) { | 868 if (chain) { |
| 869 for (int i = 0; i < sk_X509_num(chain); ++i) | 869 for (int i = 0; i < sk_X509_num(chain); ++i) |
| 870 intermediates.push_back(sk_X509_value(chain, i)); | 870 intermediates.push_back(sk_X509_value(chain, i)); |
| 871 } | 871 } |
| 872 server_cert_ = X509Certificate::CreateFromHandle( | 872 server_cert_ = X509Certificate::CreateFromHandle(cert.get(), intermediates); |
| 873 cert.get(), X509Certificate::SOURCE_FROM_NETWORK, intermediates); | |
| 874 DCHECK(server_cert_); | 873 DCHECK(server_cert_); |
| 875 | 874 |
| 876 return server_cert_; | 875 return server_cert_; |
| 877 } | 876 } |
| 878 | 877 |
| 879 bool SSLClientSocketOpenSSL::DoTransportIO() { | 878 bool SSLClientSocketOpenSSL::DoTransportIO() { |
| 880 bool network_moved = false; | 879 bool network_moved = false; |
| 881 int nsent = BufferSend(); | 880 int nsent = BufferSend(); |
| 882 int nreceived = BufferRecv(); | 881 int nreceived = BufferRecv(); |
| 883 network_moved = (nsent > 0 || nreceived >= 0); | 882 network_moved = (nsent > 0 || nreceived >= 0); |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1210 net_log_.AddByteTransferEvent(NetLog::TYPE_SSL_SOCKET_BYTES_SENT, rv, | 1209 net_log_.AddByteTransferEvent(NetLog::TYPE_SSL_SOCKET_BYTES_SENT, rv, |
| 1211 user_write_buf_->data()); | 1210 user_write_buf_->data()); |
| 1212 return rv; | 1211 return rv; |
| 1213 } | 1212 } |
| 1214 | 1213 |
| 1215 int err = SSL_get_error(ssl_, rv); | 1214 int err = SSL_get_error(ssl_, rv); |
| 1216 return MapOpenSSLError(err, err_tracer); | 1215 return MapOpenSSLError(err, err_tracer); |
| 1217 } | 1216 } |
| 1218 | 1217 |
| 1219 } // namespace net | 1218 } // namespace net |
| OLD | NEW |