| Index: net/socket/ssl_client_socket_openssl.cc
|
| diff --git a/net/socket/ssl_client_socket_openssl.cc b/net/socket/ssl_client_socket_openssl.cc
|
| index d6345f71501d2acc3e20384943045d90ebdfa846..44decd07e72a695a793989355cb36880327ab6c1 100644
|
| --- a/net/socket/ssl_client_socket_openssl.cc
|
| +++ b/net/socket/ssl_client_socket_openssl.cc
|
| @@ -36,9 +36,11 @@ namespace {
|
|
|
| // Enable this to see logging for state machine state transitions.
|
| #if 0
|
| -#define GotoState(s) do { DVLOG(2) << (void *)this << " " << __FUNCTION__ << \
|
| - " jump to state " << s; \
|
| - next_handshake_state_ = s; } while (0)
|
| +#define GotoState(s) \
|
| + do { \
|
| + DVLOG(2) << (void*) this << " " << __FUNCTION__ << " jump to state " << s; \
|
| + next_handshake_state_ = s; \
|
| + } while (0)
|
| #else
|
| #define GotoState(s) next_handshake_state_ = s
|
| #endif
|
| @@ -53,19 +55,19 @@ const char kDefaultSupportedNPNProtocol[] = "http/1.1";
|
|
|
| #if OPENSSL_VERSION_NUMBER < 0x1000103fL
|
| // This method doesn't seem to have made it into the OpenSSL headers.
|
| -unsigned long SSL_CIPHER_get_id(const SSL_CIPHER* cipher) { return cipher->id; }
|
| +unsigned long SSL_CIPHER_get_id(const SSL_CIPHER* cipher) {
|
| + return cipher->id;
|
| +}
|
| #endif
|
|
|
| // Used for encoding the |connection_status| field of an SSLInfo object.
|
| -int EncodeSSLConnectionStatus(int cipher_suite,
|
| - int compression,
|
| - int version) {
|
| - return ((cipher_suite & SSL_CONNECTION_CIPHERSUITE_MASK) <<
|
| - SSL_CONNECTION_CIPHERSUITE_SHIFT) |
|
| - ((compression & SSL_CONNECTION_COMPRESSION_MASK) <<
|
| - SSL_CONNECTION_COMPRESSION_SHIFT) |
|
| - ((version & SSL_CONNECTION_VERSION_MASK) <<
|
| - SSL_CONNECTION_VERSION_SHIFT);
|
| +int EncodeSSLConnectionStatus(int cipher_suite, int compression, int version) {
|
| + return ((cipher_suite & SSL_CONNECTION_CIPHERSUITE_MASK)
|
| + << SSL_CONNECTION_CIPHERSUITE_SHIFT) |
|
| + ((compression & SSL_CONNECTION_COMPRESSION_MASK)
|
| + << SSL_CONNECTION_COMPRESSION_SHIFT) |
|
| + ((version & SSL_CONNECTION_VERSION_MASK)
|
| + << SSL_CONNECTION_VERSION_SHIFT);
|
| }
|
|
|
| // Returns the net SSL version number (see ssl_connection_status_flags.h) for
|
| @@ -204,8 +206,7 @@ int MapOpenSSLError(int err, const crypto::OpenSSLErrStackTracer& tracer) {
|
| return ERR_IO_PENDING;
|
| case SSL_ERROR_SYSCALL:
|
| LOG(ERROR) << "OpenSSL SYSCALL error, earliest error code in "
|
| - "error queue: " << ERR_peek_error() << ", errno: "
|
| - << errno;
|
| + "error queue: " << ERR_peek_error() << ", errno: " << errno;
|
| return ERR_SSL_PROTOCOL_ERROR;
|
| case SSL_ERROR_SSL:
|
| return MapOpenSSLErrorSSL();
|
| @@ -274,8 +275,8 @@ class SSLClientSocketOpenSSL::SSLContext {
|
| // TODO(kristianm): Only select this if ssl_config_.next_proto is not empty.
|
| // It would be better if the callback were not a global setting,
|
| // but that is an OpenSSL issue.
|
| - SSL_CTX_set_next_proto_select_cb(ssl_ctx_.get(), SelectNextProtoCallback,
|
| - NULL);
|
| + SSL_CTX_set_next_proto_select_cb(
|
| + ssl_ctx_.get(), SelectNextProtoCallback, NULL);
|
| }
|
|
|
| static std::string GetSessionCacheKey(const SSL* ssl) {
|
| @@ -298,7 +299,7 @@ class SSLClientSocketOpenSSL::SSLContext {
|
| socket->ChannelIDRequestCallback(ssl, pkey);
|
| }
|
|
|
| - static int CertVerifyCallback(X509_STORE_CTX *store_ctx, void *arg) {
|
| + static int CertVerifyCallback(X509_STORE_CTX* store_ctx, void* arg) {
|
| SSL* ssl = reinterpret_cast<SSL*>(X509_STORE_CTX_get_ex_data(
|
| store_ctx, SSL_get_ex_data_X509_STORE_CTX_idx()));
|
| SSLClientSocketOpenSSL* socket = GetInstance()->GetClientSocketFromSSL(ssl);
|
| @@ -308,9 +309,11 @@ class SSLClientSocketOpenSSL::SSLContext {
|
| }
|
|
|
| static int SelectNextProtoCallback(SSL* ssl,
|
| - unsigned char** out, unsigned char* outlen,
|
| + unsigned char** out,
|
| + unsigned char* outlen,
|
| const unsigned char* in,
|
| - unsigned int inlen, void* arg) {
|
| + unsigned int inlen,
|
| + void* arg) {
|
| SSLClientSocketOpenSSL* socket = GetInstance()->GetClientSocketFromSSL(ssl);
|
| return socket->SelectNextProtoCallback(out, outlen, in, inlen);
|
| }
|
| @@ -330,7 +333,7 @@ class SSLClientSocketOpenSSL::SSLContext {
|
| // and the other elements are in the order given by the server.
|
| class SSLClientSocketOpenSSL::PeerCertificateChain {
|
| public:
|
| - explicit PeerCertificateChain(STACK_OF(X509)* chain) { Reset(chain); }
|
| + explicit PeerCertificateChain(STACK_OF(X509) * chain) { Reset(chain); }
|
| PeerCertificateChain(const PeerCertificateChain& other) { *this = other; }
|
| ~PeerCertificateChain() {}
|
| PeerCertificateChain& operator=(const PeerCertificateChain& other);
|
| @@ -339,7 +342,7 @@ class SSLClientSocketOpenSSL::PeerCertificateChain {
|
| // which may be NULL, indicating to empty the store certificates.
|
| // Note: If an error occurs, such as being unable to parse the certificates,
|
| // this will behave as if Reset(NULL) was called.
|
| - void Reset(STACK_OF(X509)* chain);
|
| + void Reset(STACK_OF(X509) * chain);
|
|
|
| // Note that when USE_OPENSSL is defined, OSCertHandle is X509*
|
| const scoped_refptr<X509Certificate>& AsOSChain() const { return os_chain_; }
|
| @@ -358,7 +361,7 @@ class SSLClientSocketOpenSSL::PeerCertificateChain {
|
| bool IsValid() { return os_chain_.get() && openssl_chain_.get(); }
|
|
|
| private:
|
| - static void FreeX509Stack(STACK_OF(X509)* cert_chain) {
|
| + static void FreeX509Stack(STACK_OF(X509) * cert_chain) {
|
| sk_X509_pop_free(cert_chain, X509_free);
|
| }
|
|
|
| @@ -370,8 +373,8 @@ class SSLClientSocketOpenSSL::PeerCertificateChain {
|
| };
|
|
|
| SSLClientSocketOpenSSL::PeerCertificateChain&
|
| -SSLClientSocketOpenSSL::PeerCertificateChain::operator=(
|
| - const PeerCertificateChain& other) {
|
| +SSLClientSocketOpenSSL::PeerCertificateChain::
|
| +operator=(const PeerCertificateChain& other) {
|
| if (this == &other)
|
| return *this;
|
|
|
| @@ -390,8 +393,8 @@ SSLClientSocketOpenSSL::PeerCertificateChain::operator=(
|
| #if defined(USE_OPENSSL_CERTS)
|
| // When OSCertHandle is typedef'ed to X509, this implementation does a short cut
|
| // to avoid converting back and forth between der and X509 struct.
|
| -void SSLClientSocketOpenSSL::PeerCertificateChain::Reset(
|
| - STACK_OF(X509)* chain) {
|
| +void SSLClientSocketOpenSSL::PeerCertificateChain::Reset(STACK_OF(X509) *
|
| + chain) {
|
| openssl_chain_.reset(NULL);
|
| os_chain_ = NULL;
|
|
|
| @@ -415,9 +418,9 @@ void SSLClientSocketOpenSSL::PeerCertificateChain::Reset(
|
| CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509);
|
| }
|
| }
|
| -#else // !defined(USE_OPENSSL_CERTS)
|
| -void SSLClientSocketOpenSSL::PeerCertificateChain::Reset(
|
| - STACK_OF(X509)* chain) {
|
| +#else // !defined(USE_OPENSSL_CERTS)
|
| +void SSLClientSocketOpenSSL::PeerCertificateChain::Reset(STACK_OF(X509) *
|
| + chain) {
|
| openssl_chain_.reset(NULL);
|
| os_chain_ = NULL;
|
|
|
| @@ -502,7 +505,8 @@ SSLClientSocketOpenSSL::SSLClientSocketOpenSSL(
|
| npn_status_(kNextProtoUnsupported),
|
| channel_id_request_return_value_(ERR_UNEXPECTED),
|
| channel_id_xtn_negotiated_(false),
|
| - net_log_(transport_->socket()->NetLog()) {}
|
| + net_log_(transport_->socket()->NetLog()) {
|
| +}
|
|
|
| SSLClientSocketOpenSSL::~SSLClientSocketOpenSSL() {
|
| Disconnect();
|
| @@ -515,25 +519,31 @@ void SSLClientSocketOpenSSL::GetSSLCertRequestInfo(
|
| }
|
|
|
| SSLClientSocket::NextProtoStatus SSLClientSocketOpenSSL::GetNextProto(
|
| - std::string* proto, std::string* server_protos) {
|
| + std::string* proto,
|
| + std::string* server_protos) {
|
| *proto = npn_proto_;
|
| *server_protos = server_protos_;
|
| return npn_status_;
|
| }
|
|
|
| -ServerBoundCertService*
|
| -SSLClientSocketOpenSSL::GetServerBoundCertService() const {
|
| +ServerBoundCertService* SSLClientSocketOpenSSL::GetServerBoundCertService()
|
| + const {
|
| return server_bound_cert_service_;
|
| }
|
|
|
| int SSLClientSocketOpenSSL::ExportKeyingMaterial(
|
| const base::StringPiece& label,
|
| - bool has_context, const base::StringPiece& context,
|
| - unsigned char* out, unsigned int outlen) {
|
| + bool has_context,
|
| + const base::StringPiece& context,
|
| + unsigned char* out,
|
| + unsigned int outlen) {
|
| crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE);
|
|
|
| int rv = SSL_export_keying_material(
|
| - ssl_, out, outlen, const_cast<char*>(label.data()),
|
| + ssl_,
|
| + out,
|
| + outlen,
|
| + const_cast<char*>(label.data()),
|
| label.size(),
|
| reinterpret_cast<unsigned char*>(const_cast<char*>(context.data())),
|
| context.length(),
|
| @@ -542,8 +552,7 @@ int SSLClientSocketOpenSSL::ExportKeyingMaterial(
|
| if (rv != 1) {
|
| int ssl_error = SSL_get_error(ssl_, rv);
|
| LOG(ERROR) << "Failed to export keying material;"
|
| - << " returned " << rv
|
| - << ", SSL error code " << ssl_error;
|
| + << " returned " << rv << ", SSL error code " << ssl_error;
|
| return MapOpenSSLError(ssl_error, err_tracer);
|
| }
|
| return OK;
|
| @@ -604,10 +613,10 @@ void SSLClientSocketOpenSSL::Disconnect() {
|
| user_connect_callback_.Reset();
|
| user_read_callback_.Reset();
|
| user_write_callback_.Reset();
|
| - user_read_buf_ = NULL;
|
| - user_read_buf_len_ = 0;
|
| - user_write_buf_ = NULL;
|
| - user_write_buf_len_ = 0;
|
| + user_read_buf_ = NULL;
|
| + user_read_buf_len_ = 0;
|
| + user_write_buf_ = NULL;
|
| + user_write_buf_len_ = 0;
|
|
|
| pending_read_error_ = kNoPendingReadResult;
|
| transport_write_error_ = OK;
|
| @@ -696,8 +705,7 @@ bool SSLClientSocketOpenSSL::GetSSLInfo(SSLInfo* ssl_info) {
|
| ssl_info->cert_status = server_cert_verify_result_.cert_status;
|
| ssl_info->is_issued_by_known_root =
|
| server_cert_verify_result_.is_issued_by_known_root;
|
| - ssl_info->public_key_hashes =
|
| - server_cert_verify_result_.public_key_hashes;
|
| + ssl_info->public_key_hashes = server_cert_verify_result_.public_key_hashes;
|
| ssl_info->client_cert_sent =
|
| ssl_config_.send_client_cert && ssl_config_.client_cert.get();
|
| ssl_info->channel_id_sent = WasChannelIDSent();
|
| @@ -712,27 +720,29 @@ bool SSLClientSocketOpenSSL::GetSSLInfo(SSLInfo* ssl_info) {
|
| ssl_info->security_bits = SSL_CIPHER_get_bits(cipher, NULL);
|
| const COMP_METHOD* compression = SSL_get_current_compression(ssl_);
|
|
|
| - ssl_info->connection_status = EncodeSSLConnectionStatus(
|
| - SSL_CIPHER_get_id(cipher),
|
| - compression ? compression->type : 0,
|
| - GetNetSSLVersion(ssl_));
|
| + ssl_info->connection_status =
|
| + EncodeSSLConnectionStatus(SSL_CIPHER_get_id(cipher),
|
| + compression ? compression->type : 0,
|
| + GetNetSSLVersion(ssl_));
|
|
|
| bool peer_supports_renego_ext = !!SSL_get_secure_renegotiation_support(ssl_);
|
| if (!peer_supports_renego_ext)
|
| ssl_info->connection_status |= SSL_CONNECTION_NO_RENEGOTIATION_EXTENSION;
|
| UMA_HISTOGRAM_ENUMERATION("Net.RenegotiationExtensionSupported",
|
| - implicit_cast<int>(peer_supports_renego_ext), 2);
|
| + implicit_cast<int>(peer_supports_renego_ext),
|
| + 2);
|
|
|
| if (ssl_config_.version_fallback)
|
| ssl_info->connection_status |= SSL_CONNECTION_VERSION_FALLBACK;
|
|
|
| - ssl_info->handshake_type = SSL_session_reused(ssl_) ?
|
| - SSLInfo::HANDSHAKE_RESUME : SSLInfo::HANDSHAKE_FULL;
|
| + ssl_info->handshake_type = SSL_session_reused(ssl_)
|
| + ? SSLInfo::HANDSHAKE_RESUME
|
| + : SSLInfo::HANDSHAKE_FULL;
|
|
|
| DVLOG(3) << "Encoded connection status: cipher suite = "
|
| - << SSLConnectionStatusToCipherSuite(ssl_info->connection_status)
|
| - << " version = "
|
| - << SSLConnectionStatusToVersion(ssl_info->connection_status);
|
| + << SSLConnectionStatusToCipherSuite(ssl_info->connection_status)
|
| + << " version = "
|
| + << SSLConnectionStatusToVersion(ssl_info->connection_status);
|
| return true;
|
| }
|
|
|
| @@ -856,8 +866,9 @@ bool SSLClientSocketOpenSSL::Init() {
|
| // disabled by default. Note that !SHA256 and !SHA384 only remove HMAC-SHA256
|
| // and HMAC-SHA384 cipher suites, not GCM cipher suites with SHA256 or SHA384
|
| // as the handshake hash.
|
| - std::string command("DEFAULT:!NULL:!aNULL:!IDEA:!FZA:!SRP:!SHA256:!SHA384:"
|
| - "!aECDH:!AESGCM+AES256");
|
| + std::string command(
|
| + "DEFAULT:!NULL:!aNULL:!IDEA:!FZA:!SRP:!SHA256:!SHA384:"
|
| + "!aECDH:!AESGCM+AES256");
|
| // Walk through all the installed ciphers, seeing if any need to be
|
| // appended to the cipher removal |command|.
|
| for (int i = 0; i < sk_SSL_CIPHER_num(ciphers); ++i) {
|
| @@ -870,23 +881,24 @@ bool SSLClientSocketOpenSSL::Init() {
|
| bool disable = SSL_CIPHER_get_bits(cipher, NULL) < 80;
|
| if (!disable) {
|
| disable = std::find(ssl_config_.disabled_cipher_suites.begin(),
|
| - ssl_config_.disabled_cipher_suites.end(), id) !=
|
| - ssl_config_.disabled_cipher_suites.end();
|
| + ssl_config_.disabled_cipher_suites.end(),
|
| + id) != ssl_config_.disabled_cipher_suites.end();
|
| }
|
| if (disable) {
|
| - const char* name = SSL_CIPHER_get_name(cipher);
|
| - DVLOG(3) << "Found cipher to remove: '" << name << "', ID: " << id
|
| - << " strength: " << SSL_CIPHER_get_bits(cipher, NULL);
|
| - command.append(":!");
|
| - command.append(name);
|
| - }
|
| + const char* name = SSL_CIPHER_get_name(cipher);
|
| + DVLOG(3) << "Found cipher to remove: '" << name << "', ID: " << id
|
| + << " strength: " << SSL_CIPHER_get_bits(cipher, NULL);
|
| + command.append(":!");
|
| + command.append(name);
|
| + }
|
| }
|
| int rv = SSL_set_cipher_list(ssl_, command.c_str());
|
| // If this fails (rv = 0) it means there are no ciphers enabled on this SSL.
|
| // This will almost certainly result in the socket failing to complete the
|
| // handshake at which point the appropriate error is bubbled up to the client.
|
| LOG_IF(WARNING, rv != 1) << "SSL_set_cipher_list('" << command << "') "
|
| - "returned " << rv;
|
| + "returned "
|
| + << rv;
|
|
|
| // TLS channel ids.
|
| if (IsChannelIDEnabled(ssl_config_, server_bound_cert_service_)) {
|
| @@ -959,10 +971,9 @@ int SSLClientSocketOpenSSL::DoHandshake() {
|
| // SSL handshake is completed. Let's verify the certificate.
|
| const bool got_cert = !!UpdateServerCert();
|
| DCHECK(got_cert);
|
| - net_log_.AddEvent(
|
| - NetLog::TYPE_SSL_CERTIFICATES_RECEIVED,
|
| - base::Bind(&NetLogX509CertificateCallback,
|
| - base::Unretained(server_cert_.get())));
|
| + net_log_.AddEvent(NetLog::TYPE_SSL_CERTIFICATES_RECEIVED,
|
| + base::Bind(&NetLogX509CertificateCallback,
|
| + base::Unretained(server_cert_.get())));
|
| GotoState(STATE_VERIFY_CERT);
|
| } else {
|
| int ssl_error = SSL_get_error(ssl_, rv);
|
| @@ -979,12 +990,10 @@ int SSLClientSocketOpenSSL::DoHandshake() {
|
| if (net_error == ERR_IO_PENDING) {
|
| GotoState(STATE_HANDSHAKE);
|
| } else {
|
| - LOG(ERROR) << "handshake failed; returned " << rv
|
| - << ", SSL error code " << ssl_error
|
| - << ", net_error " << net_error;
|
| - net_log_.AddEvent(
|
| - NetLog::TYPE_SSL_HANDSHAKE_ERROR,
|
| - CreateNetLogSSLErrorCallback(net_error, ssl_error));
|
| + LOG(ERROR) << "handshake failed; returned " << rv << ", SSL error code "
|
| + << ssl_error << ", net_error " << net_error;
|
| + net_log_.AddEvent(NetLog::TYPE_SSL_HANDSHAKE_ERROR,
|
| + CreateNetLogSSLErrorCallback(net_error, ssl_error));
|
| }
|
| }
|
| return net_error;
|
| @@ -1032,8 +1041,8 @@ int SSLClientSocketOpenSSL::DoVerifyCertComplete(int result) {
|
| // when the server sends them to us, and do so here.
|
| SSLContext::GetInstance()->session_cache()->MarkSSLSessionAsGood(ssl_);
|
| } else {
|
| - DVLOG(1) << "DoVerifyCertComplete error " << ErrorToString(result)
|
| - << " (" << result << ")";
|
| + DVLOG(1) << "DoVerifyCertComplete error " << ErrorToString(result) << " ("
|
| + << result << ")";
|
| }
|
|
|
| completed_handshake_ = true;
|
| @@ -1137,7 +1146,7 @@ int SSLClientSocketOpenSSL::DoHandshakeLoop(int last_io_result) {
|
| case STATE_VERIFY_CERT:
|
| DCHECK(rv == OK);
|
| rv = DoVerifyCert(rv);
|
| - break;
|
| + break;
|
| case STATE_VERIFY_CERT_COMPLETE:
|
| rv = DoVerifyCertComplete(rv);
|
| break;
|
| @@ -1195,15 +1204,16 @@ int SSLClientSocketOpenSSL::DoPayloadRead() {
|
| rv = pending_read_error_;
|
| pending_read_error_ = kNoPendingReadResult;
|
| if (rv == 0) {
|
| - net_log_.AddByteTransferEvent(NetLog::TYPE_SSL_SOCKET_BYTES_RECEIVED,
|
| - rv, user_read_buf_->data());
|
| + net_log_.AddByteTransferEvent(
|
| + NetLog::TYPE_SSL_SOCKET_BYTES_RECEIVED, rv, user_read_buf_->data());
|
| }
|
| return rv;
|
| }
|
|
|
| int total_bytes_read = 0;
|
| do {
|
| - rv = SSL_read(ssl_, user_read_buf_->data() + total_bytes_read,
|
| + rv = SSL_read(ssl_,
|
| + user_read_buf_->data() + total_bytes_read,
|
| user_read_buf_len_ - total_bytes_read);
|
| if (rv > 0)
|
| total_bytes_read += rv;
|
| @@ -1222,7 +1232,7 @@ int SSLClientSocketOpenSSL::DoPayloadRead() {
|
| // this function. If at least some data was read, |*next_result| will point
|
| // to |pending_read_error_|, to be returned in a future call to
|
| // DoPayloadRead() (e.g.: after the current data is handled).
|
| - int *next_result = &rv;
|
| + int* next_result = &rv;
|
| if (total_bytes_read > 0) {
|
| pending_read_error_ = rv;
|
| rv = total_bytes_read;
|
| @@ -1235,21 +1245,21 @@ int SSLClientSocketOpenSSL::DoPayloadRead() {
|
| int err = SSL_get_error(ssl_, *next_result);
|
| *next_result = MapOpenSSLError(err, err_tracer);
|
| if (rv > 0 && *next_result == ERR_IO_PENDING) {
|
| - // If at least some data was read from SSL_read(), do not treat
|
| - // insufficient data as an error to return in the next call to
|
| - // DoPayloadRead() - instead, let the call fall through to check
|
| - // SSL_read() again. This is because DoTransportIO() may complete
|
| - // in between the next call to DoPayloadRead(), and thus it is
|
| - // important to check SSL_read() on subsequent invocations to see
|
| - // if a complete record may now be read.
|
| + // If at least some data was read from SSL_read(), do not treat
|
| + // insufficient data as an error to return in the next call to
|
| + // DoPayloadRead() - instead, let the call fall through to check
|
| + // SSL_read() again. This is because DoTransportIO() may complete
|
| + // in between the next call to DoPayloadRead(), and thus it is
|
| + // important to check SSL_read() on subsequent invocations to see
|
| + // if a complete record may now be read.
|
| *next_result = kNoPendingReadResult;
|
| }
|
| }
|
| }
|
|
|
| if (rv >= 0) {
|
| - net_log_.AddByteTransferEvent(NetLog::TYPE_SSL_SOCKET_BYTES_RECEIVED, rv,
|
| - user_read_buf_->data());
|
| + net_log_.AddByteTransferEvent(
|
| + NetLog::TYPE_SSL_SOCKET_BYTES_RECEIVED, rv, user_read_buf_->data());
|
| }
|
| return rv;
|
| }
|
| @@ -1259,8 +1269,8 @@ int SSLClientSocketOpenSSL::DoPayloadWrite() {
|
| int rv = SSL_write(ssl_, user_write_buf_->data(), user_write_buf_len_);
|
|
|
| if (rv >= 0) {
|
| - net_log_.AddByteTransferEvent(NetLog::TYPE_SSL_SOCKET_BYTES_SENT, rv,
|
| - user_write_buf_->data());
|
| + net_log_.AddByteTransferEvent(
|
| + NetLog::TYPE_SSL_SOCKET_BYTES_SENT, rv, user_write_buf_->data());
|
| return rv;
|
| }
|
|
|
| @@ -1415,14 +1425,13 @@ int SSLClientSocketOpenSSL::ClientCertRequestCallback(SSL* ssl,
|
| // First pass: we know that a client certificate is needed, but we do not
|
| // have one at hand.
|
| client_auth_cert_needed_ = true;
|
| - STACK_OF(X509_NAME) *authorities = SSL_get_client_CA_list(ssl);
|
| + STACK_OF(X509_NAME)* authorities = SSL_get_client_CA_list(ssl);
|
| for (int i = 0; i < sk_X509_NAME_num(authorities); i++) {
|
| - X509_NAME *ca_name = (X509_NAME *)sk_X509_NAME_value(authorities, i);
|
| + X509_NAME* ca_name = (X509_NAME*)sk_X509_NAME_value(authorities, i);
|
| unsigned char* str = NULL;
|
| int length = i2d_X509_NAME(ca_name, &str);
|
| cert_authorities_.push_back(std::string(
|
| - reinterpret_cast<const char*>(str),
|
| - static_cast<size_t>(length)));
|
| + reinterpret_cast<const char*>(str), static_cast<size_t>(length)));
|
| OPENSSL_free(str);
|
| }
|
|
|
| @@ -1447,7 +1456,7 @@ int SSLClientSocketOpenSSL::ClientCertRequestCallback(SSL* ssl,
|
| }
|
| LOG(WARNING) << "Client cert found without private key";
|
| }
|
| -#else // !defined(USE_OPENSSL_CERTS)
|
| +#else // !defined(USE_OPENSSL_CERTS)
|
| // OS handling of client certificates is not yet implemented.
|
| NOTIMPLEMENTED();
|
| #endif // defined(USE_OPENSSL_CERTS)
|
| @@ -1536,12 +1545,12 @@ int SSLClientSocketOpenSSL::SelectNextProtoCallback(unsigned char** out,
|
| npn_status_ = kNextProtoNoOverlap;
|
|
|
| // For each protocol in server preference order, see if we support it.
|
| - for (unsigned int i = 0; i < inlen; i += in[i] + 1) {
|
| - for (std::vector<std::string>::const_iterator
|
| - j = ssl_config_.next_protos.begin();
|
| - j != ssl_config_.next_protos.end(); ++j) {
|
| - if (in[i] == j->size() &&
|
| - memcmp(&in[i + 1], j->data(), in[i]) == 0) {
|
| + for (unsigned int i = 0; i < inlen; i += in [i] + 1) {
|
| + for (std::vector<std::string>::const_iterator j =
|
| + ssl_config_.next_protos.begin();
|
| + j != ssl_config_.next_protos.end();
|
| + ++j) {
|
| + if (in[i] == j->size() && memcmp(&in[i + 1], j->data(), in[i]) == 0) {
|
| // We found a match.
|
| *out = const_cast<unsigned char*>(in) + i + 1;
|
| *outlen = in[i];
|
| @@ -1555,8 +1564,8 @@ int SSLClientSocketOpenSSL::SelectNextProtoCallback(unsigned char** out,
|
|
|
| // If we didn't find a protocol, we select the first one from our list.
|
| if (npn_status_ == kNextProtoNoOverlap) {
|
| - *out = reinterpret_cast<uint8*>(const_cast<char*>(
|
| - ssl_config_.next_protos[0].data()));
|
| + *out = reinterpret_cast<uint8*>(
|
| + const_cast<char*>(ssl_config_.next_protos[0].data()));
|
| *outlen = ssl_config_.next_protos[0].size();
|
| }
|
|
|
|
|