summaryrefslogtreecommitdiff
path: root/chromium/chrome/browser/extensions/api/certificate_provider/certificate_provider_api.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/extensions/api/certificate_provider/certificate_provider_api.cc')
-rw-r--r--chromium/chrome/browser/extensions/api/certificate_provider/certificate_provider_api.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/chromium/chrome/browser/extensions/api/certificate_provider/certificate_provider_api.cc b/chromium/chrome/browser/extensions/api/certificate_provider/certificate_provider_api.cc
index b324f2171dc..7e26990ca4b 100644
--- a/chromium/chrome/browser/extensions/api/certificate_provider/certificate_provider_api.cc
+++ b/chromium/chrome/browser/extensions/api/certificate_provider/certificate_provider_api.cc
@@ -124,8 +124,12 @@ bool CertificateProviderInternalReportCertificatesFunction::
return false;
}
- out_info->certificate =
- net::X509Certificate::CreateFromBytes(cert_der.data(), cert_der.size());
+ // Allow UTF-8 inside PrintableStrings in client certificates. See
+ // crbug.com/770323 and crbug.com/788655.
+ net::X509Certificate::UnsafeCreateOptions options;
+ options.printable_string_is_utf8 = true;
+ out_info->certificate = net::X509Certificate::CreateFromBytesUnsafeOptions(
+ cert_der.data(), cert_der.size(), options);
if (!out_info->certificate) {
WriteToConsole(content::CONSOLE_MESSAGE_LEVEL_ERROR, kErrorInvalidX509Cert);
return false;