backout changeset 339049fcea42 (bug 1024809) for android and b2g bustage on a CLOSED TREE
authorDavid Keeler <dkeeler@mozilla.com>
Fri, 19 Dec 2014 11:31:32 -0800
changeset 246520 5a082a183de4bc87e28ec3e29557162ed20fb632
parent 246519 afd92b25e239747e029b5677ce1fea2a8be996a7
child 246521 ebcea5a8cb79b5a41e1b3454cb79c25860f0b33c
push id4489
push userraliiev@mozilla.com
push dateMon, 23 Feb 2015 15:17:55 +0000
treeherdermozilla-beta@fd7c3dc24146 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1024809
milestone37.0a1
backs out339049fcea42e2454843b0f2752e41eadd3e8fe7
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
backout changeset 339049fcea42 (bug 1024809) for android and b2g bustage on a CLOSED TREE
security/certverifier/NSSCertDBTrustDomain.cpp
security/certverifier/NSSCertDBTrustDomain.h
security/manager/boot/public/moz.build
security/manager/boot/public/nsICertBlocklist.idl
security/manager/boot/src/CertBlocklist.cpp
security/manager/boot/src/CertBlocklist.h
security/manager/boot/src/moz.build
security/manager/boot/src/nsBOOTModule.cpp
security/manager/ssl/tests/unit/test_cert_blocklist.js
security/manager/ssl/tests/unit/test_onecrl/sample_revocations.txt
security/manager/ssl/tests/unit/tlsserver/cert9.db
security/manager/ssl/tests/unit/tlsserver/generate_certs.sh
security/manager/ssl/tests/unit/tlsserver/key4.db
security/manager/ssl/tests/unit/tlsserver/test-int-ee.der
security/manager/ssl/tests/unit/tlsserver/test-int.der
security/manager/ssl/tests/unit/tlsserver/unknown-issuer.der
security/manager/ssl/tests/unit/xpcshell.ini
toolkit/mozapps/extensions/nsBlocklistService.js
--- a/security/certverifier/NSSCertDBTrustDomain.cpp
+++ b/security/certverifier/NSSCertDBTrustDomain.cpp
@@ -4,22 +4,21 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "NSSCertDBTrustDomain.h"
 
 #include <stdint.h>
 
 #include "ExtendedValidation.h"
+#include "nsNSSCertificate.h"
+#include "NSSErrorsService.h"
 #include "OCSPRequestor.h"
 #include "certdb.h"
-#include "nsNSSCertificate.h"
 #include "nss.h"
-#include "NSSErrorsService.h"
-#include "nsServiceManagerUtils.h"
 #include "pk11pub.h"
 #include "pkix/pkix.h"
 #include "pkix/pkixnss.h"
 #include "pkix/ScopedPtr.h"
 #include "prerror.h"
 #include "prmem.h"
 #include "prprf.h"
 #include "ScopedNSSTypes.h"
@@ -63,17 +62,16 @@ NSSCertDBTrustDomain::NSSCertDBTrustDoma
   , mOCSPFetching(ocspFetching)
   , mOCSPCache(ocspCache)
   , mPinArg(pinArg)
   , mOCSPGetConfig(ocspGETConfig)
   , mPinningMode(pinningMode)
   , mMinimumNonECCBits(forEV ? MINIMUM_NON_ECC_BITS_EV : MINIMUM_NON_ECC_BITS_DV)
   , mHostname(hostname)
   , mBuiltChain(builtChain)
-  , mCertBlocklist(do_GetService(NS_CERTBLOCKLIST_CONTRACTID))
   , mOCSPStaplingStatus(CertVerifier::OCSP_STAPLING_NEVER_CHECKED)
 {
 }
 
 // E=igca@sgdn.pm.gouv.fr,CN=IGC/A,OU=DCSSI,O=PM/SGDN,L=Paris,ST=France,C=FR
 static const uint8_t ANSSI_SUBJECT_DATA[] =
                        "\x30\x81\x85\x31\x0B\x30\x09\x06\x03\x55\x04"
                        "\x06\x13\x02\x46\x52\x31\x0F\x30\x0D\x06\x03"
@@ -363,37 +361,16 @@ NSSCertDBTrustDomain::CheckRevocation(En
   // Since this affects EV there is no reason why DV should be more strict
   // so all intermediatates are allowed to have OCSP responses up to one year
   // old.
   uint16_t maxOCSPLifetimeInDays = 10;
   if (endEntityOrCA == EndEntityOrCA::MustBeCA) {
     maxOCSPLifetimeInDays = 365;
   }
 
-  if (!mCertBlocklist) {
-    return Result::FATAL_ERROR_LIBRARY_FAILURE;
-  }
-
-  bool isCertRevoked;
-  nsresult nsrv = mCertBlocklist->IsCertRevoked(
-                    certID.issuer.UnsafeGetData(),
-                    certID.issuer.GetLength(),
-                    certID.serialNumber.UnsafeGetData(),
-                    certID.serialNumber.GetLength(),
-                    &isCertRevoked);
-  if (NS_FAILED(nsrv)) {
-    return Result::FATAL_ERROR_LIBRARY_FAILURE;
-  }
-
-  if (isCertRevoked) {
-    PR_LOG(gCertVerifierLog, PR_LOG_DEBUG,
-           ("NSSCertDBTrustDomain: certificate is in blocklist"));
-    return Result::ERROR_REVOKED_CERTIFICATE;
-  }
-
   // If we have a stapled OCSP response then the verification of that response
   // determines the result unless the OCSP response is expired. We make an
   // exception for expired responses because some servers, nginx in particular,
   // are known to serve expired responses due to bugs.
   // We keep track of the result of verifying the stapled response but don't
   // immediately return failure if the response has expired.
   Result stapledOCSPResponseResult = Success;
   if (stapledOCSPResponse) {
--- a/security/certverifier/NSSCertDBTrustDomain.h
+++ b/security/certverifier/NSSCertDBTrustDomain.h
@@ -2,20 +2,19 @@
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_psm__NSSCertDBTrustDomain_h
 #define mozilla_psm__NSSCertDBTrustDomain_h
 
-#include "CertVerifier.h"
-#include "nsICertBlocklist.h"
 #include "pkix/pkixtypes.h"
 #include "secmodt.h"
+#include "CertVerifier.h"
 
 namespace mozilla { namespace psm {
 
 SECStatus InitializeNSS(const char* dir, bool readOnly);
 
 void DisableMD5();
 
 extern const char BUILTIN_ROOTS_MODULE_DEFAULT_NAME[];
@@ -116,15 +115,14 @@ private:
   const OCSPFetching mOCSPFetching;
   OCSPCache& mOCSPCache; // non-owning!
   void* mPinArg; // non-owning!
   const CertVerifier::ocsp_get_config mOCSPGetConfig;
   CertVerifier::PinningMode mPinningMode;
   const unsigned int mMinimumNonECCBits;
   const char* mHostname; // non-owning - only used for pinning checks
   ScopedCERTCertList* mBuiltChain; // non-owning
-  nsCOMPtr<nsICertBlocklist> mCertBlocklist;
   CertVerifier::OCSPStaplingStatus mOCSPStaplingStatus;
 };
 
 } } // namespace mozilla::psm
 
 #endif // mozilla_psm__NSSCertDBTrustDomain_h
--- a/security/manager/boot/public/moz.build
+++ b/security/manager/boot/public/moz.build
@@ -1,16 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 XPIDL_SOURCES += [
     'nsIBufEntropyCollector.idl',
-    'nsICertBlocklist.idl',
     'nsISecurityUITelemetry.idl',
     'nsISecurityWarningDialogs.idl',
     'nsISSLStatusProvider.idl',
 ]
 
 XPIDL_MODULE = 'pipboot'
 
deleted file mode 100644
--- a/security/manager/boot/public/nsICertBlocklist.idl
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsISupports.idl"
-
-interface nsIX509Cert;
-
-%{C++
-#define NS_CERTBLOCKLIST_CONTRACTID "@mozilla.org/security/certblocklist;1"
-%}
-
-/**
- * Represents a service to add certificates as explicitly blocked/distrusted.
- */
-[scriptable, uuid(44b0ee42-1af3-45e7-b601-7f17bd67c5cc)]
-interface nsICertBlocklist : nsISupports {
-  /**
-   * Add details of a revoked certificate :
-   * issuer name (base-64 encoded DER) and serial number (base-64 encoded DER).
-   */
-   void addRevokedCert(in string issuer, in string serialNumber);
-
-  /**
-   * Persist (fresh) blocklist entries to the profile (if a profile directory is
-   * available). Note: calling this will result in synchronous I/O.
-   */
-   void saveEntries();
-
-  /**
-   * Check if a certificate is blocked.
-   * isser - issuer name, DER encoded
-   * serial - serial number, DER encoded
-   */
-   boolean isCertRevoked([const, array, size_is(issuer_length)] in octet issuer,
-                          in unsigned long issuer_length,
-                          [const, array, size_is(serial_length)] in octet serial,
-                          in unsigned long serial_length);
-};
deleted file mode 100644
--- a/security/manager/boot/src/CertBlocklist.cpp
+++ /dev/null
@@ -1,468 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "CertBlocklist.h"
-#include "mozilla/Base64.h"
-#include "mozilla/unused.h"
-#include "nsAppDirectoryServiceDefs.h"
-#include "nsCRTGlue.h"
-#include "nsDirectoryServiceUtils.h"
-#include "nsIFileStreams.h"
-#include "nsILineInputStream.h"
-#include "nsIX509Cert.h"
-#include "nsNetCID.h"
-#include "nsNetUtil.h"
-#include "nsTHashtable.h"
-#include "nsThreadUtils.h"
-#include "pkix/Input.h"
-#include "prlog.h"
-
-NS_IMPL_ISUPPORTS(CertBlocklist, nsICertBlocklist)
-
-static PRLogModuleInfo* gCertBlockPRLog;
-
-CertBlocklistItem::CertBlocklistItem(mozilla::pkix::Input aIssuer,
-                                     mozilla::pkix::Input aSerial)
-  : mIsCurrent(false)
-{
-  mIssuerData = new uint8_t[aIssuer.GetLength()];
-  memcpy(mIssuerData, aIssuer.UnsafeGetData(), aIssuer.GetLength());
-  mozilla::unused << mIssuer.Init(mIssuerData, aIssuer.GetLength());
-
-  mSerialData = new uint8_t[aSerial.GetLength()];
-  memcpy(mSerialData, aSerial.UnsafeGetData(), aSerial.GetLength());
-  mozilla::unused << mSerial.Init(mSerialData, aSerial.GetLength());
-}
-
-CertBlocklistItem::CertBlocklistItem(const CertBlocklistItem& aItem)
-{
-  uint32_t issuerLength = aItem.mIssuer.GetLength();
-  mIssuerData = new uint8_t[issuerLength];
-  memcpy(mIssuerData, aItem.mIssuerData, issuerLength);
-  mozilla::unused << mIssuer.Init(mIssuerData, issuerLength);
-
-  uint32_t serialLength = aItem.mSerial.GetLength();
-  mSerialData = new uint8_t[serialLength];
-  memcpy(mSerialData, aItem.mSerialData, serialLength);
-  mozilla::unused << mSerial.Init(mSerialData, serialLength);
-  mIsCurrent = aItem.mIsCurrent;
-}
-
-CertBlocklistItem::~CertBlocklistItem()
-{
-  delete[] mIssuerData;
-  delete[] mSerialData;
-}
-
-nsresult
-CertBlocklistItem::ToBase64(nsACString& b64IssuerOut, nsACString& b64SerialOut)
-{
-  nsDependentCSubstring issuerString(reinterpret_cast<char*>(mIssuerData),
-                                     mIssuer.GetLength());
-  nsDependentCSubstring serialString(reinterpret_cast<char*>(mSerialData),
-                                     mSerial.GetLength());
-  nsresult rv = mozilla::Base64Encode(issuerString, b64IssuerOut);
-  if (NS_FAILED(rv)) {
-    return rv;
-  }
-  rv = mozilla::Base64Encode(serialString, b64SerialOut);
-  return rv;
-}
-
-bool
-CertBlocklistItem::operator==(const CertBlocklistItem& aItem) const
-{
-  bool retval = InputsAreEqual(aItem.mIssuer, mIssuer) &&
-                InputsAreEqual(aItem.mSerial, mSerial);
-  return retval;
-}
-
-uint32_t
-CertBlocklistItem::Hash() const
-{
-  uint32_t hash;
-  uint32_t serialLength = mSerial.GetLength();
-  // there's no requirement for a serial to be as large as 32 bits; if it's
-  // smaller, fall back to the first octet (otherwise, the last four)
-  if (serialLength >= 4) {
-    hash = *(uint32_t *)(mSerialData + serialLength - 4);
-  } else {
-    hash = *mSerialData;
-  }
-  return hash;
-}
-
-CertBlocklist::CertBlocklist()
-  : mMutex("CertBlocklist::mMutex")
-  , mModified(false)
-{
-  if (!gCertBlockPRLog) {
-    gCertBlockPRLog = PR_NewLogModule("CertBlock");
-  }
-}
-
-CertBlocklist::~CertBlocklist()
-{
-}
-
-nsresult
-CertBlocklist::Init()
-{
-  mozilla::MutexAutoLock lock(mMutex);
-  PR_LOG(gCertBlockPRLog, PR_LOG_DEBUG, ("CertBlocklist::Init"));
-
-  // Load the revocations file into the cert blocklist
-  PR_LOG(gCertBlockPRLog, PR_LOG_DEBUG,
-         ("CertBlocklist::Init - not initialized; initializing"));
-  nsresult rv = NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR,
-                                       getter_AddRefs(mBackingFile));
-  if (NS_FAILED(rv) || !mBackingFile) {
-    PR_LOG(gCertBlockPRLog, PR_LOG_DEBUG,
-           ("CertBlocklist::Init - couldn't get profile dir"));
-    return NS_OK;
-  }
-  rv = mBackingFile->Append(NS_LITERAL_STRING("revocations.txt"));
-  if (NS_FAILED(rv)) {
-    return rv;
-  }
-
-  nsAutoCString path;
-  rv = mBackingFile->GetNativePath(path);
-  if (NS_FAILED(rv)) {
-    return rv;
-  }
-
-  PR_LOG(gCertBlockPRLog, PR_LOG_DEBUG,
-         ("CertBlocklist::Init certList path: %s", path.get()));
-
-  bool exists = false;
-  rv = mBackingFile->Exists(&exists);
-  if (NS_FAILED(rv)) {
-    return rv;
-  }
-
-  if (!exists) {
-    PR_LOG(gCertBlockPRLog, PR_LOG_WARN,
-           ("CertBlocklist::Init no revocations file"));
-    return NS_OK;
-  }
-
-  nsCOMPtr<nsIFileInputStream> fileStream(
-      do_CreateInstance(NS_LOCALFILEINPUTSTREAM_CONTRACTID, &rv));
-  if (NS_FAILED(rv)) {
-    return rv;
-  }
-
-  rv = fileStream->Init(mBackingFile, -1, -1, false);
-  if (NS_FAILED(rv)) {
-    return rv;
-  }
-
-  nsCOMPtr<nsILineInputStream> lineStream(do_QueryInterface(fileStream, &rv));
-  nsAutoCString line;
-  nsAutoCString issuer;
-  nsAutoCString serial;
-  // read in the revocations file. The file format is as follows: each line
-  // contains a comment, base64 encoded DER for an issuer or base64 encoded DER
-  // for a serial number. Comment lines start with '#', serial number lines, ' '
-  // (a space) and anything else is assumed to be an issuer.
-  bool more = true;
-  do {
-    rv = lineStream->ReadLine(line, &more);
-    if (NS_FAILED(rv)) {
-      break;
-    }
-    // ignore comments and empty lines
-    if (line.IsEmpty() || line.First() == '#') {
-      continue;
-    }
-    if (line.First() != ' ') {
-      issuer = line;
-      continue;
-    }
-    serial = line;
-    serial.Trim(" ", true, false, false);
-    // serial numbers 'belong' to the last issuer line seen; if no issuer has
-    // been seen, the serial number is ignored
-    if (issuer.IsEmpty() || serial.IsEmpty()) {
-      continue;
-    }
-    PR_LOG(gCertBlockPRLog, PR_LOG_DEBUG,
-           ("CertBlocklist::Init adding: %s %s", issuer.get(), serial.get()));
-    rv = AddRevokedCertInternal(issuer.get(),
-                                serial.get(),
-                                CertOldFromLocalCache,
-                                lock);
-    if (NS_FAILED(rv)) {
-      // we warn here, rather than abandoning, since we need to
-      // ensure that as many items as possible are read
-      PR_LOG(gCertBlockPRLog, PR_LOG_WARN,
-             ("CertBlocklist::Init adding revoked cert failed"));
-    }
-  } while (more);
-
-  return NS_OK;
-}
-
-// void addRevokedCert (in string issuer, in string serialNumber);
-NS_IMETHODIMP
-CertBlocklist::AddRevokedCert(const char* aIssuer,
-                              const char* aSerialNumber)
-{
-  PR_LOG(gCertBlockPRLog, PR_LOG_DEBUG,
-         ("CertBlocklist::addRevokedCert - issuer is: %s and serial: %s",
-          aIssuer, aSerialNumber));
-  mozilla::MutexAutoLock lock(mMutex);
-  return AddRevokedCertInternal(aIssuer,
-                                aSerialNumber,
-                                CertNewFromBlocklist,
-                                lock);
-}
-
-nsresult
-CertBlocklist::AddRevokedCertInternal(const char* aIssuer,
-                                      const char* aSerialNumber,
-                                      CertBlocklistItemState aItemState,
-                                      mozilla::MutexAutoLock& /*proofOfLock*/)
-{
-  nsCString decodedIssuer;
-  nsCString decodedSerial;
-
-  nsresult rv;
-  rv = mozilla::Base64Decode(nsDependentCString(aIssuer), decodedIssuer);
-  if (NS_FAILED(rv)) {
-    return rv;
-  }
-  rv = mozilla::Base64Decode(nsDependentCString(aSerialNumber), decodedSerial);
-  if (NS_FAILED(rv)) {
-    return rv;
-  }
-
-  mozilla::pkix::Input issuer;
-  mozilla::pkix::Input serial;
-
-  mozilla::pkix::Result pkrv;
-  pkrv = issuer.Init(reinterpret_cast<const uint8_t*>(decodedIssuer.get()),
-                     decodedIssuer.Length());
-  if (pkrv != mozilla::pkix::Success) {
-    return NS_ERROR_FAILURE;
-  }
-  pkrv = serial.Init(reinterpret_cast<const uint8_t*>(decodedSerial.get()),
-                     decodedSerial.Length());
-  if (pkrv != mozilla::pkix::Success) {
-    return NS_ERROR_FAILURE;
-  }
-
-  CertBlocklistItem item(issuer, serial);
-
-  if (aItemState == CertNewFromBlocklist) {
-    // we want SaveEntries to be a no-op if no new entries are added
-    if (!mBlocklist.Contains(item)) {
-      mModified = true;
-    }
-
-    // Ensure that any existing item is replaced by a fresh one so we can
-    // use mIsCurrent to decide which entries to write out
-    mBlocklist.RemoveEntry(item);
-    item.mIsCurrent = true;
-  }
-  mBlocklist.PutEntry(item);
-
-  return NS_OK;
-}
-
-// Data needed for writing blocklist items out to the revocations file
-struct BlocklistSaveInfo
-{
-  IssuerTable issuerTable;
-  BlocklistStringSet issuers;
-  nsCOMPtr<nsIOutputStream> outputStream;
-  bool success;
-};
-
-// Write a line for a given string in the output stream
-nsresult
-WriteLine(nsIOutputStream* outputStream, const nsACString& string)
-{
-  nsAutoCString line(string);
-  line.Append('\n');
-
-  const char* data = line.get();
-  uint32_t length = line.Length();
-  nsresult rv = NS_OK;
-  while (NS_SUCCEEDED(rv) && length) {
-    uint32_t bytesWritten = 0;
-    rv = outputStream->Write(data, length, &bytesWritten);
-    if (NS_FAILED(rv)) {
-      return rv;
-    }
-    // if no data is written, something is wrong
-    if (!bytesWritten) {
-      return NS_ERROR_FAILURE;
-    }
-    length -= bytesWritten;
-    data += bytesWritten;
-  }
-  return rv;
-}
-
-// sort blocklist items into lists of serials for each issuer
-PLDHashOperator
-ProcessEntry(BlocklistItemKey* aHashKey, void* aUserArg)
-{
-  BlocklistSaveInfo* saveInfo = reinterpret_cast<BlocklistSaveInfo*>(aUserArg);
-  CertBlocklistItem item = aHashKey->GetKey();
-
-  if (!item.mIsCurrent) {
-    return PL_DHASH_NEXT;
-  }
-
-  nsAutoCString encIssuer;
-  nsAutoCString encSerial;
-
-  nsresult rv = item.ToBase64(encIssuer, encSerial);
-  if (NS_FAILED(rv)) {
-    saveInfo->success = false;
-    return PL_DHASH_STOP;
-  }
-
-  saveInfo->issuers.PutEntry(encIssuer);
-  BlocklistStringSet* issuerSet = saveInfo->issuerTable.Get(encIssuer);
-  if (!issuerSet) {
-    issuerSet = new BlocklistStringSet();
-    saveInfo->issuerTable.Put(encIssuer, issuerSet);
-  }
-  issuerSet->PutEntry(encSerial);
-  return PL_DHASH_NEXT;
-}
-
-// write serial data to the output stream
-PLDHashOperator
-WriteSerial(nsCStringHashKey* aHashKey, void* aUserArg)
-{
-  BlocklistSaveInfo* saveInfo = reinterpret_cast<BlocklistSaveInfo*>(aUserArg);
-
-  nsresult rv = WriteLine(saveInfo->outputStream,
-                          NS_LITERAL_CSTRING(" ") + aHashKey->GetKey());
-  if (NS_FAILED(rv)) {
-    saveInfo->success = false;
-    return PL_DHASH_STOP;
-  }
-  return PL_DHASH_NEXT;
-}
-
-// Write issuer data to the output stream
-PLDHashOperator
-WriteIssuer(nsCStringHashKey* aHashKey, void* aUserArg)
-{
-  BlocklistSaveInfo* saveInfo = reinterpret_cast<BlocklistSaveInfo*>(aUserArg);
-  nsAutoPtr<BlocklistStringSet> issuerSet;
-
-  saveInfo->issuerTable.RemoveAndForget(aHashKey->GetKey(), issuerSet);
-
-  nsresult rv = WriteLine(saveInfo->outputStream, aHashKey->GetKey());
-  if (NS_FAILED(rv)) {
-    return PL_DHASH_STOP;
-  }
-
-  issuerSet->EnumerateEntries(WriteSerial, saveInfo);
-  if (!saveInfo->success) {
-    saveInfo->success = false;
-    return PL_DHASH_STOP;
-  }
-  return PL_DHASH_NEXT;
-}
-
-// void saveEntries();
-// Store the blockist in a text file containing base64 encoded issuers and
-// serial numbers.
-//
-// Each item is stored on a separate line; each issuer is followed by its
-// revoked serial numbers, indented by one space.
-//
-// lines starting with a # character are ignored
-NS_IMETHODIMP
-CertBlocklist::SaveEntries()
-{
-  mozilla::MutexAutoLock lock(mMutex);
-  if (!mModified) {
-    return NS_OK;
-  }
-  if (!mBackingFile) {
-    // We allow this to succeed with no profile directory for tests
-    PR_LOG(gCertBlockPRLog, PR_LOG_WARN,
-           ("CertBlocklist::SaveEntries no file in profile to write to"));
-    return NS_OK;
-  }
-
-  BlocklistSaveInfo saveInfo;
-  saveInfo.success = true;
-  nsresult rv;
-  rv = NS_NewAtomicFileOutputStream(getter_AddRefs(saveInfo.outputStream),
-                                    mBackingFile, -1, -1, 0);
-  if (NS_FAILED(rv)) {
-    return rv;
-  }
-  mBlocklist.EnumerateEntries(ProcessEntry, &saveInfo);
-  if (!saveInfo.success) {
-    PR_LOG(gCertBlockPRLog, PR_LOG_WARN,
-           ("CertBlocklist::SaveEntries writing revocation data failed"));
-    return NS_ERROR_FAILURE;
-  }
-
-  rv = WriteLine(saveInfo.outputStream,
-                 NS_LITERAL_CSTRING("# Auto generated contents. Do not edit."));
-  if (NS_FAILED(rv)) {
-    return rv;
-  }
-
-  saveInfo.issuers.EnumerateEntries(WriteIssuer, &saveInfo);
-  if (!saveInfo.success) {
-    PR_LOG(gCertBlockPRLog, PR_LOG_WARN,
-           ("CertBlocklist::SaveEntries writing revocation data failed"));
-    return NS_ERROR_FAILURE;
-  }
-
-  nsCOMPtr<nsISafeOutputStream> safeStream =
-      do_QueryInterface(saveInfo.outputStream);
-  NS_ASSERTION(safeStream, "expected a safe output stream!");
-  if (!safeStream) {
-    return NS_ERROR_FAILURE;
-  }
-  rv = safeStream->Finish();
-  if (NS_FAILED(rv)) {
-    PR_LOG(gCertBlockPRLog, PR_LOG_WARN,
-           ("CertBlocklist::SaveEntries saving revocation data failed"));
-    return rv;
-  }
-  mModified = false;
-  return NS_OK;
-}
-
-// boolean isCertRevoked([const, array, size_is(issuerLength)] in octet issuer,
-//                       in unsigned long issuerLength,
-//                       [const, array, size_is(serialLength)] in octet serial,
-//                       in unsigned long serialLength);
-NS_IMETHODIMP CertBlocklist::IsCertRevoked(const uint8_t* aIssuer, uint32_t aIssuerLength,
-                                           const uint8_t* aSerial, uint32_t aSerialLength,
-                                           bool* _retval)
-{
-  mozilla::MutexAutoLock lock(mMutex);
-
-  mozilla::pkix::Input issuer;
-  mozilla::pkix::Input serial;
-  if (issuer.Init(aIssuer, aIssuerLength) != mozilla::pkix::Success) {
-    return NS_ERROR_FAILURE;
-  }
-  if (serial.Init(aSerial, aSerialLength) != mozilla::pkix::Success) {
-    return NS_ERROR_FAILURE;
-  }
-
-  CertBlocklistItem item(issuer, serial);
-
-  *_retval = mBlocklist.Contains(item);
-
-  return NS_OK;
-}
deleted file mode 100644
--- a/security/manager/boot/src/CertBlocklist.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef CertBlocklist_h
-#define CertBlocklist_h
-
-#include "mozilla/Mutex.h"
-#include "nsClassHashtable.h"
-#include "nsCOMPtr.h"
-#include "nsICertBlocklist.h"
-#include "nsIOutputStream.h"
-#include "nsTHashtable.h"
-#include "nsIX509CertDB.h"
-#include "pkix/Input.h"
-
-#define NS_CERT_BLOCKLIST_CID \
-{0x11aefd53, 0x2fbb, 0x4c92, {0xa0, 0xc1, 0x05, 0x32, 0x12, 0xae, 0x42, 0xd0} }
-
-enum CertBlocklistItemState {
-  CertNewFromBlocklist,
-  CertOldFromLocalCache
-};
-
-class CertBlocklistItem
-{
-public:
-  CertBlocklistItem(mozilla::pkix::Input aIssuer, mozilla::pkix::Input aSerial);
-  CertBlocklistItem(const CertBlocklistItem& aItem);
-  ~CertBlocklistItem();
-  nsresult ToBase64(nsACString& b64IssuerOut, nsACString& b64SerialOut);
-  bool operator==(const CertBlocklistItem& aItem) const;
-  uint32_t Hash() const;
-  bool mIsCurrent;
-
-private:
-  mozilla::pkix::Input mIssuer;
-  uint8_t* mIssuerData;
-  mozilla::pkix::Input mSerial;
-  uint8_t* mSerialData;
-};
-
-typedef nsGenericHashKey<CertBlocklistItem> BlocklistItemKey;
-typedef nsTHashtable<BlocklistItemKey> BlocklistTable;
-typedef nsTHashtable<nsCStringHashKey> BlocklistStringSet;
-typedef nsClassHashtable<nsCStringHashKey, BlocklistStringSet> IssuerTable;
-
-class CertBlocklist : public nsICertBlocklist
-{
-public:
-  NS_DECL_THREADSAFE_ISUPPORTS
-  NS_DECL_NSICERTBLOCKLIST
-  CertBlocklist();
-  nsresult Init();
-
-private:
-  BlocklistTable mBlocklist;
-  nsresult AddRevokedCertInternal(const char* aIssuer,
-                                  const char* aSerial,
-                                  CertBlocklistItemState aItemState,
-                                  mozilla::MutexAutoLock& /*proofOfLock*/);
-  mozilla::Mutex mMutex;
-  bool mModified;
-  nsCOMPtr<nsIFile> mBackingFile;
-
-protected:
-  virtual ~CertBlocklist();
-};
-
-#endif // CertBlocklist_h
--- a/security/manager/boot/src/moz.build
+++ b/security/manager/boot/src/moz.build
@@ -4,17 +4,16 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 EXPORTS.mozilla += [
     'DataStorage.h',
 ]
 
 UNIFIED_SOURCES += [
-    'CertBlocklist.cpp',
     'DataStorage.cpp',
     'nsBOOTModule.cpp',
     'nsEntropyCollector.cpp',
     'nsSecureBrowserUIImpl.cpp',
     'nsSecurityHeaderParser.cpp',
     'nsSecurityWarningDialogs.cpp',
     'nsSiteSecurityService.cpp',
     'PublicKeyPinningService.cpp',
--- a/security/manager/boot/src/nsBOOTModule.cpp
+++ b/security/manager/boot/src/nsBOOTModule.cpp
@@ -1,48 +1,43 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/ModuleUtils.h"
 
-#include "CertBlocklist.h"
 #include "nsEntropyCollector.h"
 #include "nsSecureBrowserUIImpl.h"
 #include "nsSecurityWarningDialogs.h"
 #include "nsSiteSecurityService.h"
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsEntropyCollector)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSecureBrowserUIImpl)
-NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(CertBlocklist, Init)
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSecurityWarningDialogs, Init)
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSiteSecurityService, Init)
 
 NS_DEFINE_NAMED_CID(NS_ENTROPYCOLLECTOR_CID);
 NS_DEFINE_NAMED_CID(NS_SECURITYWARNINGDIALOGS_CID);
 NS_DEFINE_NAMED_CID(NS_SECURE_BROWSER_UI_CID);
 NS_DEFINE_NAMED_CID(NS_SITE_SECURITY_SERVICE_CID);
-NS_DEFINE_NAMED_CID(NS_CERT_BLOCKLIST_CID);
 
 static const mozilla::Module::CIDEntry kBOOTCIDs[] = {
   { &kNS_ENTROPYCOLLECTOR_CID, false, nullptr, nsEntropyCollectorConstructor },
   { &kNS_SECURITYWARNINGDIALOGS_CID, false, nullptr, nsSecurityWarningDialogsConstructor },
   { &kNS_SECURE_BROWSER_UI_CID, false, nullptr, nsSecureBrowserUIImplConstructor },
   { &kNS_SITE_SECURITY_SERVICE_CID, false, nullptr, nsSiteSecurityServiceConstructor },
-  { &kNS_CERT_BLOCKLIST_CID, false, nullptr, CertBlocklistConstructor},
   { nullptr }
 };
 
 static const mozilla::Module::ContractIDEntry kBOOTContracts[] = {
   { NS_ENTROPYCOLLECTOR_CONTRACTID, &kNS_ENTROPYCOLLECTOR_CID },
   { NS_SECURITYWARNINGDIALOGS_CONTRACTID, &kNS_SECURITYWARNINGDIALOGS_CID },
   { NS_SECURE_BROWSER_UI_CONTRACTID, &kNS_SECURE_BROWSER_UI_CID },
   { NS_SSSERVICE_CONTRACTID, &kNS_SITE_SECURITY_SERVICE_CID },
-  { NS_CERTBLOCKLIST_CONTRACTID, &kNS_CERT_BLOCKLIST_CID },
   { nullptr }
 };
 
 static const mozilla::Module kBootModule = {
   mozilla::Module::kVersion,
   kBOOTCIDs,
   kBOOTContracts
 };
deleted file mode 100644
--- a/security/manager/ssl/tests/unit/test_cert_blocklist.js
+++ /dev/null
@@ -1,271 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-// This test checks a number of things:
-// * it ensures that data loaded from revocations.txt on startup is present
-// * it ensures that certItems in blocklist.xml are persisted correctly
-// * it ensures that items in the CertBlocklist are seen as revoked by the
-//   cert verifier
-// * it does a sanity check to ensure other cert verifier behavior is
-//   unmodified
-
-let { XPCOMUtils } = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
-
-// First, we need to setup appInfo for the blocklist service to work
-let id = "xpcshell@tests.mozilla.org";
-let appName = "XPCShell";
-let version = "1";
-let platformVersion = "1.9.2";
-let appInfo = {
-  // nsIXULAppInfo
-  vendor: "Mozilla",
-  name: appName,
-  ID: id,
-  version: version,
-  appBuildID: "2007010101",
-  platformVersion: platformVersion ? platformVersion : "1.0",
-  platformBuildID: "2007010101",
-
-  // nsIXULRuntime
-  inSafeMode: false,
-  logConsoleErrors: true,
-  OS: "XPCShell",
-  XPCOMABI: "noarch-spidermonkey",
-  invalidateCachesOnRestart: function invalidateCachesOnRestart() {
-    // Do nothing
-  },
-
-  // nsICrashReporter
-  annotations: {},
-
-  annotateCrashReport: function(key, data) {
-    this.annotations[key] = data;
-  },
-
-  QueryInterface: XPCOMUtils.generateQI([Ci.nsIXULAppInfo,
-                                         Ci.nsIXULRuntime,
-                                         Ci.nsICrashReporter,
-                                         Ci.nsISupports])
-};
-
-let XULAppInfoFactory = {
-  createInstance: function (outer, iid) {
-    appInfo.QueryInterface(iid);
-    if (outer != null) {
-      throw Cr.NS_ERROR_NO_AGGREGATION;
-    }
-    return appInfo.QueryInterface(iid);
-  }
-};
-
-let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
-const XULAPPINFO_CONTRACTID = "@mozilla.org/xre/app-info;1";
-const XULAPPINFO_CID = Components.ID("{c763b610-9d49-455a-bbd2-ede71682a1ac}");
-registrar.registerFactory(XULAPPINFO_CID, "XULAppInfo",
-                          XULAPPINFO_CONTRACTID, XULAppInfoFactory);
-
-// we need to ensure we setup revocation data before certDB, or we'll start with
-// no revocation.txt in the profile
-let profile = do_get_profile();
-let revocations = profile.clone();
-revocations.append("revocations.txt");
-if (!revocations.exists()) {
-  let existing = do_get_file("test_onecrl/sample_revocations.txt", false);
-  existing.copyTo(profile,"revocations.txt");
-}
-
-let certDB = Cc["@mozilla.org/security/x509certdb;1"]
-               .getService(Ci.nsIX509CertDB);
-
-// set up a test server to serve the blocklist.xml
-let testserver = new HttpServer();
-
-let blocklist_contents =
-    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
-    "<blocklist xmlns=\"http://www.mozilla.org/2006/addons-blocklist\">" +
-    // test with some bad data ...
-    "<certItems><certItem issuerName='Some nonsense in issuer'>" +
-    "<serialNumber>AkHVNA==</serialNumber>" +
-    "</certItem><certItem issuerName='MA0xCzAJBgNVBAMMAmNh'>" +
-    "<serialNumber>some nonsense in serial</serialNumber>" +
-    "</certItem><certItem issuerName='some nonsense in both issuer'>" +
-    "<serialNumber>and serial</serialNumber></certItem>" +
-    // some mixed
-    // In this case, the issuer name and the valid serialNumber correspond
-    // to test-int.der in tlsserver/
-    "<certItem issuerName='MBIxEDAOBgNVBAMTB1Rlc3QgQ0E='>" +
-    "<serialNumber>oops! more nonsense.</serialNumber>" +
-    "<serialNumber>X1o=</serialNumber></certItem>" +
-    // ... and some good
-    // This item corresponds to an entry in sample_revocations.txt where:
-    // isser name is "another imaginary issuer" base-64 encoded, and
-    // serialNumbers are:
-    // "serial2." base-64 encoded, and
-    // "another serial." base-64 encoded
-    // We need this to ensure that existing items are retained if they're
-    // also in the blocklist
-    "<certItem issuerName='YW5vdGhlciBpbWFnaW5hcnkgaXNzdWVy'>" +
-    "<serialNumber>c2VyaWFsMi4=</serialNumber>" +
-    "<serialNumber>YW5vdGhlciBzZXJpYWwu</serialNumber>" +
-    "</certItem></certItems></blocklist>";
-testserver.registerPathHandler("/push_blocked_cert/",
-  function serveResponse(request, response) {
-    response.write(blocklist_contents);
-  });
-
-// start the test server
-testserver.start(-1);
-let port = testserver.identity.primaryPort;
-
-// Setup the addonManager
-let addonManager = Cc["@mozilla.org/addons/integration;1"]
-                     .getService(Ci.nsIObserver)
-                     .QueryInterface(Ci.nsITimerCallback);
-addonManager.observe(null, "addons-startup", null);
-
-let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
-                  .createInstance(Ci.nsIScriptableUnicodeConverter);
-converter.charset = "UTF-8";
-
-function verify_cert(file, expectedError) {
-  let cert_der = readFile(do_get_file(file));
-  let ee = certDB.constructX509(cert_der, cert_der.length);
-  equal(expectedError, certDB.verifyCertNow(ee, certificateUsageSSLServer,
-                                            NO_FLAGS, {}, {}));
-}
-
-function load_cert(cert, trust) {
-  let file = "tlsserver/" + cert + ".der";
-  addCertFromFile(certDB, file, trust);
-}
-
-function test_is_revoked(certList, issuerString, serialString) {
-  let issuer = converter.convertToByteArray(issuerString, {});
-  let serial = converter.convertToByteArray(serialString, {});
-  return certList.isCertRevoked(issuer,
-                                issuerString.length,
-                                serial,
-                                serialString.length);
-}
-
-function run_test() {
-  // import the certificates we need
-  load_cert("test-ca", "CTu,CTu,CTu");
-  load_cert("test-int", ",,");
-
-  let certList = Cc["@mozilla.org/security/certblocklist;1"]
-                   .getService(Ci.nsICertBlocklist);
-
-  // check some existing items in revocations.txt are blocked. Since the
-  // CertBlocklistItems don't know about the data they contain, we can use
-  // arbitrary data (not necessarily DER) to test if items are revoked or not.
-  // This test corresponds to:
-  // issuer: c29tZSBpbWFnaW5hcnkgaXNzdWVy
-  // serial: c2VyaWFsLg==
-  ok(test_is_revoked(certList, "some imaginary issuer", "serial."),
-     "issuer / serial pair should be blocked");
-
-  // This test corresponds to:
-  // issuer: YW5vdGhlciBpbWFnaW5hcnkgaXNzdWVy
-  // serial: c2VyaWFsLg==
-  ok(test_is_revoked(certList, "another imaginary issuer", "serial."),
-     "issuer / serial pair should be blocked");
-
-  // And this test corresponds to:
-  // issuer: YW5vdGhlciBpbWFnaW5hcnkgaXNzdWVy
-  // serial: c2VyaWFsMi4=
-  // (we test this issuer twice to ensure we can read multiple serials)
-  ok(test_is_revoked(certList, "another imaginary issuer", "serial2."),
-     "issuer / serial pair should be blocked");
-
-  // Soon we'll load a blocklist which revokes test-int.der, which issued
-  // test-int-ee.der.
-  // Check the cert validates before we load the blocklist
-  let file = "tlsserver/test-int-ee.der";
-  verify_cert(file, Cr.NS_OK);
-
-  // blocklist load is async so we must use add_test from here
-  add_test(function() {
-    let certblockObserver = {
-      observe: function(aSubject, aTopic, aData) {
-        Services.obs.removeObserver(this, "blocklist-updated");
-        run_next_test();
-      }
-    }
-
-    Services.obs.addObserver(certblockObserver, "blocklist-updated", false);
-    Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" +
-                               port + "/push_blocked_cert/");
-    let blocklist = Cc["@mozilla.org/extensions/blocklist;1"]
-                      .getService(Ci.nsITimerCallback);
-    blocklist.notify(null);
-  });
-
-  add_test(function() {
-    // The blocklist will be loaded now. Let's check the data is sane.
-    // In particular, we should still have the revoked issuer / serial pair
-    // that was in both revocations.txt and the blocklist.xml
-    ok(test_is_revoked(certList, "another imaginary issuer", "serial2."),
-      "issuer / serial pair should be blocked");
-
-    // Check that both serials in the certItem with multiple serials were read
-    // properly
-    ok(test_is_revoked(certList, "another imaginary issuer", "serial2."),
-       "issuer / serial pair should be blocked");
-    ok(test_is_revoked(certList, "another imaginary issuer", "another serial."),
-       "issuer / serial pair should be blocked");
-
-    // Check the blocklist entry has been persisted properly to the backing
-    // file
-    let profile = do_get_profile();
-    let revocations = profile.clone();
-    revocations.append("revocations.txt");
-    ok(revocations.exists(), "the revocations file should exist");
-    let inputStream = Cc["@mozilla.org/network/file-input-stream;1"]
-                        .createInstance(Ci.nsIFileInputStream);
-    inputStream.init(revocations,-1, -1, 0);
-    inputStream.QueryInterface(Ci.nsILineInputStream);
-    let contents = "";
-    let hasmore = false;
-    do {
-      var line = {};
-      hasmore = inputStream.readLine(line);
-      contents = contents + (contents.length == 0 ? "" : "\n") + line.value;
-    } while (hasmore);
-    let expected = "# Auto generated contents. Do not edit.\n" +
-                  "MBIxEDAOBgNVBAMTB1Rlc3QgQ0E=\n" +
-                  " X1o=\n" +
-                  "YW5vdGhlciBpbWFnaW5hcnkgaXNzdWVy\n" +
-                  " YW5vdGhlciBzZXJpYWwu\n" +
-                  " c2VyaWFsMi4=";
-    equal(contents, expected, "revocations.txt should be as expected");
-
-    // Check the blocklisted intermediate now causes a failure
-    let file = "tlsserver/test-int-ee.der";
-    verify_cert(file, SEC_ERROR_REVOKED_CERTIFICATE);
-
-    // Check a non-blocklisted chain still validates OK
-    file = "tlsserver/default-ee.der";
-    verify_cert(file, Cr.NS_OK);
-
-    // Check a bad cert is still bad (unknown issuer)
-    file = "tlsserver/unknown-issuer.der";
-    verify_cert(file, SEC_ERROR_UNKNOWN_ISSUER);
-
-    // check that save with no further update is a no-op
-    let lastModified = revocations.lastModifiedTime;
-    // add an already existing entry
-    certList.addRevokedCert("YW5vdGhlciBpbWFnaW5hcnkgaXNzdWVy","c2VyaWFsMi4=");
-    certList.saveEntries();
-    let newModified = revocations.lastModifiedTime;
-    equal(lastModified, newModified,
-          "saveEntries with no modifications should not update the backing file");
-
-    run_next_test();
-  });
-
-  // we need to start the async portions of the test
-  run_next_test();
-}
deleted file mode 100644
--- a/security/manager/ssl/tests/unit/test_onecrl/sample_revocations.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-# a sample revocations.txt for tests
-# Lines starting with '#' are ignored - as are empty lines like this:
-
-# otherwise:
-# non-empty lines are treated as base-64 encoded DER issuer data
-# ...unless the line starts with a ' ' (space) character, in which case it's
-# assumed to be base-64 encoded DER serial data.
-
-# First a serial with no issuer to ensure this doesn't cause parsing to fail
-# (there should be an issuer first, but we need to test this won't fail)
- dGVzdA==
-# next, let's ensure data that isn't valid base64 doesn't cause breakage.
- this serial isn't valid base64 (but then there's no issuer anyway)
-Neither is this issuer, though the serial is fine
- dGVzdA==
-dGVzdA==
- in this case, issuer is fine but not the serial
-# Next two entries; we can add valid base-64 encoded data for some basic tests:
-# issuer is "some imaginary issuer" base-64 encoded
-# and serial "serial." base-64 encoded
-c29tZSBpbWFnaW5hcnkgaXNzdWVy
- c2VyaWFsLg==
-# issuer is "another imaginary issuer" base-64 encoded
-# serials are "serial." and "serial2." base-64 encoded
-YW5vdGhlciBpbWFnaW5hcnkgaXNzdWVy
- c2VyaWFsLg==
- c2VyaWFsMi4=
index 904cb849b801ebbde2ae0da2b7f364ee575bc0d2..0c46e9e0ec62ed7add81e3463f3fb1911a856e6a
GIT binary patch
literal 294912
zc%1CL2V4_P_rIMGx*$q#N~Cu;bQB8$(mO~O0tubaLP-}C><xSG4I9`MY$$dVL=+Vj
z3-(@b`<qP`Q6QH4d3^Z&KkvCTyC*qwW@l&5e0LI(-QYl<6gridn3<D7rW37kV{mvp
zZa9&M!{JWwA2PTOB=`^U@1Emvzvcwa;;xiD?-NdvC5>Y%@lLYpS(8{^{3iea00000
z00000000000000000000000000000000000000000000000000000000000000000
z0000000000000000000000000000000000000000!2fB6OG>J#>EI($XcTH;LK-=R
zLd(q!$cs-;Nsw|0a&r!GBYOI|x`h)3KBB)L@tdD$OeP^#CPO6zHG~RkNGHcr)4!FF
z{GkScuX7F7Ca&U=YFaw@7(sk)UVJJwf&Q(8#1A!K-ma}6nK%<9)im1oBPBOCkDBwX
zi1-hc2%Vkla3GnCx5i7U>FD66+0x1J>C|uDZ-y9FPl)pfAGhzL`5hAw<mu}i6hZWM
ziy(&jc?O2Mp<8hA_Z#Ws=@LS89^oGpVooF@{0E8uu;M?gQCsi=`U(ks$pL-pfIf8)
zJVlE**q{qrbYX`s?9qh-x^P4nWONbFUpNY?LWD~}jfj<CDcp{YU}-B@+6k8Sf~A9C
z=_pu|1<QEBGC|NVVe^FT6WCTlTTru=pk^yU%~pb%tpqh&32L?y)NCz?vKB;H3!<zA
zQPzSeJAv0u;I$KY?F3#sp;u6+ouE#8K}iSUQqY5fJ+(rFHX3UsXsr#x$4by-%oOys
zptQB1w6&nL4I(TpEGT@%TClVcENul#blWz9t=b5-Y9lx<wt`q&L98tzd<Bh7pxRp7
zSlg01Osfv_y8<>Hrfr95*J0Xsm=51eyN)osjxf89FuRU0yY?`<j^@~PG{>%^Id&b*
zvFm7#T}N~5I+|nG(Hy?%*kO`8%=iv7p~IwfnA8q4@tY|~1fdz<(VTd+ITTwmLWvjj
zxC0`fqkrujO-N#rYHm7soKQZp(^KfwSaKdcQ}8_Y+aQf4eKQGs*%O!GFYvsNs07Lg
zR{#J2000000000000000000000000000000000000000000000000000000000000
z000000000000000000000000000000000000000000000000000002+|2L$4WckZ%
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
--- a/security/manager/ssl/tests/unit/tlsserver/generate_certs.sh
+++ b/security/manager/ssl/tests/unit/tlsserver/generate_certs.sh
@@ -262,30 +262,28 @@ make_EE otherIssuerEE 'CN=Wrong CA Pin T
 export_cert localhostAndExampleCom default-ee.der
 
 # A cert that is like localhostAndExampleCom, but with a different serial number for
 # testing the "OCSP response is from the right issuer, but it is for the wrong cert"
 # case.
 make_EE ocspOtherEndEntity 'CN=Other Cert' testCA "localhost,*.example.com"
 
 make_INT testINT 'CN=Test Intermediate' testCA
-export_cert testINT test-int.der
 make_EE ocspEEWithIntermediate 'CN=Test End-entity with Intermediate' testINT "localhost,*.example.com"
 make_EE expired 'CN=Expired Test End-entity' testCA "expired.example.com" "-w -400"
 export_cert expired expired-ee.der
 make_EE mismatch 'CN=Mismatch Test End-entity' testCA "doesntmatch.example.com"
 make_EE selfsigned 'CN=Self-signed Test End-entity' testCA "selfsigned.example.com" "-x"
 # If the certificate 'CN=Test Intermediate' isn't loaded into memory,
 # this certificate will have an unknown issuer.
 # deletedINT is never kept in the database, so it always gets regenerated.
 # That's ok, because if unknownissuer was already in the database, it won't
 # get regenerated. Either way, deletedINT will then be removed again.
 make_INT deletedINT 'CN=Test Intermediate to delete' testCA
 make_EE unknownissuer 'CN=Test End-entity from unknown issuer' deletedINT "unknownissuer.example.com"
-export_cert unknownissuer unknown-issuer.der
 
 $RUN_MOZILLA $CERTUTIL -d $DB_ARGUMENT -D -n deletedINT
 
 make_INT expiredINT 'CN=Expired Test Intermediate' testCA "-w -400"
 make_EE expiredissuer 'CN=Test End-entity with expired issuer' expiredINT "expiredissuer.example.com"
 NSS_ALLOW_WEAK_SIGNATURE_ALG=1 make_EE md5signature 'CN=Test End-entity with MD5 signature' testCA "md5signature.example.com" "-Z MD5"
 make_EE untrustedissuer 'CN=Test End-entity with untrusted issuer' otherCA "untrustedissuer.example.com"
 
@@ -317,13 +315,9 @@ make_EE_with_nsCertType nsCertTypeCritic
 
 # Make an X.509 version 1 certificate that will issue another certificate.
 # By default, this causes an error in verification that we allow overrides for.
 # However, if the v1 certificate is a trust anchor, then verification succeeds.
 make_V1 v1Cert 'CN=V1 Cert' testCA
 export_cert v1Cert v1Cert.der
 make_EE eeIssuedByV1Cert 'CN=EE Issued by V1 Cert' v1Cert "localhost,*.example.com"
 
-# Make a valid EE using testINT to test OneCRL revocation of testINT
-make_EE eeIssuedByIntermediate 'CN=EE issued by intermediate' testINT "localhost"
-export_cert eeIssuedByIntermediate test-int-ee.der
-
 cleanup
index 3717715c1761ee76d5a4ec15039d0cdfa90d9aca..2a9b36051bcadba393a58a78532768392e7d7078
GIT binary patch
literal 458752
zc%1Cr2UJt*);IcuUIZ!9dr$!p4G=;=q&MkJkWNBJKzfH|6bk}^4HbJ=?7g9)f&~jA
zh}cC1u{WeD-XxpzMsoO`<cvGUJ>!1w{Egvymj0P*&pm^A2no^G+bupLS~F%|S`sxw
z(-=1&hsWcrH8pWKTm$2mB#upp@k`*Z-{W!IHQ)@oge9<FIFY;%T!AEZJ^yAtJ>M#C
zC@&<hk%xK!0000000000000000000000000000000000000000000000000000000
z000000000000000000000000000000000000D%9iBnk^FsHx%U`WaMOVsuh;2GyRL
zLH*Y%V&~&v<L991XJhN;p!u&q)zpoT()99~<!<8>sOjnus5#qXmiKH2O-~O^J5LWs
zw^??6nm!I*ZZ>ufQ#Io=qLU2&S&a0iiwG&$so`<)$x+cc>8Xi~KMkj5X3S&#KKx(T
z4>$bRnW(Lhkb;61KA80Zk#ni>QOW7)UTN`J)Qo81k>+N3*gMS8WQEKY*dL&&OEn}K
z=~)Z1t`WexMk19Koyh(Wp;6ahh5vR9V?9R!Aq5pJeE2_YXVMa)BQw|^A~@<ABk>rW
z80y*a3n?i5>;EP`Jv}ozjr}nKqb~DL`fpdE80sw{<AoKpwD8MKSvMIwW}oqmy4n7|
z0QVct#@5rvZ>lDh$oR#$-Ka*4U&hRH)*mqc#E|(%6y|R!%->R2zh!<1g~U9VFb`zr
z!IXKRFb`(T1C@E8F%D*|OA-G$vaU!pVjcha?~qtW6V{Q;I-0VM6xPv<b)>S6G}bYa
z)!0An{nH=o+~}Wk)|HJ|S2ki@*@$&zBi5CTSXVY;UD=pbWz4EFW>p!ps*G7xWL8RM
zrDRr0W~JnRQr0!etZSOGK9cg!ku^cq|EUr2pL1rd5vyAgk->=7^2jM`)~t^<W_`3V
z>!V4;e?I!35B%p(j9Et#>uAC{GXL8o)_;}6`md5$w~Gm@)`V4SLj31Xn6;77CdMRV
z6GQf?5&QJ74<NBmP1vVo_NgiRl=45PWOf;uT}Eb?k=bSBf0dEh?U32+klF2!+3k?o
z?U32+klF2!+3he+&Df_@_9=~h8p%G5VxLB{Ph<Y)l=X@5&nb=F4vpDPlnIp>MPp5z
zLS$jjmu#kI%qOJar1gKg^JD)l4L4+;^E2+E1q2xfJT}C<yO#K80RR910000000000
z00000000000000000000000000000000000000000000000000000000000000000
z0000000000000000002~w;87_#yIK}ZO0YuFWQdvV_&c?>>1XI-NLS5XR#yL9&9tV
z1}noBVtH697Kepn{+K&vkIlf0Fg;8YQ@|uK!J=P9KZ@QLbriK1H5FYex=?iDzy1FO
z00000000000000000000000000000000000000000000000000000000000000000
z0000000000000000000000000000000RJ}<;TOQm1h-V^uui6Zh?vYgQM~$P`XtuL
zndXp*tdnCsQQEAN1IGghtdkwTg|t{FoB9GZSto027ih3fD(}5hXPqo-xTVHADX#KS
zWt|kI1gfx3vj2oDvrbYi(v?^z@j-7CStpUW9tGA((2+CptP`*Id2*~1mmQT8SSNNJ
z$7ES27IiCRSSKa}FQi!~2Hx+aSSORC?vH1kXoQ`UWSuBdZ%eRF#_zv0j&&k>Bu$)k
z!f&}xjCrE)t2j@Tb<&f3NrZLs*>Juv>!fSNDk0X%OBzX#b<$1|7GRy+i~GXQI=Rsz
z%O}h)AgXXVxmk=cVI9m8hyB9(u<zI>tQ&icJ;xqltymM*h&5n!*m>*}b`(2+?ZLKV
zo3M4*Dr`Acf)!&JmWO3xDcD>r2BTsjSODgOxns_l9piEU00000000000000000000
z00000000000000000000000000000000000000000000000000000000000000000
z00000000000RC4I;K$*0n1{*C!zAWmBJ-flJP?=%E#^U!dC*`U)R_l0=0TNtP+=aF
znFl52L6Lb-U>@X|2RY_p0`nltJjgH)(#(St^Dv%ykYpYtn1^x9gE;db#yp5J4<gKi
zF!Lb9JP0xm0?Y$H^T5Z?j}sMR{9ou4-Na!7*f;DQ)`303nz5VMW$Y|=6x)Yw!`5Rf
zuo8@p<zlH=JVwO=F>h=ZW`mhwhL|3vg(+dum?(xX8Yuc!^scC*=uuHK<8lB100000
z00000000000000000000000000000000000000000000000000000000000000000
z0000000000000000000000000{#%6kW$?RjK{_Mr<dJpK$U1Rk)gD<1BdgZPsyVW1
zjI8P-tJ=t_I<l&atjZ&+(#WbfvMP+M@*}I<$U0$Ul^t1SMpo&ORcd4%Ke9@WtP&&Z
zxRF(SWEC4(MMqYVkyUtP6&hIuM^=H6m49UA6XKT<WnPCdI-R1MIBWp>hP}f&ut!)k
zb`!gdoyCq~`><`;dTa$&g3+;DEES8#s8}H8jm^SrFf+^$)5EkdB}^I<#qdP~Mc<0v
z6?GInDr#n24gdfE00000000000000000000000000000000000000000000000000
z0000000000000000000000000000000000000000006*$%gDcLuQRev9$6=itP@98
z?U9u*vTBX2nj@>m$f`cFs*S9wBdf~DsywnPjjW0ztHQ`CKeEb=tP@67*^yOdWR)IS
zrAF5ABdg@dDlxK-8(GCiR<V&)bYvA7S%pVdp^;T^WEB`$`A1ehA$}QA=5-jO(<v~*
z6&MvwF0v{Z#JUTo7CK<Uh1rE+m}Ws?(Sw4+MV||zuuVnF3T_n27Nr(m!F({YqB#Yw
zMLP;Qu%;pjthlhJpsH|R;gh0TY%X@Hu=2nC$p8QV0000000000000000000000000
z00000000000000000000000000000000000000000000000000000000000000000
z0KorO6!}Sbkpr8Xd;>ewGZzZ(yx8op#Pf&oVjX6%ZD@fA7TD|@sqJ@d!g=Wy--(;#
zCNqNw6TOc|S1oRN{y1{3ed9YpI=^b<BxW$%<Vc#kd&2;~>4j&}FB7q%TT!kPnZbiI
zjn|(jCm$zm)_oV_bKSGY)@QahGYD?1JNi`Ugy+3$-zGcCe?Dzv<61{x26+z&RpSr8
zpW#YM2=+NT)O(_R%~UOBa8_vC%gVvBbAGY4!_A(F6<0lS_h~W%t(fNuSQWkVlZC_u
zk2e?j`Zvrtp}`C=?|i>*%CWeh)s{(FQ3syj1lkhRnSoJ;AIYrw2mZuDow(yeO2HQU
zr_j}y!Ays$A)|^JKgQP_P&+<*@xH3i&tFxUfy4Zh<u`xnWxH&R7oE8dFSN?+lAj7Q
zuzT25HS2vPUZn8N#n5T(58^3HTa=l>pRPE8y(^dhYRJ2EVU>_GzREfKsuDAJdi7ky
z9Ub4*{ja{}&HEWFBz93cK#>_#o?KZlLq%wk+u3n-N8H>6O-q9<6<8G?dvacEzJEI~
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%0AY@L&2aX;eD>h@7&q2jR
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
IG0{^00Oa}GrvLx|
deleted file mode 100644
index d1c019f78d34a9454c22fd5b23b642482f72e74c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index afac61f517454353e10a1896f32699104d78266d..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e3c286ebc8f0a9653c1710560b9eb3c99ad7fa58..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
--- a/security/manager/ssl/tests/unit/xpcshell.ini
+++ b/security/manager/ssl/tests/unit/xpcshell.ini
@@ -13,17 +13,16 @@ support-files =
   test_name_constraints/**
   test_cert_trust/**
   test_cert_version/**
   test_cert_eku/**
   test_ocsp_url/**
   test_ocsp_fetch_method/**
   test_keysize/**
   test_pinning_dynamic/**
-  test_onecrl/**
 
 [test_datasignatureverifier.js]
 [test_hash_algorithms.js]
 [test_hmac.js]
 
 [test_sts_preloadlist_perwindowpb.js]
 [test_sts_preloadlist_selfdestruct.js]
 [test_sts_holepunch.js]
@@ -37,18 +36,16 @@ support-files =
 [test_sss_savestate.js]
 
 [test_pinning_dynamic.js]
 [test_pinning_header_parsing.js]
 
 [test_certificate_usages.js]
 [test_ocsp_stapling.js]
 run-sequentially = hardcoded ports
-[test_cert_blocklist.js]
-skip-if = buildapp == "b2g"
 [test_ocsp_stapling_expired.js]
 run-sequentially = hardcoded ports
 [test_ocsp_stapling_with_intermediate.js]
 run-sequentially = hardcoded ports
 [test_ocsp_caching.js]
 run-sequentially = hardcoded ports
 [test_ocsp_required.js]
 run-sequentially = hardcoded ports
--- a/toolkit/mozapps/extensions/nsBlocklistService.js
+++ b/toolkit/mozapps/extensions/nsBlocklistService.js
@@ -69,20 +69,16 @@ var gBlocklistLevel = DEFAULT_LEVEL;
 XPCOMUtils.defineLazyServiceGetter(this, "gConsole",
                                    "@mozilla.org/consoleservice;1",
                                    "nsIConsoleService");
 
 XPCOMUtils.defineLazyServiceGetter(this, "gVersionChecker",
                                    "@mozilla.org/xpcom/version-comparator;1",
                                    "nsIVersionComparator");
 
-XPCOMUtils.defineLazyServiceGetter(this, "gCertBlocklistService",
-                                   "@mozilla.org/security/certblocklist;1",
-                                   "nsICertBlocklist");
-
 XPCOMUtils.defineLazyGetter(this, "gPref", function bls_gPref() {
   return Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService).
          QueryInterface(Ci.nsIPrefBranch);
 });
 
 XPCOMUtils.defineLazyGetter(this, "gApp", function bls_gApp() {
   return Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo).
          QueryInterface(Ci.nsIXULRuntime);
@@ -724,23 +720,16 @@ Blocklist.prototype = {
 #      </emItems>
 #      <pluginItems>
 #        <pluginItem blockID="i4">
 #          <!-- All match tags must match a plugin to blocklist a plugin -->
 #          <match name="name" exp="some plugin"/>
 #          <match name="description" exp="1[.]2[.]3"/>
 #        </pluginItem>
 #      </pluginItems>
-#      <certItems>
-#        <!-- issuerName is the DER issuer name data base64 encoded... -->
-#        <certItem issuerName="MA0xCzAJBgNVBAMMAmNh">
-#          <!-- ... as is the serial number DER data -->
-#          <serialNumber>AkHVNA==</serialNumber>
-#        </certItem>
-#      </certItems>
 #    </blocklist>
    */
 
   _loadBlocklistFromFile: function Blocklist_loadBlocklistFromFile(file) {
     if (!gBlocklistEnabled) {
       LOG("Blocklist::_loadBlocklistFromFile: blocklist is disabled");
       return;
     }
@@ -868,27 +857,22 @@ Blocklist.prototype = {
         case "emItems":
           this._addonEntries = this._processItemNodes(element.childNodes, "em",
                                                       this._handleEmItemNode);
           break;
         case "pluginItems":
           this._pluginEntries = this._processItemNodes(element.childNodes, "plugin",
                                                        this._handlePluginItemNode);
           break;
-        case "certItems":
-          this._processItemNodes(element.childNodes, "cert",
-                                 this._handleCertItemNode.bind(this));
-          break;
         default:
           Services.obs.notifyObservers(element,
                                        "blocklist-data-" + element.localName,
                                        null);
         }
       }
-      gCertBlocklistService.saveEntries();
     }
     catch (e) {
       LOG("Blocklist::_loadBlocklistFromFile: Error constructing blocklist " + e);
       return;
     }
   },
 
   _processItemNodes: function Blocklist_processItemNodes(itemNodes, prefix, handler) {
@@ -900,30 +884,16 @@ Blocklist.prototype = {
           blocklistElement.localName != itemName)
         continue;
 
       handler(blocklistElement, result);
     }
     return result;
   },
 
-  _handleCertItemNode: function Blocklist_handleCertItemNode(blocklistElement,
-                                                             result) {
-    let issuer = blocklistElement.getAttribute("issuerName");
-    for (let snElement of blocklistElement.children) {
-      try {
-        gCertBlocklistService.addRevokedCert(issuer, snElement.textContent);
-      } catch (e) {
-        // we want to keep trying other elements since missing all items
-        // is worse than missing one
-        LOG("Blocklist::_handleCertItemNode: Error adding revoked cert " + e);
-      }
-    }
-  },
-
   _handleEmItemNode: function Blocklist_handleEmItemNode(blocklistElement, result) {
     if (!matchesOSABI(blocklistElement))
       return;
 
     let blockEntry = {
       versions: [],
       prefs: [],
       blockID: null,