security/manager/ssl/tests/unit/test_ocsp_url.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 // -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
     2 // This Source Code Form is subject to the terms of the Mozilla Public
     3 // License, v. 2.0. If a copy of the MPL was not distributed with this
     4 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
     6 "use strict";
     8 // In which we try to validate several ocsp responses, checking in particular
     9 // if the ocsp url is valid and the path expressed is correctly passed to
    10 // the caller.
    12 do_get_profile(); // must be called before getting nsIX509CertDB
    13 const certdb = Cc["@mozilla.org/security/x509certdb;1"]
    14                  .getService(Ci.nsIX509CertDB);
    16 const SERVER_PORT = 8888;
    18 function failingOCSPResponder() {
    19   return getFailingHttpServer(SERVER_PORT, ["www.example.com"]);
    20 }
    22 function start_ocsp_responder(expectedCertNames, expectedPaths) {
    23   return startOCSPResponder(SERVER_PORT, "www.example.com", [],
    24                             "test_ocsp_url", expectedCertNames, expectedPaths);
    25 }
    27 function check_cert_err(cert_name, expected_error) {
    28   let cert = constructCertFromFile("test_ocsp_url/" + cert_name + ".der");
    29   return checkCertErrorGeneric(certdb, cert, expected_error,
    30                                certificateUsageSSLServer);
    31 }
    33 function run_test() {
    34   addCertFromFile(certdb, "test_ocsp_url/ca.der", 'CTu,CTu,CTu');
    35   addCertFromFile(certdb, "test_ocsp_url/int.der", ',,');
    37   // Enabled so that we can force ocsp failure responses.
    38   Services.prefs.setBoolPref("security.OCSP.require", true);
    40   Services.prefs.setCharPref("network.dns.localDomains",
    41                              "www.example.com");
    43   add_tests_in_mode(true);
    44   add_tests_in_mode(false);
    45   run_next_test();
    46 }
    48 function add_tests_in_mode(useMozillaPKIX)
    49 {
    50   add_test(function() {
    51     Services.prefs.setBoolPref("security.use_mozillapkix_verification",
    52                                useMozillaPKIX);
    53     run_next_test();
    54   });
    56   add_test(function() {
    57     clearOCSPCache();
    58     let ocspResponder = failingOCSPResponder();
    59     check_cert_err("bad-scheme",
    60                    useMozillaPKIX ? SEC_ERROR_CERT_BAD_ACCESS_LOCATION
    61                                   : SEC_ERROR_OCSP_MALFORMED_REQUEST);
    62     ocspResponder.stop(run_next_test);
    63   });
    65   add_test(function() {
    66     clearOCSPCache();
    67     let ocspResponder = failingOCSPResponder();
    68     check_cert_err("empty-scheme-url",
    69                    useMozillaPKIX ? SEC_ERROR_CERT_BAD_ACCESS_LOCATION
    70                                   : SEC_ERROR_OCSP_MALFORMED_REQUEST);
    71     ocspResponder.stop(run_next_test);
    72   });
    74   add_test(function() {
    75     clearOCSPCache();
    76     let ocspResponder = failingOCSPResponder();
    77     check_cert_err("https-url",
    78                    useMozillaPKIX ? SEC_ERROR_CERT_BAD_ACCESS_LOCATION
    79                                   : SEC_ERROR_OCSP_MALFORMED_REQUEST);
    80     ocspResponder.stop(run_next_test);
    81   });
    83   add_test(function() {
    84     clearOCSPCache();
    85     let ocspResponder = start_ocsp_responder(["hTTp-url"], ["hTTp-url"]);
    86     check_cert_err("hTTp-url", 0);
    87     ocspResponder.stop(run_next_test);
    88   });
    90   add_test(function() {
    91     clearOCSPCache();
    92     let ocspResponder = failingOCSPResponder();
    93     check_cert_err("negative-port",
    94                    useMozillaPKIX ? SEC_ERROR_CERT_BAD_ACCESS_LOCATION
    95                                   : SEC_ERROR_OCSP_MALFORMED_REQUEST);
    96     ocspResponder.stop(run_next_test);
    97   });
    99   add_test(function() {
   100     clearOCSPCache();
   101     let ocspResponder = failingOCSPResponder();
   102     // XXX Bug 1013615 parser accepts ":8888" as hostname
   103     check_cert_err("no-host-url", SEC_ERROR_OCSP_SERVER_ERROR);
   104     ocspResponder.stop(run_next_test);
   105   });
   107   add_test(function() {
   108     clearOCSPCache();
   109     let ocspResponder = start_ocsp_responder(["no-path-url"], ['']);
   110     check_cert_err("no-path-url", 0);
   111     ocspResponder.stop(run_next_test);
   112   });
   114   add_test(function() {
   115     clearOCSPCache();
   116     let ocspResponder = failingOCSPResponder();
   117     check_cert_err("no-scheme-host-port",
   118                    useMozillaPKIX ? SEC_ERROR_CERT_BAD_ACCESS_LOCATION
   119                                   : SEC_ERROR_OCSP_MALFORMED_REQUEST);
   120     ocspResponder.stop(run_next_test);
   121   });
   123   add_test(function() {
   124     clearOCSPCache();
   125     let ocspResponder = failingOCSPResponder();
   126     check_cert_err("no-scheme-url",
   127                    useMozillaPKIX ? SEC_ERROR_CERT_BAD_ACCESS_LOCATION
   128                                   : SEC_ERROR_OCSP_MALFORMED_REQUEST);
   129     ocspResponder.stop(run_next_test);
   130   });
   132   add_test(function() {
   133     clearOCSPCache();
   134     let ocspResponder = failingOCSPResponder();
   135     check_cert_err("unknown-scheme",
   136                    useMozillaPKIX ? SEC_ERROR_CERT_BAD_ACCESS_LOCATION
   137                                   : SEC_ERROR_OCSP_MALFORMED_REQUEST);
   138     ocspResponder.stop(run_next_test);
   139   });
   141 }

mercurial