security/manager/ssl/nsDataSignatureVerifier.h
author Cykesiopka <cykesiopka.bmo@gmail.com>
Tue, 12 Apr 2016 18:09:06 -0700
changeset 293006 2c9daa36cfd7d8ba0a75220cb9453817f816acde
parent 245927 ff4f7f2aabb147682823177dcfa80a12b0ecb759
child 389854 d0104efea23b0ae7d504dca297ea3761bb5ccc7c
permissions -rw-r--r--
Bug 1029173 - Clean up nsDataSignatureVerifier. r=keeler This patch does the following: - Implements nsNSSShutDownObject. - Replaces more raw pointers with smart pointers. - Fixes other misc issues. MozReview-Commit-ID: HulWdonEbP8

/* 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 nsDataSignatureVerifier_h
#define nsDataSignatureVerifier_h

#include "certt.h"
#include "nsIDataSignatureVerifier.h"
#include "nsNSSShutDown.h"

#define NS_DATASIGNATUREVERIFIER_CID \
    { 0x296d76aa, 0x275b, 0x4f3c, \
    { 0xaf, 0x8a, 0x30, 0xa4, 0x02, 0x6c, 0x18, 0xfc } }
#define NS_DATASIGNATUREVERIFIER_CONTRACTID \
    "@mozilla.org/security/datasignatureverifier;1"

class nsDataSignatureVerifier final : public nsIDataSignatureVerifier
                                    , public nsNSSShutDownObject
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIDATASIGNATUREVERIFIER

  nsDataSignatureVerifier()
  {
  }

private:
  ~nsDataSignatureVerifier();

  // Nothing to release.
  virtual void virtualDestroyNSSReference() override {}
};

namespace mozilla {

nsresult VerifyCMSDetachedSignatureIncludingCertificate(
  const SECItem& buffer, const SECItem& detachedDigest,
  nsresult (*verifyCertificate)(CERTCertificate* cert, void* context,
                                void* pinArg),
  void* verifyCertificateContext, void* pinArg,
  const nsNSSShutDownPreventionLock& proofOfLock);

} // namespace mozilla

#endif // nsDataSignatureVerifier_h