Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(325)

Unified Diff: content/browser/renderer_host/x509_user_cert_resource_handler.cc

Issue 10377025: Parse an application/x-x509-user-cert response with (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | net/base/cert_database_nss.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/x509_user_cert_resource_handler.cc
===================================================================
--- content/browser/renderer_host/x509_user_cert_resource_handler.cc (revision 134554)
+++ content/browser/renderer_host/x509_user_cert_resource_handler.cc (working copy)
@@ -101,9 +101,26 @@
AssembleResource();
scoped_refptr<net::X509Certificate> cert;
if (resource_buffer_) {
- cert = net::X509Certificate::CreateFromBytes(resource_buffer_->data(),
- content_length_);
+ FILE* file = fopen("keygen-response", "w");
+ fwrite(resource_buffer_->data(), 1, content_length_, file);
+ fclose(file);
+ net::CertificateList cert_list =
+ net::X509Certificate::CreateCertificateListFromBytes(
+ resource_buffer_->data(), content_length_,
+ net::X509Certificate::FORMAT_AUTO);
+ if (cert_list.size()) {
+ fprintf(stderr, "cert_list.size()=%d\n", (int)cert_list.size());
+ net::X509Certificate::OSCertHandle cert_handle =
+ cert_list[0]->os_cert_handle();
+ net::X509Certificate::OSCertHandles intermediate_certs;
+ for (size_t i = 1; i < cert_list.size(); ++i)
+ intermediate_certs.push_back(cert_list[i]->os_cert_handle());
+ cert = net::X509Certificate::CreateFromHandle(cert_handle,
+ intermediate_certs);
+ }
}
+ // TODO(wtc): change ContentBrowserClient::AddNewCertificate() to take
+ // a net::CertificateList instead of a net::X509Certificate?
content::GetContentClient()->browser()->AddNewCertificate(
request_, cert, render_process_host_id_, render_view_id_);
return true;
« no previous file with comments | « no previous file | net/base/cert_database_nss.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698