/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/security/manager/ssl/nsIX509CertDB.idl
 */

#ifndef __gen_nsIX509CertDB_h__
#define __gen_nsIX509CertDB_h__


#include "nsISupports.h"

#include "nsTArray.h"

#include "js/Value.h"

#include "js/GCAnnotations.h"

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIArray; /* forward declaration */

class nsIX509Cert; /* forward declaration */

class nsIFile; /* forward declaration */

class nsIInterfaceRequestor; /* forward declaration */

class nsIZipReader; /* forward declaration */

class nsIInputStream; /* forward declaration */

// %{C++:16-16
#define NS_X509CERTDB_CONTRACTID "@mozilla.org/security/x509certdb;1"
// %}
typedef uint32_t  AppTrustedRoot;


/* starting interface:    nsIAppSignatureInfo */
#define NS_IAPPSIGNATUREINFO_IID_STR "e5795418-86e0-4c0b-9b98-ac7eee0c2af7"

#define NS_IAPPSIGNATUREINFO_IID \
  {0xe5795418, 0x86e0, 0x4c0b, \
    { 0x9b, 0x98, 0xac, 0x7e, 0xee, 0x0c, 0x2a, 0xf7 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIAppSignatureInfo) nsIAppSignatureInfo : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IAPPSIGNATUREINFO_IID)

  /* Used by ToJSValue to check which scriptable interface is implemented. */
  using ScriptableInterfaceType = nsIAppSignatureInfo;

  enum MOZ_BINDING(binding_to, idl, class, XPIDL_nsIAppSignatureInfo_SignatureAlgorithm) SignatureAlgorithm : uint32_t {
    PKCS7_WITH_SHA1 MOZ_BINDING(binding_to, idl, const, XPIDL_nsIAppSignatureInfo_SignatureAlgorithm_PKCS7_WITH_SHA1) = 0,
    PKCS7_WITH_SHA256 MOZ_BINDING(binding_to, idl, const, XPIDL_nsIAppSignatureInfo_SignatureAlgorithm_PKCS7_WITH_SHA256) = 1,
    COSE_WITH_SHA256 MOZ_BINDING(binding_to, idl, const, XPIDL_nsIAppSignatureInfo_SignatureAlgorithm_COSE_WITH_SHA256) = 2,
  };

  /* readonly attribute nsIX509Cert signerCert; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIAppSignatureInfo_signerCert)
  NS_IMETHOD GetSignerCert(nsIX509Cert **aSignerCert) = 0;

  /* readonly attribute nsIAppSignatureInfo_SignatureAlgorithm signatureAlgorithm; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIAppSignatureInfo_signatureAlgorithm)
  NS_IMETHOD GetSignatureAlgorithm(nsIAppSignatureInfo::SignatureAlgorithm *aSignatureAlgorithm) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIAPPSIGNATUREINFO \
  NS_IMETHOD GetSignerCert(nsIX509Cert **aSignerCert) override; \
  NS_IMETHOD GetSignatureAlgorithm(nsIAppSignatureInfo::SignatureAlgorithm *aSignatureAlgorithm) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIAPPSIGNATUREINFO \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIAppSignatureInfo_signerCert)\
  nsresult GetSignerCert(nsIX509Cert **aSignerCert); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIAppSignatureInfo_signatureAlgorithm)\
  nsresult GetSignatureAlgorithm(nsIAppSignatureInfo::SignatureAlgorithm *aSignatureAlgorithm); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIAPPSIGNATUREINFO(_to) \
  NS_IMETHOD GetSignerCert(nsIX509Cert **aSignerCert) override { return _to GetSignerCert(aSignerCert); } \
  NS_IMETHOD GetSignatureAlgorithm(nsIAppSignatureInfo::SignatureAlgorithm *aSignatureAlgorithm) override { return _to GetSignatureAlgorithm(aSignatureAlgorithm); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIAPPSIGNATUREINFO(_to) \
  NS_IMETHOD GetSignerCert(nsIX509Cert **aSignerCert) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSignerCert(aSignerCert); } \
  NS_IMETHOD GetSignatureAlgorithm(nsIAppSignatureInfo::SignatureAlgorithm *aSignatureAlgorithm) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSignatureAlgorithm(aSignatureAlgorithm); } 


/* starting interface:    nsIOpenSignedAppFileCallback */
#define NS_IOPENSIGNEDAPPFILECALLBACK_IID_STR "fc2b60e5-9a07-47c2-a2cd-b83b68a660ac"

#define NS_IOPENSIGNEDAPPFILECALLBACK_IID \
  {0xfc2b60e5, 0x9a07, 0x47c2, \
    { 0xa2, 0xcd, 0xb8, 0x3b, 0x68, 0xa6, 0x60, 0xac }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIOpenSignedAppFileCallback) nsIOpenSignedAppFileCallback : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IOPENSIGNEDAPPFILECALLBACK_IID)

  /* Used by ToJSValue to check which scriptable interface is implemented. */
  using ScriptableInterfaceType = nsIOpenSignedAppFileCallback;

  /* void openSignedAppFileFinished (in nsresult rv, in nsIZipReader aZipReader, in Array<nsIAppSignatureInfo> aSignatureInfos); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOpenSignedAppFileCallback_openSignedAppFileFinished)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD OpenSignedAppFileFinished(nsresult rv, nsIZipReader *aZipReader, const nsTArray<RefPtr<nsIAppSignatureInfo>>& aSignatureInfos) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIOPENSIGNEDAPPFILECALLBACK \
  NS_IMETHOD OpenSignedAppFileFinished(nsresult rv, nsIZipReader *aZipReader, const nsTArray<RefPtr<nsIAppSignatureInfo>>& aSignatureInfos) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIOPENSIGNEDAPPFILECALLBACK \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOpenSignedAppFileCallback_openSignedAppFileFinished)\
  nsresult OpenSignedAppFileFinished(nsresult rv, nsIZipReader *aZipReader, const nsTArray<RefPtr<nsIAppSignatureInfo>>& aSignatureInfos); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIOPENSIGNEDAPPFILECALLBACK(_to) \
  NS_IMETHOD OpenSignedAppFileFinished(nsresult rv, nsIZipReader *aZipReader, const nsTArray<RefPtr<nsIAppSignatureInfo>>& aSignatureInfos) override { return _to OpenSignedAppFileFinished(rv, aZipReader, aSignatureInfos); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIOPENSIGNEDAPPFILECALLBACK(_to) \
  NS_IMETHOD OpenSignedAppFileFinished(nsresult rv, nsIZipReader *aZipReader, const nsTArray<RefPtr<nsIAppSignatureInfo>>& aSignatureInfos) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenSignedAppFileFinished(rv, aZipReader, aSignatureInfos); } 


/* starting interface:    nsIPDFVerificationResult */
#define NS_IPDFVERIFICATIONRESULT_IID_STR "f2d9f5e4-1234-4d5a-b789-abcdef012345"

#define NS_IPDFVERIFICATIONRESULT_IID \
  {0xf2d9f5e4, 0x1234, 0x4d5a, \
    { 0xb7, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIPDFVerificationResult) nsIPDFVerificationResult : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IPDFVERIFICATIONRESULT_IID)

  /* Used by ToJSValue to check which scriptable interface is implemented. */
  using ScriptableInterfaceType = nsIPDFVerificationResult;

  /* readonly attribute nsresult signatureResult; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIPDFVerificationResult_signatureResult)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetSignatureResult(nsresult *aSignatureResult) = 0;

  /* readonly attribute nsresult certificateResult; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIPDFVerificationResult_certificateResult)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetCertificateResult(nsresult *aCertificateResult) = 0;

  /* readonly attribute nsIX509Cert signerCertificate; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIPDFVerificationResult_signerCertificate)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetSignerCertificate(nsIX509Cert **aSignerCertificate) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIPDFVERIFICATIONRESULT \
  NS_IMETHOD GetSignatureResult(nsresult *aSignatureResult) override; \
  NS_IMETHOD GetCertificateResult(nsresult *aCertificateResult) override; \
  NS_IMETHOD GetSignerCertificate(nsIX509Cert **aSignerCertificate) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIPDFVERIFICATIONRESULT \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIPDFVerificationResult_signatureResult)\
  nsresult GetSignatureResult(nsresult *aSignatureResult); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIPDFVerificationResult_certificateResult)\
  nsresult GetCertificateResult(nsresult *aCertificateResult); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIPDFVerificationResult_signerCertificate)\
  nsresult GetSignerCertificate(nsIX509Cert **aSignerCertificate); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIPDFVERIFICATIONRESULT(_to) \
  NS_IMETHOD GetSignatureResult(nsresult *aSignatureResult) override { return _to GetSignatureResult(aSignatureResult); } \
  NS_IMETHOD GetCertificateResult(nsresult *aCertificateResult) override { return _to GetCertificateResult(aCertificateResult); } \
  NS_IMETHOD GetSignerCertificate(nsIX509Cert **aSignerCertificate) override { return _to GetSignerCertificate(aSignerCertificate); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIPDFVERIFICATIONRESULT(_to) \
  NS_IMETHOD GetSignatureResult(nsresult *aSignatureResult) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSignatureResult(aSignatureResult); } \
  NS_IMETHOD GetCertificateResult(nsresult *aCertificateResult) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCertificateResult(aCertificateResult); } \
  NS_IMETHOD GetSignerCertificate(nsIX509Cert **aSignerCertificate) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSignerCertificate(aSignerCertificate); } 


/* starting interface:    nsICertVerificationCallback */
#define NS_ICERTVERIFICATIONCALLBACK_IID_STR "49e16fc8-efac-4f57-8361-956ef6b960a4"

#define NS_ICERTVERIFICATIONCALLBACK_IID \
  {0x49e16fc8, 0xefac, 0x4f57, \
    { 0x83, 0x61, 0x95, 0x6e, 0xf6, 0xb9, 0x60, 0xa4 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsICertVerificationCallback) nsICertVerificationCallback : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_ICERTVERIFICATIONCALLBACK_IID)

  /* Used by ToJSValue to check which scriptable interface is implemented. */
  using ScriptableInterfaceType = nsICertVerificationCallback;

  /* void verifyCertFinished (in int32_t aPRErrorCode, in Array<nsIX509Cert> aVerifiedChain, in boolean aHasEVPolicy); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICertVerificationCallback_verifyCertFinished)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD VerifyCertFinished(int32_t aPRErrorCode, const nsTArray<RefPtr<nsIX509Cert>>& aVerifiedChain, bool aHasEVPolicy) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSICERTVERIFICATIONCALLBACK \
  NS_IMETHOD VerifyCertFinished(int32_t aPRErrorCode, const nsTArray<RefPtr<nsIX509Cert>>& aVerifiedChain, bool aHasEVPolicy) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSICERTVERIFICATIONCALLBACK \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICertVerificationCallback_verifyCertFinished)\
  nsresult VerifyCertFinished(int32_t aPRErrorCode, const nsTArray<RefPtr<nsIX509Cert>>& aVerifiedChain, bool aHasEVPolicy); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSICERTVERIFICATIONCALLBACK(_to) \
  NS_IMETHOD VerifyCertFinished(int32_t aPRErrorCode, const nsTArray<RefPtr<nsIX509Cert>>& aVerifiedChain, bool aHasEVPolicy) override { return _to VerifyCertFinished(aPRErrorCode, aVerifiedChain, aHasEVPolicy); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSICERTVERIFICATIONCALLBACK(_to) \
  NS_IMETHOD VerifyCertFinished(int32_t aPRErrorCode, const nsTArray<RefPtr<nsIX509Cert>>& aVerifiedChain, bool aHasEVPolicy) override { return !_to ? NS_ERROR_NULL_POINTER : _to->VerifyCertFinished(aPRErrorCode, aVerifiedChain, aHasEVPolicy); } 


/* starting interface:    nsIX509CertDB */
#define NS_IX509CERTDB_IID_STR "5c16cd9b-5a73-47f1-ab0f-11ede7495cce"

#define NS_IX509CERTDB_IID \
  {0x5c16cd9b, 0x5a73, 0x47f1, \
    { 0xab, 0x0f, 0x11, 0xed, 0xe7, 0x49, 0x5c, 0xce }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIX509CertDB) nsIX509CertDB : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IX509CERTDB_IID)

  /* Used by ToJSValue to check which scriptable interface is implemented. */
  using ScriptableInterfaceType = nsIX509CertDB;

  enum {
    UNTRUSTED MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_UNTRUSTED) = 0U,
    TRUSTED_SSL MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_TRUSTED_SSL) = 1U,
    TRUSTED_EMAIL MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_TRUSTED_EMAIL) = 2U
  };

  /* [must_use] nsIX509Cert findCertByDBKey (in ACString aDBkey); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_findCertByDBKey)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD FindCertByDBKey(const nsACString& aDBkey, nsIX509Cert **_retval) = 0;

  /* [can_run_script] void importCertificates ([array, size_is (length)] in octet data, in unsigned long length, in unsigned long type, in nsIInterfaceRequestor ctx); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_importCertificates)
  JS_HAZ_CAN_RUN_SCRIPT MOZ_CAN_RUN_SCRIPT NS_IMETHOD ImportCertificates(uint8_t *data, uint32_t length, uint32_t type, nsIInterfaceRequestor *ctx) = 0;

  /* void importEmailCertificate ([array, size_is (length)] in octet data, in unsigned long length, in nsIInterfaceRequestor ctx); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_importEmailCertificate)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD ImportEmailCertificate(uint8_t *data, uint32_t length, nsIInterfaceRequestor *ctx) = 0;

  /* void importUserCertificate ([array, size_is (length)] in octet data, in unsigned long length, in nsIInterfaceRequestor ctx); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_importUserCertificate)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD ImportUserCertificate(uint8_t *data, uint32_t length, nsIInterfaceRequestor *ctx) = 0;

  /* void deleteCertificate (in nsIX509Cert aCert); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_deleteCertificate)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD DeleteCertificate(nsIX509Cert *aCert) = 0;

  /* [must_use] void setCertTrust (in nsIX509Cert cert, in unsigned long type, in unsigned long trust); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_setCertTrust)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD SetCertTrust(nsIX509Cert *cert, uint32_t type, uint32_t trust) = 0;

  /* [must_use] void setCertTrustFromString (in nsIX509Cert cert, in ACString trustString); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_setCertTrustFromString)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD SetCertTrustFromString(nsIX509Cert *cert, const nsACString& trustString) = 0;

  /* [must_use] boolean isCertTrusted (in nsIX509Cert cert, in unsigned long certType, in unsigned long trustType); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_isCertTrusted)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD IsCertTrusted(nsIX509Cert *cert, uint32_t certType, uint32_t trustType, bool *_retval) = 0;

  /* [can_run_script,must_use] void importCertsFromFile (in nsIFile aFile, in unsigned long aType); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_importCertsFromFile)
  JS_HAZ_CAN_RUN_SCRIPT MOZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD ImportCertsFromFile(nsIFile *aFile, uint32_t aType) = 0;

  enum {
    Success MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_Success) = 0U,
    ERROR_UNKNOWN MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_ERROR_UNKNOWN) = 1U,
    ERROR_PKCS12_NOSMARTCARD_EXPORT MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_ERROR_PKCS12_NOSMARTCARD_EXPORT) = 2U,
    ERROR_PKCS12_RESTORE_FAILED MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_ERROR_PKCS12_RESTORE_FAILED) = 3U,
    ERROR_PKCS12_BACKUP_FAILED MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_ERROR_PKCS12_BACKUP_FAILED) = 4U,
    ERROR_PKCS12_CERT_COLLISION MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_ERROR_PKCS12_CERT_COLLISION) = 5U,
    ERROR_BAD_PASSWORD MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_ERROR_BAD_PASSWORD) = 6U,
    ERROR_DECODE_ERROR MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_ERROR_DECODE_ERROR) = 7U,
    ERROR_PKCS12_DUPLICATE_DATA MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_ERROR_PKCS12_DUPLICATE_DATA) = 8U
  };

  /* [must_use] uint32_t importPKCS12File (in nsIFile aFile, in AString aPassword); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_importPKCS12File)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD ImportPKCS12File(nsIFile *aFile, const nsAString& aPassword, uint32_t *_retval) = 0;

  /* [must_use] uint32_t exportPKCS12File (in nsIFile aFile, in Array<nsIX509Cert> aCerts, in AString aPassword); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_exportPKCS12File)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD ExportPKCS12File(nsIFile *aFile, const nsTArray<RefPtr<nsIX509Cert>>& aCerts, const nsAString& aPassword, uint32_t *_retval) = 0;

  /* [must_use] nsIX509Cert constructX509FromBase64 (in ACString base64); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_constructX509FromBase64)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD ConstructX509FromBase64(const nsACString& base64, nsIX509Cert **_retval) = 0;

  /* [must_use] nsIX509Cert constructX509 (in Array<uint8_t> certDER); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_constructX509)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD ConstructX509(const nsTArray<uint8_t >& certDER, nsIX509Cert **_retval) = 0;

  enum {
    AppXPCShellRoot MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_AppXPCShellRoot) = 6U,
    AddonsPublicRoot MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_AddonsPublicRoot) = 7U,
    AddonsStageRoot MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_AddonsStageRoot) = 8U
  };

  /* [must_use] void openSignedAppFileAsync (in AppTrustedRoot trustedRoot, in nsIFile aJarFile, in nsIOpenSignedAppFileCallback callback); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_openSignedAppFileAsync)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD OpenSignedAppFileAsync(AppTrustedRoot trustedRoot, nsIFile *aJarFile, nsIOpenSignedAppFileCallback *callback) = 0;

  /* [must_use] nsIX509Cert addCert (in ACString certDER, in ACString trust); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_addCert)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD AddCert(const nsACString& certDER, const nsACString& trust, nsIX509Cert **_retval) = 0;

  enum {
    FLAG_LOCAL_ONLY MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_FLAG_LOCAL_ONLY) = 1U,
    FLAG_MUST_BE_EV MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_FLAG_MUST_BE_EV) = 2U
  };

  enum MOZ_BINDING(binding_to, idl, class, XPIDL_nsIX509CertDB_VerifyUsage) VerifyUsage : uint8_t {
    verifyUsageTLSServer MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_VerifyUsage_verifyUsageTLSServer) = 1,
    verifyUsageTLSServerCA MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_VerifyUsage_verifyUsageTLSServerCA) = 2,
    verifyUsageTLSClient MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_VerifyUsage_verifyUsageTLSClient) = 3,
    verifyUsageTLSClientCA MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_VerifyUsage_verifyUsageTLSClientCA) = 4,
    verifyUsageEmailSigner MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_VerifyUsage_verifyUsageEmailSigner) = 5,
    verifyUsageEmailRecipient MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_VerifyUsage_verifyUsageEmailRecipient) = 6,
    verifyUsageEmailCA MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_VerifyUsage_verifyUsageEmailCA) = 7,
  };

  /* [must_use] void asyncVerifyCertAtTime (in nsIX509Cert aCert, in nsIX509CertDB_VerifyUsage aUsage, in uint32_t aFlags, in ACString aHostname, in uint64_t aTime, in Array<uint8_t> aSctsFromTls, in nsICertVerificationCallback aCallback); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_asyncVerifyCertAtTime)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD AsyncVerifyCertAtTime(nsIX509Cert *aCert, nsIX509CertDB::VerifyUsage aUsage, uint32_t aFlags, const nsACString& aHostname, uint64_t aTime, const nsTArray<uint8_t >& aSctsFromTls, nsICertVerificationCallback *aCallback) = 0;

  /* [must_use] void clearOCSPCache (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_clearOCSPCache)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD ClearOCSPCache(void) = 0;

  /* [must_use] nsIX509Cert addCertFromBase64 (in ACString base64, in ACString trust); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_addCertFromBase64)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD AddCertFromBase64(const nsACString& base64, const nsACString& trust, nsIX509Cert **_retval) = 0;

  /* [implicit_jscontext] Promise getCerts (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_getCerts)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetCerts(JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

  /* [must_use] ACString asPKCS7Blob (in Array<nsIX509Cert> certList); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_asPKCS7Blob)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD AsPKCS7Blob(const nsTArray<RefPtr<nsIX509Cert>>& certList, nsACString& _retval) = 0;

  /* [must_use] nsIX509Cert getAndroidCertificateFromAlias (in AString alias); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_getAndroidCertificateFromAlias)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD GetAndroidCertificateFromAlias(const nsAString& alias, nsIX509Cert **_retval) = 0;

  enum MOZ_BINDING(binding_to, idl, class, XPIDL_nsIX509CertDB_QWACType) QWACType : uint8_t {
    OneQWAC MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_QWACType_OneQWAC) = 0,
    TwoQWAC MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_QWACType_TwoQWAC) = 1,
  };

  /* [implicit_jscontext] Promise asyncVerifyQWAC (in nsIX509CertDB_QWACType type, in nsIX509Cert cert, in ACString hostname, in Array<nsIX509Cert> collectedCerts); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_asyncVerifyQWAC)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD AsyncVerifyQWAC(nsIX509CertDB::QWACType type, nsIX509Cert *cert, const nsACString& hostname, const nsTArray<RefPtr<nsIX509Cert>>& collectedCerts, JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

  enum MOZ_BINDING(binding_to, idl, class, XPIDL_nsIX509CertDB_PDFSignatureAlgorithm) PDFSignatureAlgorithm : uint8_t {
    ADBE_PKCS7_DETACHED MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_PDFSignatureAlgorithm_ADBE_PKCS7_DETACHED) = 0,
    ADBE_PKCS7_SHA1 MOZ_BINDING(binding_to, idl, const, XPIDL_nsIX509CertDB_PDFSignatureAlgorithm_ADBE_PKCS7_SHA1) = 1,
  };

  /* [implicit_jscontext] Promise asyncVerifyPKCS7Object (in Array<uint8_t> pkcs7, in Array<Array<uint8_t>> data, in nsIX509CertDB_PDFSignatureAlgorithm signatureType); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_asyncVerifyPKCS7Object)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD AsyncVerifyPKCS7Object(const nsTArray<uint8_t >& pkcs7, const nsTArray<nsTArray<uint8_t >>& data, nsIX509CertDB::PDFSignatureAlgorithm signatureType, JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIX509CERTDB \
  [[nodiscard]] NS_IMETHOD FindCertByDBKey(const nsACString& aDBkey, nsIX509Cert **_retval) override; \
  MOZ_CAN_RUN_SCRIPT NS_IMETHOD ImportCertificates(uint8_t *data, uint32_t length, uint32_t type, nsIInterfaceRequestor *ctx) override; \
  NS_IMETHOD ImportEmailCertificate(uint8_t *data, uint32_t length, nsIInterfaceRequestor *ctx) override; \
  NS_IMETHOD ImportUserCertificate(uint8_t *data, uint32_t length, nsIInterfaceRequestor *ctx) override; \
  NS_IMETHOD DeleteCertificate(nsIX509Cert *aCert) override; \
  [[nodiscard]] NS_IMETHOD SetCertTrust(nsIX509Cert *cert, uint32_t type, uint32_t trust) override; \
  [[nodiscard]] NS_IMETHOD SetCertTrustFromString(nsIX509Cert *cert, const nsACString& trustString) override; \
  [[nodiscard]] NS_IMETHOD IsCertTrusted(nsIX509Cert *cert, uint32_t certType, uint32_t trustType, bool *_retval) override; \
  MOZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD ImportCertsFromFile(nsIFile *aFile, uint32_t aType) override; \
  [[nodiscard]] NS_IMETHOD ImportPKCS12File(nsIFile *aFile, const nsAString& aPassword, uint32_t *_retval) override; \
  [[nodiscard]] NS_IMETHOD ExportPKCS12File(nsIFile *aFile, const nsTArray<RefPtr<nsIX509Cert>>& aCerts, const nsAString& aPassword, uint32_t *_retval) override; \
  [[nodiscard]] NS_IMETHOD ConstructX509FromBase64(const nsACString& base64, nsIX509Cert **_retval) override; \
  [[nodiscard]] NS_IMETHOD ConstructX509(const nsTArray<uint8_t >& certDER, nsIX509Cert **_retval) override; \
  [[nodiscard]] NS_IMETHOD OpenSignedAppFileAsync(AppTrustedRoot trustedRoot, nsIFile *aJarFile, nsIOpenSignedAppFileCallback *callback) override; \
  [[nodiscard]] NS_IMETHOD AddCert(const nsACString& certDER, const nsACString& trust, nsIX509Cert **_retval) override; \
  [[nodiscard]] NS_IMETHOD AsyncVerifyCertAtTime(nsIX509Cert *aCert, nsIX509CertDB::VerifyUsage aUsage, uint32_t aFlags, const nsACString& aHostname, uint64_t aTime, const nsTArray<uint8_t >& aSctsFromTls, nsICertVerificationCallback *aCallback) override; \
  [[nodiscard]] NS_IMETHOD ClearOCSPCache(void) override; \
  [[nodiscard]] NS_IMETHOD AddCertFromBase64(const nsACString& base64, const nsACString& trust, nsIX509Cert **_retval) override; \
  NS_IMETHOD GetCerts(JSContext* cx, ::mozilla::dom::Promise * * _retval) override; \
  [[nodiscard]] NS_IMETHOD AsPKCS7Blob(const nsTArray<RefPtr<nsIX509Cert>>& certList, nsACString& _retval) override; \
  [[nodiscard]] NS_IMETHOD GetAndroidCertificateFromAlias(const nsAString& alias, nsIX509Cert **_retval) override; \
  NS_IMETHOD AsyncVerifyQWAC(nsIX509CertDB::QWACType type, nsIX509Cert *cert, const nsACString& hostname, const nsTArray<RefPtr<nsIX509Cert>>& collectedCerts, JSContext* cx, ::mozilla::dom::Promise * * _retval) override; \
  NS_IMETHOD AsyncVerifyPKCS7Object(const nsTArray<uint8_t >& pkcs7, const nsTArray<nsTArray<uint8_t >>& data, nsIX509CertDB::PDFSignatureAlgorithm signatureType, JSContext* cx, ::mozilla::dom::Promise * * _retval) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIX509CERTDB \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_findCertByDBKey)\
  [[nodiscard]] nsresult FindCertByDBKey(const nsACString& aDBkey, nsIX509Cert **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_importCertificates)\
  MOZ_CAN_RUN_SCRIPT nsresult ImportCertificates(uint8_t *data, uint32_t length, uint32_t type, nsIInterfaceRequestor *ctx); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_importEmailCertificate)\
  nsresult ImportEmailCertificate(uint8_t *data, uint32_t length, nsIInterfaceRequestor *ctx); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_importUserCertificate)\
  nsresult ImportUserCertificate(uint8_t *data, uint32_t length, nsIInterfaceRequestor *ctx); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_deleteCertificate)\
  nsresult DeleteCertificate(nsIX509Cert *aCert); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_setCertTrust)\
  [[nodiscard]] nsresult SetCertTrust(nsIX509Cert *cert, uint32_t type, uint32_t trust); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_setCertTrustFromString)\
  [[nodiscard]] nsresult SetCertTrustFromString(nsIX509Cert *cert, const nsACString& trustString); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_isCertTrusted)\
  [[nodiscard]] nsresult IsCertTrusted(nsIX509Cert *cert, uint32_t certType, uint32_t trustType, bool *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_importCertsFromFile)\
  MOZ_CAN_RUN_SCRIPT [[nodiscard]] nsresult ImportCertsFromFile(nsIFile *aFile, uint32_t aType); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_importPKCS12File)\
  [[nodiscard]] nsresult ImportPKCS12File(nsIFile *aFile, const nsAString& aPassword, uint32_t *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_exportPKCS12File)\
  [[nodiscard]] nsresult ExportPKCS12File(nsIFile *aFile, const nsTArray<RefPtr<nsIX509Cert>>& aCerts, const nsAString& aPassword, uint32_t *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_constructX509FromBase64)\
  [[nodiscard]] nsresult ConstructX509FromBase64(const nsACString& base64, nsIX509Cert **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_constructX509)\
  [[nodiscard]] nsresult ConstructX509(const nsTArray<uint8_t >& certDER, nsIX509Cert **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_openSignedAppFileAsync)\
  [[nodiscard]] nsresult OpenSignedAppFileAsync(AppTrustedRoot trustedRoot, nsIFile *aJarFile, nsIOpenSignedAppFileCallback *callback); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_addCert)\
  [[nodiscard]] nsresult AddCert(const nsACString& certDER, const nsACString& trust, nsIX509Cert **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_asyncVerifyCertAtTime)\
  [[nodiscard]] nsresult AsyncVerifyCertAtTime(nsIX509Cert *aCert, nsIX509CertDB::VerifyUsage aUsage, uint32_t aFlags, const nsACString& aHostname, uint64_t aTime, const nsTArray<uint8_t >& aSctsFromTls, nsICertVerificationCallback *aCallback); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_clearOCSPCache)\
  [[nodiscard]] nsresult ClearOCSPCache(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_addCertFromBase64)\
  [[nodiscard]] nsresult AddCertFromBase64(const nsACString& base64, const nsACString& trust, nsIX509Cert **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_getCerts)\
  nsresult GetCerts(JSContext* cx, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_asPKCS7Blob)\
  [[nodiscard]] nsresult AsPKCS7Blob(const nsTArray<RefPtr<nsIX509Cert>>& certList, nsACString& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_getAndroidCertificateFromAlias)\
  [[nodiscard]] nsresult GetAndroidCertificateFromAlias(const nsAString& alias, nsIX509Cert **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_asyncVerifyQWAC)\
  nsresult AsyncVerifyQWAC(nsIX509CertDB::QWACType type, nsIX509Cert *cert, const nsACString& hostname, const nsTArray<RefPtr<nsIX509Cert>>& collectedCerts, JSContext* cx, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIX509CertDB_asyncVerifyPKCS7Object)\
  nsresult AsyncVerifyPKCS7Object(const nsTArray<uint8_t >& pkcs7, const nsTArray<nsTArray<uint8_t >>& data, nsIX509CertDB::PDFSignatureAlgorithm signatureType, JSContext* cx, ::mozilla::dom::Promise * * _retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIX509CERTDB(_to) \
  [[nodiscard]] NS_IMETHOD FindCertByDBKey(const nsACString& aDBkey, nsIX509Cert **_retval) override { return _to FindCertByDBKey(aDBkey, _retval); } \
  MOZ_CAN_RUN_SCRIPT NS_IMETHOD ImportCertificates(uint8_t *data, uint32_t length, uint32_t type, nsIInterfaceRequestor *ctx) override { return _to ImportCertificates(data, length, type, ctx); } \
  NS_IMETHOD ImportEmailCertificate(uint8_t *data, uint32_t length, nsIInterfaceRequestor *ctx) override { return _to ImportEmailCertificate(data, length, ctx); } \
  NS_IMETHOD ImportUserCertificate(uint8_t *data, uint32_t length, nsIInterfaceRequestor *ctx) override { return _to ImportUserCertificate(data, length, ctx); } \
  NS_IMETHOD DeleteCertificate(nsIX509Cert *aCert) override { return _to DeleteCertificate(aCert); } \
  [[nodiscard]] NS_IMETHOD SetCertTrust(nsIX509Cert *cert, uint32_t type, uint32_t trust) override { return _to SetCertTrust(cert, type, trust); } \
  [[nodiscard]] NS_IMETHOD SetCertTrustFromString(nsIX509Cert *cert, const nsACString& trustString) override { return _to SetCertTrustFromString(cert, trustString); } \
  [[nodiscard]] NS_IMETHOD IsCertTrusted(nsIX509Cert *cert, uint32_t certType, uint32_t trustType, bool *_retval) override { return _to IsCertTrusted(cert, certType, trustType, _retval); } \
  MOZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD ImportCertsFromFile(nsIFile *aFile, uint32_t aType) override { return _to ImportCertsFromFile(aFile, aType); } \
  [[nodiscard]] NS_IMETHOD ImportPKCS12File(nsIFile *aFile, const nsAString& aPassword, uint32_t *_retval) override { return _to ImportPKCS12File(aFile, aPassword, _retval); } \
  [[nodiscard]] NS_IMETHOD ExportPKCS12File(nsIFile *aFile, const nsTArray<RefPtr<nsIX509Cert>>& aCerts, const nsAString& aPassword, uint32_t *_retval) override { return _to ExportPKCS12File(aFile, aCerts, aPassword, _retval); } \
  [[nodiscard]] NS_IMETHOD ConstructX509FromBase64(const nsACString& base64, nsIX509Cert **_retval) override { return _to ConstructX509FromBase64(base64, _retval); } \
  [[nodiscard]] NS_IMETHOD ConstructX509(const nsTArray<uint8_t >& certDER, nsIX509Cert **_retval) override { return _to ConstructX509(certDER, _retval); } \
  [[nodiscard]] NS_IMETHOD OpenSignedAppFileAsync(AppTrustedRoot trustedRoot, nsIFile *aJarFile, nsIOpenSignedAppFileCallback *callback) override { return _to OpenSignedAppFileAsync(trustedRoot, aJarFile, callback); } \
  [[nodiscard]] NS_IMETHOD AddCert(const nsACString& certDER, const nsACString& trust, nsIX509Cert **_retval) override { return _to AddCert(certDER, trust, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncVerifyCertAtTime(nsIX509Cert *aCert, nsIX509CertDB::VerifyUsage aUsage, uint32_t aFlags, const nsACString& aHostname, uint64_t aTime, const nsTArray<uint8_t >& aSctsFromTls, nsICertVerificationCallback *aCallback) override { return _to AsyncVerifyCertAtTime(aCert, aUsage, aFlags, aHostname, aTime, aSctsFromTls, aCallback); } \
  [[nodiscard]] NS_IMETHOD ClearOCSPCache(void) override { return _to ClearOCSPCache(); } \
  [[nodiscard]] NS_IMETHOD AddCertFromBase64(const nsACString& base64, const nsACString& trust, nsIX509Cert **_retval) override { return _to AddCertFromBase64(base64, trust, _retval); } \
  NS_IMETHOD GetCerts(JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to GetCerts(cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsPKCS7Blob(const nsTArray<RefPtr<nsIX509Cert>>& certList, nsACString& _retval) override { return _to AsPKCS7Blob(certList, _retval); } \
  [[nodiscard]] NS_IMETHOD GetAndroidCertificateFromAlias(const nsAString& alias, nsIX509Cert **_retval) override { return _to GetAndroidCertificateFromAlias(alias, _retval); } \
  NS_IMETHOD AsyncVerifyQWAC(nsIX509CertDB::QWACType type, nsIX509Cert *cert, const nsACString& hostname, const nsTArray<RefPtr<nsIX509Cert>>& collectedCerts, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to AsyncVerifyQWAC(type, cert, hostname, collectedCerts, cx, _retval); } \
  NS_IMETHOD AsyncVerifyPKCS7Object(const nsTArray<uint8_t >& pkcs7, const nsTArray<nsTArray<uint8_t >>& data, nsIX509CertDB::PDFSignatureAlgorithm signatureType, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to AsyncVerifyPKCS7Object(pkcs7, data, signatureType, cx, _retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIX509CERTDB(_to) \
  [[nodiscard]] NS_IMETHOD FindCertByDBKey(const nsACString& aDBkey, nsIX509Cert **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FindCertByDBKey(aDBkey, _retval); } \
  MOZ_CAN_RUN_SCRIPT NS_IMETHOD ImportCertificates(uint8_t *data, uint32_t length, uint32_t type, nsIInterfaceRequestor *ctx) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ImportCertificates(data, length, type, ctx); } \
  NS_IMETHOD ImportEmailCertificate(uint8_t *data, uint32_t length, nsIInterfaceRequestor *ctx) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ImportEmailCertificate(data, length, ctx); } \
  NS_IMETHOD ImportUserCertificate(uint8_t *data, uint32_t length, nsIInterfaceRequestor *ctx) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ImportUserCertificate(data, length, ctx); } \
  NS_IMETHOD DeleteCertificate(nsIX509Cert *aCert) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteCertificate(aCert); } \
  [[nodiscard]] NS_IMETHOD SetCertTrust(nsIX509Cert *cert, uint32_t type, uint32_t trust) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCertTrust(cert, type, trust); } \
  [[nodiscard]] NS_IMETHOD SetCertTrustFromString(nsIX509Cert *cert, const nsACString& trustString) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCertTrustFromString(cert, trustString); } \
  [[nodiscard]] NS_IMETHOD IsCertTrusted(nsIX509Cert *cert, uint32_t certType, uint32_t trustType, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsCertTrusted(cert, certType, trustType, _retval); } \
  MOZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD ImportCertsFromFile(nsIFile *aFile, uint32_t aType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ImportCertsFromFile(aFile, aType); } \
  [[nodiscard]] NS_IMETHOD ImportPKCS12File(nsIFile *aFile, const nsAString& aPassword, uint32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ImportPKCS12File(aFile, aPassword, _retval); } \
  [[nodiscard]] NS_IMETHOD ExportPKCS12File(nsIFile *aFile, const nsTArray<RefPtr<nsIX509Cert>>& aCerts, const nsAString& aPassword, uint32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ExportPKCS12File(aFile, aCerts, aPassword, _retval); } \
  [[nodiscard]] NS_IMETHOD ConstructX509FromBase64(const nsACString& base64, nsIX509Cert **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ConstructX509FromBase64(base64, _retval); } \
  [[nodiscard]] NS_IMETHOD ConstructX509(const nsTArray<uint8_t >& certDER, nsIX509Cert **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ConstructX509(certDER, _retval); } \
  [[nodiscard]] NS_IMETHOD OpenSignedAppFileAsync(AppTrustedRoot trustedRoot, nsIFile *aJarFile, nsIOpenSignedAppFileCallback *callback) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenSignedAppFileAsync(trustedRoot, aJarFile, callback); } \
  [[nodiscard]] NS_IMETHOD AddCert(const nsACString& certDER, const nsACString& trust, nsIX509Cert **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCert(certDER, trust, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncVerifyCertAtTime(nsIX509Cert *aCert, nsIX509CertDB::VerifyUsage aUsage, uint32_t aFlags, const nsACString& aHostname, uint64_t aTime, const nsTArray<uint8_t >& aSctsFromTls, nsICertVerificationCallback *aCallback) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncVerifyCertAtTime(aCert, aUsage, aFlags, aHostname, aTime, aSctsFromTls, aCallback); } \
  [[nodiscard]] NS_IMETHOD ClearOCSPCache(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearOCSPCache(); } \
  [[nodiscard]] NS_IMETHOD AddCertFromBase64(const nsACString& base64, const nsACString& trust, nsIX509Cert **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCertFromBase64(base64, trust, _retval); } \
  NS_IMETHOD GetCerts(JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCerts(cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsPKCS7Blob(const nsTArray<RefPtr<nsIX509Cert>>& certList, nsACString& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsPKCS7Blob(certList, _retval); } \
  [[nodiscard]] NS_IMETHOD GetAndroidCertificateFromAlias(const nsAString& alias, nsIX509Cert **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAndroidCertificateFromAlias(alias, _retval); } \
  NS_IMETHOD AsyncVerifyQWAC(nsIX509CertDB::QWACType type, nsIX509Cert *cert, const nsACString& hostname, const nsTArray<RefPtr<nsIX509Cert>>& collectedCerts, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncVerifyQWAC(type, cert, hostname, collectedCerts, cx, _retval); } \
  NS_IMETHOD AsyncVerifyPKCS7Object(const nsTArray<uint8_t >& pkcs7, const nsTArray<nsTArray<uint8_t >>& data, nsIX509CertDB::PDFSignatureAlgorithm signatureType, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncVerifyPKCS7Object(pkcs7, data, signatureType, cx, _retval); } 


#endif /* __gen_nsIX509CertDB_h__ */
