QWACTrustDomain.h (3499B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef QWACTrustDomain_h 8 #define QWACTrustDomain_h 9 10 #include "mozpkix/pkixtypes.h" 11 #include "nsIX509Cert.h" 12 #include "nsTArray.h" 13 14 namespace mozilla { 15 namespace psm { 16 17 class QWACTrustDomain final : public mozilla::pkix::TrustDomain { 18 public: 19 typedef mozilla::pkix::Result Result; 20 21 explicit QWACTrustDomain(nsTArray<RefPtr<nsIX509Cert>>& collectedCerts); 22 23 virtual Result GetCertTrust( 24 mozilla::pkix::EndEntityOrCA endEntityOrCA, 25 const mozilla::pkix::CertPolicyId& policy, 26 mozilla::pkix::Input candidateCertDER, 27 /*out*/ mozilla::pkix::TrustLevel& trustLevel) override; 28 virtual Result FindIssuer(mozilla::pkix::Input encodedIssuerName, 29 IssuerChecker& checker, 30 mozilla::pkix::Time time) override; 31 virtual Result CheckRevocation( 32 mozilla::pkix::EndEntityOrCA endEntityOrCA, 33 const mozilla::pkix::CertID& certID, mozilla::pkix::Time time, 34 mozilla::pkix::Duration validityDuration, 35 /*optional*/ const mozilla::pkix::Input* stapledOCSPresponse, 36 /*optional*/ const mozilla::pkix::Input* aiaExtension) override; 37 virtual Result IsChainValid( 38 const mozilla::pkix::DERArray& certChain, mozilla::pkix::Time time, 39 const mozilla::pkix::CertPolicyId& requiredPolicy) override; 40 virtual Result CheckSignatureDigestAlgorithm( 41 mozilla::pkix::DigestAlgorithm digestAlg, 42 mozilla::pkix::EndEntityOrCA endEntityOrCA, 43 mozilla::pkix::Time notBefore) override; 44 virtual Result CheckRSAPublicKeyModulusSizeInBits( 45 mozilla::pkix::EndEntityOrCA endEntityOrCA, 46 unsigned int modulusSizeInBits) override; 47 virtual Result VerifyRSAPKCS1SignedData( 48 mozilla::pkix::Input data, mozilla::pkix::DigestAlgorithm digestAlgorithm, 49 mozilla::pkix::Input signature, 50 mozilla::pkix::Input subjectPublicKeyInfo) override; 51 virtual Result VerifyRSAPSSSignedData( 52 mozilla::pkix::Input data, mozilla::pkix::DigestAlgorithm digestAlgorithm, 53 mozilla::pkix::Input signature, 54 mozilla::pkix::Input subjectPublicKeyInfo) override; 55 virtual Result CheckECDSACurveIsAcceptable( 56 mozilla::pkix::EndEntityOrCA endEntityOrCA, 57 mozilla::pkix::NamedCurve curve) override; 58 virtual Result VerifyECDSASignedData( 59 mozilla::pkix::Input data, mozilla::pkix::DigestAlgorithm digestAlgorithm, 60 mozilla::pkix::Input signature, 61 mozilla::pkix::Input subjectPublicKeyInfo) override; 62 virtual Result CheckValidityIsAcceptable( 63 mozilla::pkix::Time notBefore, mozilla::pkix::Time notAfter, 64 mozilla::pkix::EndEntityOrCA endEntityOrCA, 65 mozilla::pkix::KeyPurposeId keyPurpose) override; 66 virtual void NoteAuxiliaryExtension( 67 mozilla::pkix::AuxiliaryExtension extension, 68 mozilla::pkix::Input extensionData) override; 69 virtual Result DigestBuf(mozilla::pkix::Input item, 70 mozilla::pkix::DigestAlgorithm digestAlg, 71 /*out*/ uint8_t* digestBuf, 72 size_t digestBufLen) override; 73 74 private: 75 nsTArray<nsTArray<uint8_t>> mIntermediates; 76 }; 77 78 } // namespace psm 79 } // namespace mozilla 80 81 #endif // QWACTrustDomain_h