Skip to content

Commit 19e291c

Browse files
author
Atila Butkovits
committed
Revert "Bug 2004708 - Extending signature verification with certificate chain verification r=keeler" for causing build bustages in PDFTrustDomain.cpp.
This reverts commit 84c1181. Revert "Bug 2004708 - Introduce BuildCertChainForDocumentSigningKeyUsage building certificate chain with all the supported document signing EKUs r=keeler" This reverts commit 84a088d.
1 parent f648ce9 commit 19e291c

File tree

31 files changed

+157
-884
lines changed

31 files changed

+157
-884
lines changed

Cargo.lock

Lines changed: 2 additions & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ members = [
1515
"security/manager/ssl/tests/unit/pkcs11testmodule",
1616
"security/manager/ssl/tests/unit/test_trust_anchors",
1717
"security/manager/ssl/qwac_trust_anchors",
18-
"security/manager/ssl/pdf_trust_anchors",
1918
"security/manager/ssl/trust_anchors",
2019
"security/mls/mls_gk",
2120
"services/app-services-tools/embedded-uniffi-bindgen",

modules/libpref/init/StaticPrefList.yaml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17521,14 +17521,6 @@
1752117521
value: true
1752217522
mirror: always
1752317523

17524-
17525-
# Whether or not to enable the test trust anchor list when verifying PDF signatures
17526-
- name: security.pdf_signature_verification.enable_test_trust_anchors
17527-
type: RelaxedAtomicBool
17528-
value: false
17529-
mirror: always
17530-
rust: true
17531-
1753217524
# If true, attempt to load the osclientcerts PKCS#11 module at startup on a
1753317525
# background thread. This module allows Firefox to use client certificates
1753417526
# stored in OS certificate storage. Currently only available for Windows and

security/manager/ssl/PDFSignatureVerification.cpp

Lines changed: 9 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
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

5453
void 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

168126
class 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
}

security/manager/ssl/PDFTrustDomain.cpp

Lines changed: 0 additions & 209 deletions
This file was deleted.

0 commit comments

Comments
 (0)