OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "net/spdy/spdy_session.h" | 5 #include "net/spdy/spdy_session.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 SSLClientSocket::NextProto protocol = default_protocol_; | 385 SSLClientSocket::NextProto protocol = default_protocol_; |
386 if (is_secure_) { | 386 if (is_secure_) { |
387 SSLClientSocket* ssl_socket = GetSSLClientSocket(); | 387 SSLClientSocket* ssl_socket = GetSSLClientSocket(); |
388 | 388 |
389 SSLClientSocket::NextProto protocol_negotiated = | 389 SSLClientSocket::NextProto protocol_negotiated = |
390 ssl_socket->protocol_negotiated(); | 390 ssl_socket->protocol_negotiated(); |
391 if (protocol_negotiated != SSLClientSocket::kProtoUnknown) { | 391 if (protocol_negotiated != SSLClientSocket::kProtoUnknown) { |
392 protocol = protocol_negotiated; | 392 protocol = protocol_negotiated; |
393 } | 393 } |
394 | 394 |
395 if (ssl_socket->WasOriginBoundCertSent()) { | 395 if (ssl_socket->WasDomainBoundCertSent()) { |
396 // According to the SPDY spec, the credential associated with the TLS | 396 // According to the SPDY spec, the credential associated with the TLS |
397 // connection is stored in slot[0]. | 397 // connection is stored in slot[0]. |
398 credential_state_.SetHasCredential(host_port_pair()); | 398 credential_state_.SetHasCredential(host_port_pair()); |
399 } | 399 } |
400 } | 400 } |
401 | 401 |
402 DCHECK(protocol >= SSLClientSocket::kProtoSPDY2); | 402 DCHECK(protocol >= SSLClientSocket::kProtoSPDY2); |
403 DCHECK(protocol <= SSLClientSocket::kProtoSPDY3); | 403 DCHECK(protocol <= SSLClientSocket::kProtoSPDY3); |
404 int version = (protocol == SSLClientSocket::kProtoSPDY3) ? 3 : 2; | 404 int version = (protocol == SSLClientSocket::kProtoSPDY3) ? 3 : 2; |
405 flow_control_ = (protocol >= SSLClientSocket::kProtoSPDY21); | 405 flow_control_ = (protocol >= SSLClientSocket::kProtoSPDY21); |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 DCHECK_EQ(active_streams_[stream_id].get(), stream.get()); | 577 DCHECK_EQ(active_streams_[stream_id].get(), stream.get()); |
578 return OK; | 578 return OK; |
579 } | 579 } |
580 | 580 |
581 bool SpdySession::NeedsCredentials(const HostPortPair& origin) const { | 581 bool SpdySession::NeedsCredentials(const HostPortPair& origin) const { |
582 if (!is_secure_) | 582 if (!is_secure_) |
583 return false; | 583 return false; |
584 SSLClientSocket* ssl_socket = GetSSLClientSocket(); | 584 SSLClientSocket* ssl_socket = GetSSLClientSocket(); |
585 if (ssl_socket->protocol_negotiated() < SSLClientSocket::kProtoSPDY3) | 585 if (ssl_socket->protocol_negotiated() < SSLClientSocket::kProtoSPDY3) |
586 return false; | 586 return false; |
587 if (!ssl_socket->WasOriginBoundCertSent()) | 587 if (!ssl_socket->WasDomainBoundCertSent()) |
588 return false; | 588 return false; |
589 return !credential_state_.HasCredential(origin); | 589 return !credential_state_.HasCredential(origin); |
590 } | 590 } |
591 | 591 |
592 void SpdySession::AddPooledAlias(const HostPortProxyPair& alias) { | 592 void SpdySession::AddPooledAlias(const HostPortProxyPair& alias) { |
593 pooled_aliases_.insert(alias); | 593 pooled_aliases_.insert(alias); |
594 } | 594 } |
595 | 595 |
596 int SpdySession::WriteSynStream( | 596 int SpdySession::WriteSynStream( |
597 spdy::SpdyStreamId stream_id, | 597 spdy::SpdyStreamId stream_id, |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
654 | 654 |
655 std::vector<uint8> proof; | 655 std::vector<uint8> proof; |
656 switch (type) { | 656 switch (type) { |
657 case CLIENT_CERT_ECDSA_SIGN: { | 657 case CLIENT_CERT_ECDSA_SIGN: { |
658 base::StringPiece spki_piece; | 658 base::StringPiece spki_piece; |
659 asn1::ExtractSPKIFromDERCert(cert, &spki_piece); | 659 asn1::ExtractSPKIFromDERCert(cert, &spki_piece); |
660 std::vector<uint8> spki(spki_piece.data(), | 660 std::vector<uint8> spki(spki_piece.data(), |
661 spki_piece.data() + spki_piece.size()); | 661 spki_piece.data() + spki_piece.size()); |
662 scoped_ptr<crypto::ECPrivateKey> private_key( | 662 scoped_ptr<crypto::ECPrivateKey> private_key( |
663 crypto::ECPrivateKey::CreateFromEncryptedPrivateKeyInfo( | 663 crypto::ECPrivateKey::CreateFromEncryptedPrivateKeyInfo( |
664 OriginBoundCertService::kEPKIPassword, key_data, spki)); | 664 ServerBoundCertService::kEPKIPassword, key_data, spki)); |
665 scoped_ptr<crypto::ECSignatureCreator> creator( | 665 scoped_ptr<crypto::ECSignatureCreator> creator( |
666 crypto::ECSignatureCreator::Create(private_key.get())); | 666 crypto::ECSignatureCreator::Create(private_key.get())); |
667 creator->Sign(secret, arraysize(secret), &proof); | 667 creator->Sign(secret, arraysize(secret), &proof); |
668 break; | 668 break; |
669 } | 669 } |
670 default: | 670 default: |
671 NOTREACHED(); | 671 NOTREACHED(); |
672 } | 672 } |
673 | 673 |
674 spdy::SpdyCredential credential; | 674 spdy::SpdyCredential credential; |
(...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1245 } | 1245 } |
1246 | 1246 |
1247 bool SpdySession::GetSSLCertRequestInfo( | 1247 bool SpdySession::GetSSLCertRequestInfo( |
1248 SSLCertRequestInfo* cert_request_info) { | 1248 SSLCertRequestInfo* cert_request_info) { |
1249 if (!is_secure_) | 1249 if (!is_secure_) |
1250 return false; | 1250 return false; |
1251 GetSSLClientSocket()->GetSSLCertRequestInfo(cert_request_info); | 1251 GetSSLClientSocket()->GetSSLCertRequestInfo(cert_request_info); |
1252 return true; | 1252 return true; |
1253 } | 1253 } |
1254 | 1254 |
1255 OriginBoundCertService* SpdySession::GetOriginBoundCertService() const { | 1255 ServerBoundCertService* SpdySession::GetServerBoundCertService() const { |
1256 if (!is_secure_) | 1256 if (!is_secure_) |
1257 return NULL; | 1257 return NULL; |
1258 return GetSSLClientSocket()->GetOriginBoundCertService(); | 1258 return GetSSLClientSocket()->GetServerBoundCertService(); |
1259 } | 1259 } |
1260 | 1260 |
1261 SSLClientCertType SpdySession::GetOriginBoundCertType() const { | 1261 SSLClientCertType SpdySession::GetDomainBoundCertType() const { |
1262 if (!is_secure_) | 1262 if (!is_secure_) |
1263 return CLIENT_CERT_INVALID_TYPE; | 1263 return CLIENT_CERT_INVALID_TYPE; |
1264 return GetSSLClientSocket()->origin_bound_cert_type(); | 1264 return GetSSLClientSocket()->domain_bound_cert_type(); |
1265 } | 1265 } |
1266 | 1266 |
1267 void SpdySession::OnError(int error_code) { | 1267 void SpdySession::OnError(int error_code) { |
1268 std::string description = base::StringPrintf( | 1268 std::string description = base::StringPrintf( |
1269 "SPDY_ERROR error_code: %d.", error_code); | 1269 "SPDY_ERROR error_code: %d.", error_code); |
1270 CloseSessionOnError(net::ERR_SPDY_PROTOCOL_ERROR, true, description); | 1270 CloseSessionOnError(net::ERR_SPDY_PROTOCOL_ERROR, true, description); |
1271 } | 1271 } |
1272 | 1272 |
1273 void SpdySession::OnStreamError(spdy::SpdyStreamId stream_id, | 1273 void SpdySession::OnStreamError(spdy::SpdyStreamId stream_id, |
1274 const std::string& description) { | 1274 const std::string& description) { |
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1934 SSLClientSocket* SpdySession::GetSSLClientSocket() const { | 1934 SSLClientSocket* SpdySession::GetSSLClientSocket() const { |
1935 if (!is_secure_) | 1935 if (!is_secure_) |
1936 return NULL; | 1936 return NULL; |
1937 SSLClientSocket* ssl_socket = | 1937 SSLClientSocket* ssl_socket = |
1938 reinterpret_cast<SSLClientSocket*>(connection_->socket()); | 1938 reinterpret_cast<SSLClientSocket*>(connection_->socket()); |
1939 DCHECK(ssl_socket); | 1939 DCHECK(ssl_socket); |
1940 return ssl_socket; | 1940 return ssl_socket; |
1941 } | 1941 } |
1942 | 1942 |
1943 } // namespace net | 1943 } // namespace net |
OLD | NEW |