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

Unified Diff: net/base/mime_util.cc

Issue 11266008: Fix certificate and keychain installation on Android. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: separate android and openssl CertDatabase implementations Created 8 years 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 | « net/base/mime_util.h ('k') | net/base/mime_util_certificate_type_list.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/mime_util.cc
diff --git a/net/base/mime_util.cc b/net/base/mime_util.cc
index 6ae918b8da068ad1005c6c36cc30814c8c28d5ff..f7240f286c8bd85d19190f50195f756da9aa1d6f 100644
--- a/net/base/mime_util.cc
+++ b/net/base/mime_util.cc
@@ -339,13 +339,27 @@ static const char* const supported_non_image_types[] = {
"application/rss+xml",
"application/xhtml+xml",
"application/json",
- "application/x-x509-user-cert",
"multipart/related", // For MHTML support.
"multipart/x-mixed-replace"
// Note: ADDING a new type here will probably render it AS HTML. This can
// result in cross site scripting.
};
+// Dictionary of cryptographic file mime types.
+struct CertificateMimeTypeInfo {
+ const char* mime_type;
+ CertificateMimeType cert_type;
+};
+
+static const CertificateMimeTypeInfo supported_certificate_types[] = {
+ { "application/x-x509-user-cert",
+ CERTIFICATE_MIME_TYPE_X509_USER_CERT },
+#if defined(OS_ANDROID)
+ { "application/x-x509-ca-cert", CERTIFICATE_MIME_TYPE_X509_CA_CERT },
+ { "application/x-pkcs12", CERTIFICATE_MIME_TYPE_PKCS12_ARCHIVE },
+#endif
+};
+
// These types are excluded from the logic that allows all text/ types because
// while they are technically text, it's very unlikely that a user expects to
// see them rendered in text form.
@@ -433,6 +447,8 @@ void MimeUtil::InitializeMimeTypeMaps() {
// Initialize the supported non-image types.
for (size_t i = 0; i < arraysize(supported_non_image_types); ++i)
non_image_map_.insert(supported_non_image_types[i]);
+ for (size_t i = 0; i < arraysize(supported_certificate_types); ++i)
+ non_image_map_.insert(supported_certificate_types[i].mime_type);
for (size_t i = 0; i < arraysize(unsupported_text_types); ++i)
unsupported_text_map_.insert(unsupported_text_types[i]);
for (size_t i = 0; i < arraysize(supported_javascript_types); ++i)
@@ -968,4 +984,21 @@ const std::string GetIANAMediaType(const std::string& mime_type) {
return "";
}
+CertificateMimeType GetCertificateMimeTypeForMimeType(
+ const std::string& mime_type) {
+ // Don't create a map, there is only one entry in the table,
+ // except on Android.
+ for (size_t i = 0; i < arraysize(supported_certificate_types); ++i) {
+ if (mime_type == net::supported_certificate_types[i].mime_type)
+ return net::supported_certificate_types[i].cert_type;
+ }
+ return CERTIFICATE_MIME_TYPE_UNKNOWN;
+}
+
+bool IsSupportedCertificateMimeType(const std::string& mime_type) {
+ CertificateMimeType file_type =
+ GetCertificateMimeTypeForMimeType(mime_type);
+ return file_type != CERTIFICATE_MIME_TYPE_UNKNOWN;
+}
+
} // namespace net
« no previous file with comments | « net/base/mime_util.h ('k') | net/base/mime_util_certificate_type_list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698