77#include " nsNSSCertificate.h"
88#include " AppSignatureVerification.h"
99#include " CryptoTask.h"
10- #include " PDFTrustDomain.h"
1110
1211#include " mozpkix/pkix.h"
1312#include " mozpkix/pkixnss.h"
@@ -53,8 +52,7 @@ struct VerifySignatureResult {
5352
5453void VerifySignature (
5554 NSSCMSSignedData* signedData, const nsTArray<nsTArray<uint8_t >>& data,
56- /* out */ nsTArray<VerifySignatureResult>& signatureVerificationResults,
57- /* out */ nsTArray<Span<const uint8_t >>& collectedCerts) {
55+ /* out */ nsTArray<VerifySignatureResult>& signatureVerificationResults) {
5856 nsTArray<std::tuple<NSSCMSSignerInfo*, SECOidTag>> signerInfos;
5957 // Returns a prioritized list of signerInfos.
6058 GetAllSignerInfosForSupportedDigestAlgorithms (signedData, signerInfos);
@@ -68,6 +66,7 @@ void VerifySignature(
6866 return ;
6967 }
7068
69+ nsTArray<Span<const uint8_t >> collectedCerts;
7170 CollectCertificates (signedData, collectedCerts);
7271 if (collectedCerts.Length () == 0 ) {
7372 signatureVerificationResults.AppendElement (
@@ -117,53 +116,12 @@ void VerifySignature(
117116 TimeFromEpochInSeconds ((uint64_t )(signingTime / 1000000 ))));
118117 } else {
119118 signatureVerificationResults.AppendElement (
120- VerifySignatureResult (rv, signerCertSpan, Now () ));
119+ VerifySignatureResult (rv, signerCertSpan, defaultTime ));
121120 }
122121 }
123122}
124123
125- static mozilla::pkix::Result BuildCertChainForDocumentSigningKeyUsage (
126- TrustDomain& trustDomain, Input certDER, Time time) {
127- mozilla::pkix::Result rv = BuildCertChain (
128- trustDomain, certDER, time, EndEntityOrCA::MustBeEndEntity,
129- KeyUsage::digitalSignature, KeyPurposeId::id_kp_documentSigning,
130- CertPolicyId::anyPolicy, nullptr /* stapledOCSPResponse*/ );
131- if (rv == mozilla::pkix::Result::ERROR_INADEQUATE_CERT_TYPE) {
132- rv = BuildCertChain (
133- trustDomain, certDER, time, EndEntityOrCA::MustBeEndEntity,
134- KeyUsage::digitalSignature, KeyPurposeId::id_kp_documentSigningAdobe,
135- CertPolicyId::anyPolicy, nullptr /* stapledOCSPResponse*/ );
136- if (rv == mozilla::pkix::Result::ERROR_INADEQUATE_CERT_TYPE) {
137- rv = BuildCertChain (
138- trustDomain, certDER, time, EndEntityOrCA::MustBeEndEntity,
139- KeyUsage::digitalSignature,
140- KeyPurposeId::id_kp_documentSigningMicrosoft, CertPolicyId::anyPolicy,
141- nullptr /* stapledOCSPResponse*/ );
142- if (rv != Success) {
143- rv = mozilla::pkix::Result::ERROR_INADEQUATE_CERT_TYPE;
144- }
145- }
146- }
147-
148- return rv;
149- }
150-
151- nsresult VerifyCertificate (PDFTrustDomain& trustDomain,
152- Span<const uint8_t > signerCert, Time time) {
153- Input certDER;
154- mozilla::pkix::Result result =
155- certDER.Init (signerCert.Elements (), signerCert.Length ());
156- if (result != Success) {
157- return mozilla::psm::GetXPCOMFromNSSError (MapResultToPRErrorCode (result));
158- }
159-
160- result = BuildCertChainForDocumentSigningKeyUsage (trustDomain, certDER, time);
161- if (result != Success) {
162- return mozilla::psm::GetXPCOMFromNSSError (MapResultToPRErrorCode (result));
163- }
164-
165- return NS_OK;
166- }
124+ nsresult VerifyCertificate () { return NS_ERROR_CMS_VERIFY_NOT_YET_ATTEMPTED; }
167125
168126class PDFVerificationResultImpl final : public nsIPDFVerificationResult {
169127 public:
@@ -244,26 +202,21 @@ void VerifyPKCS7Object(
244202 }
245203
246204 nsTArray<VerifySignatureResult> signatureVerificationResults;
247- nsTArray<Span<const uint8_t >> collectedCerts;
248- VerifySignature (signedData, data, signatureVerificationResults,
249- collectedCerts);
250-
251- PDFTrustDomain trustDomain (std::move (collectedCerts));
205+ VerifySignature (signedData, data, signatureVerificationResults);
252206
253207 for (auto & result : signatureVerificationResults) {
254208 if (result.signatureVerificationResult != NS_OK) {
255209 pdfVerifResults.AppendElement (new PDFVerificationResultImpl (
256210 result.signatureVerificationResult ,
257211 NS_ERROR_CMS_VERIFY_NOT_YET_ATTEMPTED, nullptr ));
258212 } else {
259- nsresult certChainVerifResult =
260- VerifyCertificate (trustDomain, result.signerCert , result.time );
261-
213+ // The next patch will contain the certificate verification for each
214+ // signerCert
262215 nsCOMPtr<nsIX509Cert> cert (
263216 new nsNSSCertificate (std::move (result.signerCert )));
264-
265217 pdfVerifResults.AppendElement (new PDFVerificationResultImpl (
266- result.signatureVerificationResult , certChainVerifResult, cert));
218+ result.signatureVerificationResult ,
219+ NS_ERROR_CMS_VERIFY_NOT_YET_ATTEMPTED, cert));
267220 }
268221 }
269222}
0 commit comments