Chromium Code Reviews| Index: content/browser/loader/resource_loader.cc |
| diff --git a/content/browser/loader/resource_loader.cc b/content/browser/loader/resource_loader.cc |
| index 4993c8217e4bb297b6813fbf99574ebc3e823023..5647b7e8ced6d84f40005f54ed31de71c33b292b 100644 |
| --- a/content/browser/loader/resource_loader.cc |
| +++ b/content/browser/loader/resource_loader.cc |
| @@ -19,6 +19,7 @@ |
| #include "content/public/browser/cert_store.h" |
| #include "content/public/browser/resource_context.h" |
| #include "content/public/browser/resource_dispatcher_host_login_delegate.h" |
| +#include "content/public/browser/signed_certificate_timestamp_store.h" |
| #include "content/public/common/content_client.h" |
| #include "content/public/common/content_switches.h" |
| #include "content/public/common/process_type.h" |
| @@ -473,6 +474,21 @@ void ResourceLoader::CancelRequestInternal(int error, bool from_renderer) { |
| } |
| } |
| +void ResourceLoader::StoreSignedCertificateTimestamps( |
| + const net::SignedCertificateTimestampAndStatusList& sct_list, |
| + int process_id, content::SignedCertificateTimestampIDStatusList* |
|
jam
2013/11/27 01:07:50
ditto
alcutter
2013/11/27 12:17:56
Done.
|
| + signed_certificate_timestamp_ids) { |
| + SignedCertificateTimestampStore* sct_store( |
| + SignedCertificateTimestampStore::GetInstance()); |
| + |
| + for (net::SignedCertificateTimestampAndStatusList::const_iterator iter = |
| + sct_list.begin(); iter != sct_list.end(); ++iter) { |
| + const int sct_id(sct_store->Store(iter->sct_, process_id)); |
| + signed_certificate_timestamp_ids->push_back( |
| + content::SignedCertificateTimestampIDAndStatus(sct_id, iter->status_)); |
| + } |
| +} |
| + |
| void ResourceLoader::CompleteResponseStarted() { |
| ResourceRequestInfoImpl* info = GetRequestInfo(); |
| @@ -482,11 +498,20 @@ void ResourceLoader::CompleteResponseStarted() { |
| if (request_->ssl_info().cert.get()) { |
| int cert_id = CertStore::GetInstance()->StoreCert( |
| request_->ssl_info().cert.get(), info->GetChildID()); |
| + |
| + content::SignedCertificateTimestampIDStatusList |
|
jam
2013/11/27 01:07:50
no content::
alcutter
2013/11/27 12:17:56
D'oh, sorry.
Removed.
|
| + signed_certificate_timestamp_ids; |
| + StoreSignedCertificateTimestamps( |
| + request_->ssl_info().signed_certificate_timestamps, |
| + info->GetChildID(), |
| + &signed_certificate_timestamp_ids); |
| + |
| response->head.security_info = SerializeSecurityInfo( |
| cert_id, |
| request_->ssl_info().cert_status, |
| request_->ssl_info().security_bits, |
| - request_->ssl_info().connection_status); |
| + request_->ssl_info().connection_status, |
| + signed_certificate_timestamp_ids); |
| } else { |
| // We should not have any SSL state. |
| DCHECK(!request_->ssl_info().cert_status && |
| @@ -590,9 +615,15 @@ void ResourceLoader::ResponseCompleted() { |
| if (ssl_info.cert.get() != NULL) { |
| int cert_id = CertStore::GetInstance()->StoreCert(ssl_info.cert.get(), |
| info->GetChildID()); |
| + content::SignedCertificateTimestampIDStatusList |
|
jam
2013/11/27 01:07:50
ditto
alcutter
2013/11/27 12:17:56
Done.
|
| + signed_certificate_timestamp_ids; |
| + StoreSignedCertificateTimestamps(ssl_info.signed_certificate_timestamps, |
| + info->GetChildID(), |
| + &signed_certificate_timestamp_ids); |
| + |
| security_info = SerializeSecurityInfo( |
| cert_id, ssl_info.cert_status, ssl_info.security_bits, |
| - ssl_info.connection_status); |
| + ssl_info.connection_status, signed_certificate_timestamp_ids); |
| } |
| bool defer = false; |