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

Unified Diff: net/base/x509_certificate.cc

Issue 2812064: Revert 52799 - Add support for parsing certificate formats other than raw, DE... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 5 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: net/base/x509_certificate.cc
===================================================================
--- net/base/x509_certificate.cc (revision 52800)
+++ net/base/x509_certificate.cc (working copy)
@@ -15,9 +15,7 @@
#include "base/histogram.h"
#include "base/logging.h"
#include "base/singleton.h"
-#include "base/string_piece.h"
#include "base/time.h"
-#include "net/base/pem_tokenizer.h"
namespace net {
@@ -33,18 +31,6 @@
return true;
}
-// Indicates the order to use when trying to decode binary data, which is
-// based on (speculation) as to what will be most common -> least common
-const X509Certificate::Format kFormatDecodePriority[] = {
- X509Certificate::FORMAT_DER,
- X509Certificate::FORMAT_PKCS7
-};
-
-// The PEM block header used for DER certificates
-const char kCertificateHeader[] = "CERTIFICATE";
-// The PEM block header used for PKCS#7 data
-const char kPKCS7Header[] = "PKCS7";
-
} // namespace
// static
@@ -200,81 +186,6 @@
return cert;
}
-CertificateList X509Certificate::CreateCertificateListFromBytes(
- const char* data, int length, int format) {
- OSCertHandles certificates;
-
- // Try each of the formats, in order of parse preference, to see if |data|
- // contains the binary representation of a Format.
- for (size_t i = 0; certificates.empty() &&
- i < arraysize(kFormatDecodePriority); ++i) {
- if (format & kFormatDecodePriority[i])
- certificates = CreateOSCertHandlesFromBytes(data, length,
- kFormatDecodePriority[i]);
- }
-
- // No certs were read. Check to see if it is in a PEM-encoded form.
- if (certificates.empty()) {
- base::StringPiece data_string(data, length);
- std::vector<std::string> pem_headers;
-
- // To maintain compatibility with NSS/Firefox, CERTIFICATE is a universally
- // valid PEM block header for any format.
- pem_headers.push_back(kCertificateHeader);
- if (format & FORMAT_PKCS7)
- pem_headers.push_back(kPKCS7Header);
-
- PEMTokenizer pem_tok(data_string, pem_headers);
- while (pem_tok.GetNext()) {
- std::string decoded(pem_tok.data());
-
- OSCertHandle handle = NULL;
- if (format & FORMAT_PEM)
- handle = CreateOSCertHandleFromBytes(decoded.c_str(), decoded.size());
- if (handle != NULL) {
- // Parsed a DER encoded certificate. All PEM blocks that follow must
- // also be DER encoded certificates wrapped inside of PEM blocks.
- format = FORMAT_PEM;
- certificates.push_back(handle);
- continue;
- }
-
- // If the first block failed to parse as a DER certificate, and
- // formats other than PEM are acceptable, check to see if the decoded
- // data is one of the accepted formats.
- if (format & ~FORMAT_PEM) {
- for (size_t i = 0; certificates.empty() &&
- i < arraysize(kFormatDecodePriority); ++i) {
- if (format & kFormatDecodePriority[i]) {
- certificates = CreateOSCertHandlesFromBytes(decoded.c_str(),
- decoded.size(), kFormatDecodePriority[i]);
- }
- }
- }
-
- // Stop parsing after the first block for any format but a sequence of
- // PEM-encoded DER certificates. The case of FORMAT_PEM is handled
- // above, and continues processing until a certificate fails to parse.
- break;
- }
- }
-
- CertificateList results;
- // No certificates parsed.
- if (certificates.empty())
- return results;
-
- for (OSCertHandles::iterator it = certificates.begin();
- it != certificates.end(); ++it) {
- X509Certificate* result = CreateFromHandle(*it, SOURCE_LONE_CERT_IMPORT,
- OSCertHandles());
- results.push_back(scoped_refptr<X509Certificate>(result));
- FreeOSCertHandle(*it);
- }
-
- return results;
-}
-
X509Certificate::X509Certificate(OSCertHandle cert_handle,
Source source,
const OSCertHandles& intermediates)

Powered by Google App Engine
This is Rietveld 408576698