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

http://github.com/zpao/v8monkey · HTML · 75 lines · 68 code · 7 blank · 0 comment · 0 complexity · 4e04276128df3fa25a605787a3de2f07 MD5 · raw file

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