security/manager/ssl/tests/mochitest/bugs/test_bug644006.html

Wed, 31 Dec 2014 07:16:47 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:16:47 +0100
branch
TOR_BUG_9701
changeset 3
141e0f1194b1
permissions
-rw-r--r--

Revert simplistic fix pending revisit of Mozilla integration attempt.

michael@0 1 <!DOCTYPE HTML>
michael@0 2 <html><head>
michael@0 3 <title>Test bug 644006</title>
michael@0 4 <script type="text/javascript"
michael@0 5 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
michael@0 6 <link rel="stylesheet" type="text/css"
michael@0 7 href="chrome://mochikit/content/tests/SimpleTest/test.css" />
michael@0 8 </head><body>
michael@0 9 <script type="application/javascript;version=1.7">
michael@0 10 const FAILURE = Components.results.NS_ERROR_FAILURE;
michael@0 11 const ILLEGAL_VALUE = Components.results.NS_ERROR_ILLEGAL_VALUE;
michael@0 12
michael@0 13 var certDB = Components.classes["@mozilla.org/security/x509certdb;1"]
michael@0 14 .getService(Components.interfaces.nsIX509CertDB);
michael@0 15
michael@0 16 function excMessage(e)
michael@0 17 {
michael@0 18 if ("message" in e && e.message !== null) {
michael@0 19 let msg = e.message;
michael@0 20 if ("data" in e && e.data !== null)
michael@0 21 msg = msg + ": " + e.data;
michael@0 22 return msg;
michael@0 23 } else {
michael@0 24 return e.toString();
michael@0 25 }
michael@0 26 }
michael@0 27
michael@0 28 function testGood(data)
michael@0 29 {
michael@0 30 let label = "CN=" + data.cn;
michael@0 31 try {
michael@0 32 let cert = certDB.constructX509FromBase64(data.cert);
michael@0 33 is(cert.commonName, data.cn, label + ": constructX509 succeeded");
michael@0 34 } catch (e) {
michael@0 35 ok(false, label + ": exception: " + excMessage(e));
michael@0 36 }
michael@0 37 }
michael@0 38
michael@0 39 function testBad(data)
michael@0 40 {
michael@0 41 let label = uneval(data.t)
michael@0 42 try {
michael@0 43 let cert = certDB.constructX509FromBase64(data.t);
michael@0 44 ok(false, label + ": constructX509 succeeded");
michael@0 45 } catch (e) {
michael@0 46 is(e.result, data.e, label + ": exception: " + excMessage(e));
michael@0 47 }
michael@0 48 }
michael@0 49
michael@0 50 const badCases = [
michael@0 51 // wrong type or too short
michael@0 52 { t: null, e: ILLEGAL_VALUE },
michael@0 53 { t: "", e: ILLEGAL_VALUE },
michael@0 54 { t: "=", e: ILLEGAL_VALUE },
michael@0 55 { t: "==", e: ILLEGAL_VALUE },
michael@0 56 // not base64
michael@0 57 { t: "forty-four dead stone lions", e: ILLEGAL_VALUE },
michael@0 58 // not a cert
michael@0 59 { t: "Zm9ydHktZm91ciBkZWFkIHN0b25lIGxpb25z", e: FAILURE }
michael@0 60 ];
michael@0 61
michael@0 62 // real certs with all three padding levels
michael@0 63 const goodCases = [
michael@0 64 { cn: "A", cert: "MIHhMIGcAgEAMA0GCSqGSIb3DQEBBQUAMAwxCjAIBgNVBAMTAUEwHhcNMTEwMzIzMjMyNTE3WhcNMTEwNDIyMjMyNTE3WjAMMQowCAYDVQQDEwFBMEwwDQYJKoZIhvcNAQEBBQADOwAwOAIxANFm7ZCfYNJViaDWTFuMClX3+9u18VFGiyLfM6xJrxir4QVtQC7VUC/WUGoBUs9COQIDAQABMA0GCSqGSIb3DQEBBQUAAzEAx2+gIwmuYjJO5SyabqIm4lB1MandHH1HQc0y0tUFshBOMESTzQRPSVwPn77a6R9t" },
michael@0 65 { cn: "Bo", cert: "MIHjMIGeAgEAMA0GCSqGSIb3DQEBBQUAMA0xCzAJBgNVBAMTAkJvMB4XDTExMDMyMzIzMjYwMloXDTExMDQyMjIzMjYwMlowDTELMAkGA1UEAxMCQm8wTDANBgkqhkiG9w0BAQEFAAM7ADA4AjEA1FoSl9w9HqMqVgk2K0J3OTiRsgHeNsQdPUl6S82ME33gH+E56PcWZA3nse+fpS3NAgMBAAEwDQYJKoZIhvcNAQEFBQADMQAo/e3BvQAmygiATljQ68tWPoWcbMwa1xxAvpWTEc1LOvMqeDBinBUqbAbSmPhGWb4=" },
michael@0 66 { cn: "Cid", cert: "MIHlMIGgAgEAMA0GCSqGSIb3DQEBBQUAMA4xDDAKBgNVBAMTA0NpZDAeFw0xMTAzMjMyMzI2MzJaFw0xMTA0MjIyMzI2MzJaMA4xDDAKBgNVBAMTA0NpZDBMMA0GCSqGSIb3DQEBAQUAAzsAMDgCMQDUUxlF5xKN+8KCSsR83sN+SRwJmZdliXsnBB7PU0OgbmOWN0u8yehRkmu39kN9tzcCAwEAATANBgkqhkiG9w0BAQUFAAMxAJ3UScNqRcjHFrNu4nuwRldZLJlVJvRYXp982V4/kYodQEGN4gJ+Qyj+HTsaXy5x/w==" }
michael@0 67 ];
michael@0 68
michael@0 69 var i;
michael@0 70 for (i = 0; i < badCases.length; i++)
michael@0 71 testBad(badCases[i]);
michael@0 72 for (i = 0; i < goodCases.length; i++)
michael@0 73 testGood(goodCases[i]);
michael@0 74 </script>
michael@0 75 </body></html>

mercurial