Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

// -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
// 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/.
"use strict";
do_get_profile(); // must be called before getting nsIX509CertDB
function add_tests_in_mode(mode) {
add_test(function set_mode() {
info(`setting CT to mode ${mode}`);
Services.prefs.setIntPref(
"security.pki.certificate_transparency.mode",
mode
);
run_next_test();
});
add_ct_test(
"ct-via-ocsp.example.com",
Ci.nsITransportSecurityInfo.CERTIFICATE_TRANSPARENCY_POLICY_COMPLIANT,
true
);
add_ct_test(
"ct-via-tls.example.com",
Ci.nsITransportSecurityInfo.CERTIFICATE_TRANSPARENCY_POLICY_COMPLIANT,
true
);
// One of the presented SCTs has a signature that has been tampered with, so
// overall there are not enough SCTs to be compliant with the policy.
add_ct_test(
"ct-tampered.example.com",
Ci.nsITransportSecurityInfo.CERTIFICATE_TRANSPARENCY_POLICY_NOT_ENOUGH_SCTS,
mode == CT_MODE_COLLECT_TELEMETRY
);
}
function run_test() {
// Make the test root appear to be a built-in root, so that certificate
// transparency is checked.
let rootCert = constructCertFromFile("test_ct/test-ca.pem");
Services.prefs.setCharPref(
"security.test.built_in_root_hash",
rootCert.sha256Fingerprint
);
add_tls_server_setup("OCSPStaplingServer", "test_ct");
add_tests_in_mode(CT_MODE_COLLECT_TELEMETRY);
add_tests_in_mode(CT_MODE_ENFORCE);
run_next_test();
}