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

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

Issue 11031043: Fix handling of user and CA certificates on Android. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 2 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
Index: content/browser/renderer_host/x509_user_cert_resource_handler.cc
diff --git a/content/browser/renderer_host/x509_user_cert_resource_handler.cc b/content/browser/renderer_host/x509_user_cert_resource_handler.cc
index aa3fe34e533f1c28c18d93e0a598201272df1560..877656ca7ef19278618bc42462fda16a533fb453 100644
--- a/content/browser/renderer_host/x509_user_cert_resource_handler.cc
+++ b/content/browser/renderer_host/x509_user_cert_resource_handler.cc
@@ -27,7 +27,8 @@ X509UserCertResourceHandler::X509UserCertResourceHandler(
read_buffer_(NULL),
resource_buffer_(NULL),
render_process_host_id_(render_process_host_id),
- render_view_id_(render_view_id) {
+ render_view_id_(render_view_id),
+ is_pkcs12_(false) {
}
X509UserCertResourceHandler::~X509UserCertResourceHandler() {
@@ -50,7 +51,14 @@ bool X509UserCertResourceHandler::OnRequestRedirected(int request_id,
bool X509UserCertResourceHandler::OnResponseStarted(int request_id,
ResourceResponse* resp,
bool* defer) {
+#if defined(OS_ANDROID)
+ is_pkcs12_ = (resp->head.mime_type == "application/x-pkcs12");
+ return (is_pkcs12_ ||
+ resp->head.mime_type == "application/x-x509-user-cert" ||
+ resp->head.mime_type == "application/x-x509-ca-cert");
+#else
return (resp->head.mime_type == "application/x-x509-user-cert");
+#endif
}
bool X509UserCertResourceHandler::OnWillStart(int request_id,
@@ -104,6 +112,13 @@ bool X509UserCertResourceHandler::OnResponseCompleted(
return false;
AssembleResource();
+#if defined(OS_ANDROID)
+ if (resource_buffer_ && content_length_ > 0) {
+ std::string cert_data(resource_buffer_->data(), content_length_);
+ content::GetContentClient()->browser()->AddNewCertificateOrKeychainAndroid(
+ request_, cert_data.c_str(), cert_data.length(), is_pkcs12_);
+ }
+#else // OS_ANDROID
scoped_refptr<net::X509Certificate> cert;
if (resource_buffer_) {
cert = net::X509Certificate::CreateFromBytes(resource_buffer_->data(),
@@ -111,6 +126,7 @@ bool X509UserCertResourceHandler::OnResponseCompleted(
}
GetContentClient()->browser()->AddNewCertificate(
request_, cert, render_process_host_id_, render_view_id_);
+#endif // OS_ANDROID
return true;
}
« no previous file with comments | « content/browser/renderer_host/x509_user_cert_resource_handler.h ('k') | content/public/browser/content_browser_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698