UNPKG

api-console-assets

Version:

This repo only exists to publish api console components to npm

528 lines (463 loc) 25.3 kB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>QUnit for X.509 Certificate 'x509.js'</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <script type="text/javascript" src="jquery-1.4.2.min.js"></script> <script type="text/javascript" src="qunit.js"></script> <link rel="stylesheet" href="qunit.css" type="text/css" media="screen" /> <script src="../ext/cj/cryptojs-312-core-fix.js"></script> <script src="../ext/cj/x64-core.js"></script> <script src="../ext/cj/cipher-core_min.js"></script> <script src="../ext/cj/aes_min.js"></script> <script src="../ext/cj/tripledes_min.js"></script> <script src="../ext/cj/enc-base64_min.js"></script> <script src="../ext/cj/md5_min.js"></script> <script src="../ext/cj/sha1_min.js"></script> <script src="../ext/cj/sha256_min.js"></script> <script src="../ext/cj/sha224_min.js"></script> <script src="../ext/cj/sha512_min.js"></script> <script src="../ext/cj/sha384_min.js"></script> <script src="../ext/cj/ripemd160_min.js"></script> <script src="../ext/cj/hmac_min.js"></script> <script src="../ext/cj/pbkdf2_min.js"></script> <script src="../ext/yahoo.js"></script> <script src="../ext/jsbn.js"></script> <script src="../ext/jsbn2.js"></script> <script src="../ext/prng4.js"></script> <script src="../ext/rng.js"></script> <script src="../ext/rsa.js"></script> <script src="../ext/rsa2.js"></script> <script src="../ext/base64.js"></script> <script src="../src/base64x-1.1.js"></script> <script src="../src/crypto-1.1.js"></script> <script src="../src/asn1hex-1.1.js"></script> <script src="../src/rsapem-1.1.js"></script> <script src="../src/rsasign-1.2.js"></script> <script src="../src/x509-1.1.js"></script> <script src="../src/asn1-1.0.js"></script> <script src="../src/asn1x509-1.0.js"></script> <script type="text/javascript"> $(document).ready(function(){ var certGithubPEM = "-----BEGIN CERTIFICATE-----\r\n" + "MIIF4DCCBMigAwIBAgIQDACTENIG2+M3VTWAEY3chzANBgkqhkiG9w0BAQsFADB1\r\n" + "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\r\n" + "d3cuZGlnaWNlcnQuY29tMTQwMgYDVQQDEytEaWdpQ2VydCBTSEEyIEV4dGVuZGVk\r\n" + "IFZhbGlkYXRpb24gU2VydmVyIENBMB4XDTE0MDQwODAwMDAwMFoXDTE2MDQxMjEy\r\n" + "MDAwMFowgfAxHTAbBgNVBA8MFFByaXZhdGUgT3JnYW5pemF0aW9uMRMwEQYLKwYB\r\n" + "BAGCNzwCAQMTAlVTMRkwFwYLKwYBBAGCNzwCAQITCERlbGF3YXJlMRAwDgYDVQQF\r\n" + "Ewc1MTU3NTUwMRcwFQYDVQQJEw41NDggNHRoIFN0cmVldDEOMAwGA1UEERMFOTQx\r\n" + "MDcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\r\n" + "YW4gRnJhbmNpc2NvMRUwEwYDVQQKEwxHaXRIdWIsIEluYy4xEzARBgNVBAMTCmdp\r\n" + "dGh1Yi5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx1Nw8r/3z\r\n" + "Tu3BZ63myyLot+KrKPL33GJwCNEMr9YWaiGwNksXDTZjBK6/6iBRlWVm8r+5TaQM\r\n" + "Kev1FbHoNbNwEJTVG1m0Jg/Wg1dZneF8Cd3gE8pNb0Obzc+HOhWnhd1mg+2TDP4r\r\n" + "bTgceYiQz61YGC1R0cKj8keMbzgJubjvTJMLy4OUh+rgo7XZe5trD0P5yu6ADSin\r\n" + "dvEl9ME1PPZ0rd5qM4J73P1LdqfC7vJqv6kkpl/nLnwO28N0c/p+xtjPYOs2ViG2\r\n" + "wYq4JIJNeCS66R2hiqeHvmYlab++O3JuT+DkhSUIsZGJuNZ0ZXabLE9iH6H6Or6c\r\n" + "JL+fyrDFwGeNAgMBAAGjggHuMIIB6jAfBgNVHSMEGDAWgBQ901Cl1qCt7vNKYApl\r\n" + "0yHU+PjWDzAdBgNVHQ4EFgQUakOQfTuYFHJSlTqqKApD+FF+06YwJQYDVR0RBB4w\r\n" + "HIIKZ2l0aHViLmNvbYIOd3d3LmdpdGh1Yi5jb20wDgYDVR0PAQH/BAQDAgWgMB0G\r\n" + "A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjB1BgNVHR8EbjBsMDSgMqAwhi5o\r\n" + "dHRwOi8vY3JsMy5kaWdpY2VydC5jb20vc2hhMi1ldi1zZXJ2ZXItZzEuY3JsMDSg\r\n" + "MqAwhi5odHRwOi8vY3JsNC5kaWdpY2VydC5jb20vc2hhMi1ldi1zZXJ2ZXItZzEu\r\n" + "Y3JsMEIGA1UdIAQ7MDkwNwYJYIZIAYb9bAIBMCowKAYIKwYBBQUHAgEWHGh0dHBz\r\n" + "Oi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwgYgGCCsGAQUFBwEBBHwwejAkBggrBgEF\r\n" + "BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMFIGCCsGAQUFBzAChkZodHRw\r\n" + "Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRTSEEyRXh0ZW5kZWRWYWxp\r\n" + "ZGF0aW9uU2VydmVyQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQAD\r\n" + "ggEBAG/nbcuC8++QhwnXDxUiLIz+06scipbbXRJd0XjAMbD/RciJ9wiYUhcfTEsg\r\n" + "ZGpt21DXEL5+q/4vgNipSlhBaYFyGQiDm5IQTmIte0ZwQ26jUxMf4pOmI1v3kj43\r\n" + "FHU7uUskQS6lPUgND5nqHkKXxv6V2qtHmssrA9YNQMEK93ga2rWDpK21mUkgLviT\r\n" + "PB5sPdE7IzprOCp+Ynpf3RcFddAkXb6NqJoQRPrStMrv19C1dqUmJRwIQdhkkqev\r\n" + "ff6IQDlhC8BIMKmCNK33cEYDfDWROtW7JNgBvBTwww8jO1gyug8SbGZ6bZ3k8OV8\r\n" + "XX4C2NesiZcLYbc2n7B9O+63M2k=\r\n" + "-----END CERTIFICATE-----\r\n"; // _test/0cert_sites/digicertevroot.cer var digiCertEvRootPEM = (function() {/* -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm +9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep +OkuE6N36B9K -----END CERTIFICATE----- */}).toString().match(/\/\*([^]*)\*\//)[1]; // _test/0cert_sites/digicertevroot.cer var pulseCioGovPEM = (function() {/* -----BEGIN CERTIFICATE----- MIIFJDCCBAygAwIBAgISA+A6XXjiqOEp6wsxRPSMihs9MA0GCSqGSIb3DQEBCwUA MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNjA0MDMwMjM3MDBaFw0x NjA3MDIwMjM3MDBaMBgxFjAUBgNVBAMTDXB1bHNlLmNpby5nb3YwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKvi1wLwoYDIa2pC+/3m/BdEm3iu6r7XpH 4+NtEjYvdZury/E3dmdCtU/sBIb/ZbE8MCFu9DCOWNOzkB8tke6z65a2xYqDdDNm dWVyFimZfy3M2lsFb1ybw41XQ5xevmRTfpwnk2mRKEyzhuLxyy0J6G3dK7NAHyDA UehokeYEBKJNtarhNDZvxR4lwJq2rUFWlVrEuAlqvI0s2SqCN1YEbJUGmuYnjkSp LHbdmkXNb943bfKFUd8EbXQ3sAnZ1RMr99bJQxHJeJsBF7ZRSMcm5GFC0HtAPzyC MKVTQLq0X5/pgUFfZXcq9NWlHCHDpdM/ReiYZgfyUVUHtQxzBH6NAgMBAAGjggI0 MIICMDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUF BwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFPLrqSD0DOiBSUtQQOjbBShgdKgG MB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMHAGCCsGAQUFBwEBBGQw YjAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuaW50LXgzLmxldHNlbmNyeXB0Lm9y Zy8wLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5v cmcvMD4GA1UdEQQ3MDWCDWh0dHBzLmNpby5nb3aCDXB1bHNlLmNpby5nb3aCFXN0 YWdpbmcucHVsc2UuY2lvLmdvdjCB/gYDVR0gBIH2MIHzMAgGBmeBDAECATCB5gYL KwYBBAGC3xMBAQEwgdYwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5 cHQub3JnMIGrBggrBgEFBQcCAjCBngyBm1RoaXMgQ2VydGlmaWNhdGUgbWF5IG9u bHkgYmUgcmVsaWVkIHVwb24gYnkgUmVseWluZyBQYXJ0aWVzIGFuZCBvbmx5IGlu IGFjY29yZGFuY2Ugd2l0aCB0aGUgQ2VydGlmaWNhdGUgUG9saWN5IGZvdW5kIGF0 IGh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL3JlcG9zaXRvcnkvMA0GCSqGSIb3DQEB CwUAA4IBAQALdvLGTpz2/YXmGKfbKOF01bp1YWCLDa8Wha9VPnSFfNhMr4BDE1WU 25C4qWoK/aulDPKmic9wE5GB9wWtFgkNnYRKL1IRYIiTj4RNcObAKQ8UKn6nWY5J QS6c083NC8kLp9bY+EUWJGImbXoSYo9kxdsmF7hMUXJwy2eGVDy8JRPl+s8hWGoO WacFqZW/keeSiHxuja2t/r8SADVs41HnGIGrhLpAqgetunCOVOBf3/ukXi7I/99G skSN1/Bs6kbCE//oDJHBGhHLrU8NCFHD3geyZ2M7fvl8NySvNmK401kdW8d0YlZ+ huwF7BwiYT9T3KZrcukwsj5BUinH75i4 -----END CERTIFICATE----- */}).toString().match(/\/\*([^]*)\*\//)[1]; // _test/0cert_sites/danmarksapotuser1.cer var danmarksUser1PEM = (function() {/* -----BEGIN CERTIFICATE----- MIIGYDCCBUigAwIBAgIEU7s4dDANBgkqhkiG9w0BAQsFADBAMQswCQYDVQQGEwJE SzESMBAGA1UECgwJVFJVU1QyNDA4MR0wGwYDVQQDDBRUUlVTVDI0MDggT0NFUyBD QSBJSTAeFw0xNTEyMzAxMjE4MDNaFw0xODEyMzAxMjE2NTBaMIGeMQswCQYDVQQG EwJESzEyMDAGA1UECgwpRGFubWFya3MgQXBvdGVrZXJmb3JlbmluZyAvLyBDVlI6 MjAxMjQ1MTIxWzAgBgNVBAUTGUNWUjoyMDEyNDUxMi1VSUQ6NjQyOTA2OTgwNwYD VQQDDDBEYW5tYXJrcyBBcG90ZWtlcmZvcmVuaW5nIC0gRGFubWFya3MgQXBvdGVr ZXJmb3IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQNL1iA9kO241w eNpuTm/OoU5i9kOpp+/Vi6OmY14aYEIpgDEWr6nfeGugrsFyR2crOxr7iRhngUyk UnSsfSqPkhhGiXdcPtEplSubCzP08zf/0PyIyyV5LoBEZr60M7LmahPuQojb09sK dCTEDMk46LCeISEQGI/ZggALH1SRSQiodctQvVN98okuaJDobgbTi/P2sMu3OK/J SbQrI2kn5d4ShUlWIBkZqsRUBNRmrvfBQzZpv2+mkDMFGouYzSkYccPivzQCx8BV 9e2QdrB6KVnT6m/l5ND0d3qY41h0i/CffnjofQmoaQ1a3xO82+A6EF+Dl3QF5Wcm fR2Z2C6rAgMBAAGjggMBMIIC/TAOBgNVHQ8BAf8EBAMCA7gwgYkGCCsGAQUFBwEB BH0wezA1BggrBgEFBQcwAYYpaHR0cDovL29jc3AuaWNhMDIudHJ1c3QyNDA4LmNv bS9yZXNwb25kZXIwQgYIKwYBBQUHMAKGNmh0dHA6Ly92LmFpYS5pY2EwMi50cnVz dDI0MDguY29tL29jZXMtaXNzdWluZzAyLWNhLmNlcjCCAUMGA1UdIASCATowggE2 MIIBMgYKKoFQgSkBAQEDBDCCASIwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cudHJ1 c3QyNDA4LmNvbS9yZXBvc2l0b3J5MIHuBggrBgEFBQcCAjCB4TAQFglUUlVTVDI0 MDgwAwIBARqBzEZvciBhbnZlbmRlbHNlIGFmIGNlcnRpZmlrYXRldCBn5mxkZXIg T0NFUyB2aWxr5XIsIENQUyBvZyBPQ0VTIENQLCBkZXIga2FuIGhlbnRlcyBmcmEg d3d3LnRydXN0MjQwOC5jb20vcmVwb3NpdG9yeS4gQmVt5nJrLCBhdCBUUlVTVDI0 MDggZWZ0ZXIgdmlsa+VyZW5lIGhhciBldCBiZWdy5m5zZXQgYW5zdmFyIGlmdC4g cHJvZmVzc2lvbmVsbGUgcGFydGVyLjAzBgNVHREELDAqgShhcG90ZWtlcmZvcmVu aW5nZW5AYXBvdGVrZXJmb3JlbmluZ2VuLmRrMIGXBgNVHR8EgY8wgYwwLqAsoCqG KGh0dHA6Ly9jcmwuaWNhMDIudHJ1c3QyNDA4LmNvbS9pY2EwMi5jcmwwWqBYoFak VDBSMQswCQYDVQQGEwJESzESMBAGA1UECgwJVFJVU1QyNDA4MR0wGwYDVQQDDBRU UlVTVDI0MDggT0NFUyBDQSBJSTEQMA4GA1UEAwwHQ1JMMzExNzAfBgNVHSMEGDAW gBSZj7oNia4hGkJ6Cq4aTE4i/xDrjDAdBgNVHQ4EFgQUc/W+LbQMXATob80qxnVN E5DeDagwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAWgMjuLxT1GtEfWxR 6Giqj2wUZxn0EecPWrWotL5Rvl5kNDXajcnsdAzEBS+0ZCXP1i/to+tupkQOs/o0 cO759nBIY0O8ZbOvzsKBeLxWdQp2EuLZKDBwLpN49i8yzSJYWd7/KfH15DcNICvD wHPL6SBjwokCuz5dTFVdjXybOrIihRg8zRKZ4Utm1NV2Rfoh4C9D50uIMgcaIJ2W rhD4uIUbomqy9Ex0qUmTAV6eZh5ynCjlVYie3UqeJ+UoVfpsNMFNRJdoeKsn6g1W U2rgoKzYAzliiC89n3hrNbm7rcBLgDFfWsHUtO1w2PDfRAqJcHWoTQiIQNUCPTa8 B9LZ8g== */}).toString().match(/\/\*([^]*)\*\//)[1]; // _gitpg/jsrsasign/test/eckey/k1.self.cer var k1CertPEM = "" + "-----BEGIN CERTIFICATE-----\n" + "MIIBfDCCASGgAwIBAgIJAKbxELQvSUDNMAoGCCqGSM49BAMCMBoxCzAJBgNVBAYT\n" + "AlVTMQswCQYDVQQKDAJLMTAeFw0xMzA3MTQwMjE3MTdaFw0yMzA3MTIwMjE3MTda\n" + "MBoxCzAJBgNVBAYTAlVTMQswCQYDVQQKDAJLMTBZMBMGByqGSM49AgEGCCqGSM49\n" + "AwEHA0IABKAVMqPAkABT3mD77+/MpYeTMBWY0wi0Hm9ONk44jCcRvvQyxZkUjJQU\n" + "PU/0bCy3Pj5qQdfu8jwEfqEeYGZ95CWjUDBOMB0GA1UdDgQWBBTIR74yfMz/Y4hw\n" + "dXSW4r42bESo/DAfBgNVHSMEGDAWgBTIR74yfMz/Y4hwdXSW4r42bESo/DAMBgNV\n" + "HRMEBTADAQH/MAoGCCqGSM49BAMCA0kAMEYCIQDfAcS/WKBrP6JBgksQVpp4jdq4\n" + "C53Yu4F5NkaMgthAHgIhANGRdWAP1QdW9l6tiglQwdqJs4T0e8+NYv+RcAb3VYwn\n" + "-----END CERTIFICATE-----\n"; var k1CertHex = pemtohex(k1CertPEM); // test/z1.der1-p3 basicConstraints={ca:true, pathlen:3} var z1P3CertHex = "3082017630820120a003020102020107300d06092a864886f70d01010b05003019310b3009060355040613025553310a3008060355040a0c0154301e170d3136303431333134313832365a170d3236303431333134313832365a3019310b3009060355040613025553310a3008060355040a0c0154305c300d06092a864886f70d0101010500034b003048024100e8664dd2b40529121568f3b39bc97a62e7ba3c09babdc4f0dcd8df90eb790b9bb645a2b70e3112747b4d3c41b51424895115fef88f79d43eae5b1a4e3518fd590203010001a3533051301d0603551d0e04160414c5473ee200c8e7ad7003dff5420b8cddf4c20e15301f0603551d23041830168014c5473ee200c8e7ad7003dff5420b8cddf4c20e15300f0603551d13040830060101ff020103300d06092a864886f70d01010b0500034100862bf6d5f0c366dd1c71af10df93e2e9e0b7210b6912d1774e27107203f2dc257f9b132285bc1ce8d32d8ffc69470cd6c52ec76b7d68708eca3bbd49556f3005"; test("parseExt github.com", function() { var x = new X509(); x.readCertPEM(certGithubPEM); // parseExt called internally equal(x.aExtInfo.length, 9, "9 aExtInfo.length"); equal(x.aExtInfo[0].oid, "2.5.29.35", "[0].oid = AKID"); equal(x.aExtInfo[0].critical, false, "[0].critical = false"); equal(x.aExtInfo[0].vidx, 1502, "[0].vidx"); equal(ASN1HEX.getTLV(x.hex, x.aExtInfo[0].vidx), "301680143dd350a5d6a0adeef34a600a65d321d4f8f8d60f", "[0].tlv"); equal(x.aExtInfo[3].oid, "2.5.29.15", "[3].oid = keyUsage"); equal(x.aExtInfo[3].critical, true, "[3].critical = true"); equal(x.aExtInfo[3].vidx, 1714, "[3].vidx"); equal(ASN1HEX.getTLV(x.hex, x.aExtInfo[3].vidx), "030205a0", "[3].tlv = 0302..."); equal(x.aExtInfo[8].oid, "2.5.29.19", "[8].oid = basicConstraints"); equal(x.aExtInfo[8].critical, true, "[8].critical = true"); equal(x.aExtInfo[8].vidx, 2460, "[8].vidx"); equal(ASN1HEX.getTLV(x.hex, x.aExtInfo[8].vidx), "3000", "[8].tlv = 3000"); }); test("getExtInfo github.com", function() { var x = new X509(); x.readCertPEM(certGithubPEM); // parseExt called internally var i3o = x.getExtInfo("2.5.29.19"); equal(i3o !== undefined, true, "i3(2.5.29.19) by oid not undefined"); equal(i3o.oid, "2.5.29.19", "oid"); equal(i3o.critical, true, "critical"); equal(i3o.vidx, 2460, "vidx"); var i3n = x.getExtInfo("keyUsage"); equal(i3n !== undefined, true, "i3n(keyUsage) by name not undefined"); equal(i3n.oid, "2.5.29.15", "oid"); equal(i3n.critical, true, "critical"); equal(i3n.vidx, 1714, "vidx"); var ixn = x.getExtInfo("unknownExt1"); equal(ixn !== undefined, false, "ixn(unknownExt1) by name is undefined"); var iyn = x.getExtInfo("0.1.2.3"); equal(iyn !== undefined, false, "iyn(0.1.2.3) by oid is undefined"); }); test("getExtBasicConstraints", function() { var x = new X509(); x.readCertPEM(certGithubPEM); var bc = x.getExtBasicConstraints(); deepEqual(bc, {}, "{} for GitHub.com site"); var x2 = new X509(); x2.readCertPEM(digiCertEvRootPEM); var bc2 = x2.getExtBasicConstraints(); equal(bc2.cA, true, "cA=true for DigiCert EV root"); var x3 = new X509(); x3.readCertHex(z1P3CertHex); var bc3 = x3.getExtBasicConstraints(); equal(bc3.cA, true, "cA=true for z1p3"); equal(bc3.pathLen, 3, "pathLen=3 for z1p3"); }); test("getExtKeyUsageBin()", function() { var x = new X509(); x.readCertPEM(certGithubPEM); equal(x.getExtKeyUsageBin(), "101", "101 for GitHub.com site"); var x2 = new X509(); x2.readCertPEM(digiCertEvRootPEM); equal(x2.getExtKeyUsageBin(), "1000011", "1000011 for DigiCert EV root"); }); test("getExtKeyUsageBin()", function() { var x = new X509(); x.readCertPEM(certGithubPEM); equal(x.getExtKeyUsageBin(), "101", "101 for GitHub.com site"); var x2 = new X509(); x2.readCertPEM(digiCertEvRootPEM); equal(x2.getExtKeyUsageBin(), "1000011", "1000011 for DigiCert EV root"); }); test("getExtKeyUsageString()", function() { var x = new X509(); x.readCertPEM(certGithubPEM); equal(x.getExtKeyUsageString(), "digitalSignature,keyEncipherment", "digitalSignature,keyEncipherment for GitHub.com site"); var x2 = new X509(); x2.readCertPEM(digiCertEvRootPEM); equal(x2.getExtKeyUsageString(), "digitalSignature,keyCertSign,cRLSign", "digitalSignature,keyCertSign,cRLSign for DigiCert EV root"); }); test("getExtSubjectKeyIdentifier()", function() { var x = new X509(); x.readCertPEM(certGithubPEM); equal(x.getExtSubjectKeyIdentifier(), "6a43907d3b98147252953aaa280a43f8517ed3a6", "for GitHub.com site"); var x2 = new X509(); x2.readCertPEM(digiCertEvRootPEM); equal(x2.getExtSubjectKeyIdentifier(), "b13ec36903f8bf4701d498261a0802ef63642bc3", "for DigiCert EV root"); }); test("getExtAuthorityKeyIdentifier()", function() { var x = new X509(); x.readCertPEM(certGithubPEM); var akid = x.getExtAuthorityKeyIdentifier() equal(akid.kid, "3dd350a5d6a0adeef34a600a65d321d4f8f8d60f", "for GitHub.com site"); var x2 = new X509(); x2.readCertPEM(digiCertEvRootPEM); var akid2 = x2.getExtAuthorityKeyIdentifier() equal(akid2.kid, "b13ec36903f8bf4701d498261a0802ef63642bc3", "for DigiCert EV root"); }); test("getExtExtKeyUsage", function() { var x = new X509(); x.readCertPEM(certGithubPEM); deepEqual(x.getExtExtKeyUsageName(), ["serverAuth", "clientAuth"], "for GitHub.com site"); }); test("getExtSubjectAltName", function() { var x = new X509(); x.readCertPEM(certGithubPEM); deepEqual(x.getExtSubjectAltName(), ["github.com", "www.github.com"], "for GitHub.com site"); }); test("getExtCRLDistributionPointsURI github", function() { var x = new X509(); x.readCertPEM(certGithubPEM); deepEqual(x.getExtCRLDistributionPointsURI(), ["http://crl3.digicert.com/sha2-ev-server-g1.crl", "http://crl4.digicert.com/sha2-ev-server-g1.crl"], "for GitHub.com site"); }); test("getExtCRLDistributionPointsURI danmarks", function() { var x = new X509(); x.readCertPEM(danmarksUser1PEM); deepEqual(x.getExtCRLDistributionPointsURI(), ["http://crl.ica02.trust2408.com/ica02.crl"], "for Danmarks Apotekerforening User cert"); }); test("getExtAIAInfo", function() { var x = new X509(); x.readCertPEM(certGithubPEM); deepEqual(x.getExtAIAInfo(), { ocsp: ["http://ocsp.digicert.com"], caissuer: ["http://cacerts.digicert.com/DigiCertSHA2ExtendedValidationServerCA.crt"] }, "for GitHub.com site"); }); test("getCertificatePolicies", function() { var x = new X509(); x.readCertPEM(certGithubPEM); deepEqual(x.getExtCertificatePolicies(), [{ id: "2.16.840.1.114412.2.1", cps: "https://www.digicert.com/CPS" }], "for GitHub.com site"); var x1 = new X509(); x1.readCertPEM(pulseCioGovPEM); deepEqual(x1.getExtCertificatePolicies(), [{ id: "2.23.140.1.2.1" },{ id: "1.3.6.1.4.1.44947.1.1.1", cps: "http://cps.letsencrypt.org", unotice: "This Certificate may only be relied upon by Relying Parties and only in accordance with the Certificate Policy found at https://letsencrypt.org/repository/" }], "for pulse.cio.gov site Let's Encrypt cert"); }); // === OLD STATIC METHODS ================== test("readCertPEM, parseExt aExtInfo github.com", function() { var x = new X509(); x.readCertPEM(certGithubPEM); var a = x.aExtInfo; equal(a.length, 9, "num ext=9"); equal(a[0].vidx, 1502, "AKID TLV index"); equal(a[0].oid, "2.5.29.35", "AKID oid"); equal(a[0].critical, false, "AKID critical"); equal(a[0].vidx, 1502, "AKID value index"); equal(a[1].oid, "2.5.29.14", "SKID oid"); equal(a[1].critical, false, "SKID critical"); equal(a[2].oid, "2.5.29.17", "SAN oid"); equal(a[2].critical, false, "SAN critical"); equal(a[3].oid, "2.5.29.15", "KeyUsage oid"); equal(a[3].critical, true, "KeyUsage critical"); equal(a[3].vidx, 1714, "KeyUsage posV"); equal(ASN1HEX.getTLV(x.hex, a[3].vidx), "030205a0", "KeyUsage value 030205a0"); equal(a[4].oid, "2.5.29.37", "ExtKeyUsage oid"); equal(a[4].critical, false, "ExtKeyUsage critical"); equal(a[5].oid, "2.5.29.31", "CDP oid"); equal(a[5].critical, false, "CDP critical"); equal(a[6].oid, "2.5.29.32", "CertPolicy oid"); equal(a[6].critical, false, "CertPolicy critical"); equal(a[7].oid, "1.3.6.1.5.5.7.1.1", "AIA oid"); equal(a[7].critical, false, "AIA critical"); equal(a[8].oid, "2.5.29.19", "basicConstraints oid"); equal(a[8].critical, true, "basicConstraints critical"); equal(ASN1HEX.getTLV(x.hex, a[8].vidx), "3000", "basicConst value 3000"); }); test("getExtInfo vidx github.com", function() { var x = new X509(); x.readCertPEM(certGithubPEM); equal(x.getExtInfo("keyUsage").vidx, 1714, "by keyUsage"); equal(x.getExtInfo("2.5.29.15").vidx, 1714, "by 2.5.29.15(=keyUsage)"); equal(x.getExtInfo("policyConstraints"), undefined, "by policyConstraints -> undefined, no such extension"); equal(x.getExtInfo("0.0.0.0"), undefined, "by 0.0.0.0 -> undefined, no such extension"); }); test("getExtInfo getV github.com", function() { var x = new X509(); x.readCertPEM(certGithubPEM); var ku = x.getExtInfo("keyUsage"); equal(ASN1HEX.getV(x.hex, ku.vidx), "05a0", "by keyUsage"); equal(x.getExtInfo("policyConstraints"), undefined, "by policyConstraints -> undefined, no such extension"); equal(x.getExtInfo("0.0.0.0"), undefined, "by 0.0.0.0 -> undefined, no such extension"); }); test("getExtInfo getTLV github.com", function() { var x = new X509(); x.readCertPEM(certGithubPEM); var ku = x.getExtInfo("keyUsage"); equal(ASN1HEX.getTLV(x.hex, ku.vidx), "030205a0", "by keyUsage"); equal(x.getExtInfo("policyConstraints"), undefined, "by policyConstraints -> undefined, no such extension"); equal(x.getExtInfo("0.0.0.0"), undefined, "by 0.0.0.0 -> undefined, no such extension"); }); test("getExtKeyUsageBin", function() { var x = new X509(); x.readCertPEM(certGithubPEM); equal(x.getExtKeyUsageBin(), "101", "101"); }); test("getExtKeyUsageString", function() { var x = new X509(); x.readCertPEM(certGithubPEM); equal(x.getExtKeyUsageString(), "digitalSignature,keyEncipherment", "digitalSignature,keyEncipherment"); }); test("getExtAIAInfo", function() { var x = new X509(); x.readCertPEM(certGithubPEM); var info = x.getExtAIAInfo(); equal(info.ocsp.length, 1, "number item of ocsp = 1"); equal(info.ocsp[0], "http://ocsp.digicert.com", "ocsp=http://ocsp.digicert.com"); equal(info.caissuer.length, 1, "number item of caIssuer = 1"); equal(info.caissuer[0], "http://cacerts.digicert.com/DigiCertSHA2ExtendedValidationServerCA.crt", "caIssuer=http://cacerts.digicert.com/DigiCertSHA2ExtendedValidationServerCA.crt"); }); test("getExtBasicConstraints k1 {cA:true}", function() { var x = new X509(); x.readCertHex(k1CertHex); var r = x.getExtBasicConstraints(); equal(typeof r, "object"); equal(r.cA, true); equal(r.pathLen === undefined, true); }); // test/z1.der1-p3 basicConstraints={ca:true, pathlen:3} test("getExtBasicConstraints z1.der1-p3 {cA:true,pathLen:3}", function() { var x = new X509(); x.readCertHex("3082017630820120a003020102020107300d06092a864886f70d01010b05003019310b3009060355040613025553310a3008060355040a0c0154301e170d3136303431333134313832365a170d3236303431333134313832365a3019310b3009060355040613025553310a3008060355040a0c0154305c300d06092a864886f70d0101010500034b003048024100e8664dd2b40529121568f3b39bc97a62e7ba3c09babdc4f0dcd8df90eb790b9bb645a2b70e3112747b4d3c41b51424895115fef88f79d43eae5b1a4e3518fd590203010001a3533051301d0603551d0e04160414c5473ee200c8e7ad7003dff5420b8cddf4c20e15301f0603551d23041830168014c5473ee200c8e7ad7003dff5420b8cddf4c20e15300f0603551d13040830060101ff020103300d06092a864886f70d01010b0500034100862bf6d5f0c366dd1c71af10df93e2e9e0b7210b6912d1774e27107203f2dc257f9b132285bc1ce8d32d8ffc69470cd6c52ec76b7d68708eca3bbd49556f3005"); var r = x.getExtBasicConstraints(); equal(typeof r, "object"); equal(r.cA, true); equal(r.pathLen, 3); }); // test/z1.der2-no basicConstraints has empty value (for EE) test("getExtBasicConstraints z1.der2-emp {}", function() { var x = new X509(); x.readCertHex("308201703082011aa003020102020107300d06092a864886f70d01010b05003019310b3009060355040613025553310a3008060355040a0c0154301e170d3136303431333134313934345a170d3236303431333134313934345a3019310b3009060355040613025553310a3008060355040a0c0154305c300d06092a864886f70d0101010500034b003048024100e8664dd2b40529121568f3b39bc97a62e7ba3c09babdc4f0dcd8df90eb790b9bb645a2b70e3112747b4d3c41b51424895115fef88f79d43eae5b1a4e3518fd590203010001a34d304b301d0603551d0e04160414c5473ee200c8e7ad7003dff5420b8cddf4c20e15301f0603551d23041830168014c5473ee200c8e7ad7003dff5420b8cddf4c20e1530090603551d1304023000300d06092a864886f70d01010b050003410039de7f9c2975d1d309edd707609c3052c6adeda0b440c55e86410d303abd3363e4d66a1858c5c7f747fee590c38cf68a9ae39ce394175e36d12308490d3b94f2"); var r = x.getExtBasicConstraints(); deepEqual(r, {}, "der2-emp"); }); // test/z1.der3-no (no basic constraints) test("getExtBasicConstraints z1.der3-no (no basic constraints)", function() { var x = new X509(); x.readCertHex("308201653082010fa003020102020107300d06092a864886f70d01010b05003019310b3009060355040613025553310a3008060355040a0c0154301e170d3136303431333135313332335a170d3236303431333135313332335a3019310b3009060355040613025553310a3008060355040a0c0154305c300d06092a864886f70d0101010500034b003048024100e8664dd2b40529121568f3b39bc97a62e7ba3c09babdc4f0dcd8df90eb790b9bb645a2b70e3112747b4d3c41b51424895115fef88f79d43eae5b1a4e3518fd590203010001a3423040301d0603551d0e04160414c5473ee200c8e7ad7003dff5420b8cddf4c20e15301f0603551d23041830168014c5473ee200c8e7ad7003dff5420b8cddf4c20e15300d06092a864886f70d01010b050003410016f823db6f65546958157ec08c20e736b0243fb6fa2fba6b74ac036f0115786c070d80d94b428f2f9d174169fb19e00fadfa5dbfbd19f27e2782adbd7bec644b"); var r = x.getExtBasicConstraints(); equal(r, null); }); }); </script> </head> <body> <div id="qunit"></div> <div id="qunit-fixture">test markup</div> <p> <a href="../">TOP</a> | <a href="index.html">TEST INDEX</a> | <a href="qunit-do-x509.html">x509</a> | <a href="qunit-do-x509-ext.html">x509-ext</a> | <a href="qunit-do-x509-key.html">x509-key</a> | <a href="qunit-do-x509-kid.html">x509-kid</a> | <a href="qunit-do-x509-getinfo.html">x509-getinfo</a> | </p> </body> <center><p>&copy; 2015-2017 Kenji Urushima</p></center> </html>