api-console-assets
Version:
This repo only exists to publish api console components to npm
350 lines (299 loc) • 14.7 kB
HTML
<html>
<head>
<title>QUnit test for getPEM method 'keyutil.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="http://code.jquery.com/qunit/qunit-1.11.0.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.11.0.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/base64.js"></script>
<script src="../ext/rsa.js"></script>
<script src="../ext/rsa2.js"></script>
<script src="../ext/ec.js"></script>
<script src="../ext/ec-patch.js"></script>
<script src="../src/base64x-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/crypto-1.1.js"></script>
<script src="../src/ecdsa-modified-1.0.js"></script>
<script src="../src/ecparam-1.0.js"></script>
<script src="../src/asn1-1.0.js"></script>
<script src="../src/asn1x509-1.0.js"></script>
<script src="../src/dsa-2.0.js"></script>
<script src="../src/keyutil-1.0.js"></script>
<script type="text/javascript">
<!--
$(document).ready(function(){
// _test/z1.pub.p8.pem (RSA 512bit)
var z1PubP8PEM = "" +
"-----BEGIN PUBLIC KEY-----\n" +
"MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOhmTdK0BSkSFWjzs5vJemLnujwJur3E\n" +
"8NzY35DreQubtkWitw4xEnR7TTxBtRQkiVEV/viPedQ+rlsaTjUY/VkCAwEAAQ==\n" +
"-----END PUBLIC KEY-----\n";
// _gitpg/jsrsasign/test/eckey/k1.*
var k1PubP8PEM = "" +
"-----BEGIN PUBLIC KEY-----\n" +
"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoBUyo8CQAFPeYPvv78ylh5MwFZjT\n" +
"CLQeb042TjiMJxG+9DLFmRSMlBQ9T/RsLLc+PmpB1+7yPAR+oR5gZn3kJQ==\n" +
"-----END PUBLIC KEY-----\n";
// _work_dsa/d1.pub.p8.pem
var d1PubP8PEM = "" +
"-----BEGIN PUBLIC KEY-----\n" +
"MIIBtzCCASsGByqGSM44BAEwggEeAoGBAJ7TJ6EkB8jS3Jprk1n7xI8qMXUE8ztI\n" +
"ZhxLA3ePVbgYryGShbvN+mD2P5b1w8BnONckMqNvRtZJCg/nAjhRdnHnq9tDDE/7\n" +
"dKF/ttDOzu4o/dtJJzvNFlpSDkqXF7TSfvBvNBffap6i2jUFjxGa52rICVosRe5X\n" +
"bD3+glPzRJpPAhUAgyEkwxiCmPjW3RrYQSHC7zOl1SsCgYBxGsQFO69QKqCgmry3\n" +
"r3KIVJXh77DeEp2Tx7sW8OS4ChoQ0ECe1SvNDfC1UR9uCPdHFVF+lAbt1F148O8V\n" +
"2Ssn7zmOp7+TZfoTWRMiFJ+oRjUYfaJ38Vy8jJooQj/rIzIh5dGtNtkm0uHgx3Dz\n" +
"TcBKYW9VaFIiqbHPT47Ph8GbfgOBhQACgYEAjK/ZZUzlGBjhVGE70LFO6XT73/xa\n" +
"GYAsQwEwK8hU1eF9rw1nRaSqqORv+WtXyJNx+nLMoSoiSIIWRdH/dYaaJUmtf9EQ\n" +
"zu/qVhbQC+WUEDbhoth7vPC/vmw7Hhi6DTs69tNLrPYTJwoLX2fHhmjkuls+wKoo\n" +
"52LqH58uAWfgUjs=\n" +
"-----END PUBLIC KEY-----\n";
// getKey PKCS#5 EC (DES,AES128) =============================================
var k1PrvP5EPEMAES = "" +
"-----BEGIN EC PRIVATE KEY-----\n" +
"Proc-Type: 4,ENCRYPTED\n" +
"DEK-Info: AES-128-CBC,82AB598946381DC29DFF9284AC87FC3B\n" +
"\n" +
"Dfmfeq7gCFgSke6vSaSSaDeKLcdS5Y1ULC2ItDhxFTTJBsx+GN6Xleov9O/sNVJJ\n" +
"oppEd9tiumPXV0JcDkzKYfvJpERQ4DPg5DVat55dvb5XtfeHu6N5TbrZvYlXFzju\n" +
"+hkBdUBbdd9IGDIy2LMDk6OJU+6xdjGTg2n4hMJ2TMo=\n" +
"-----END EC PRIVATE KEY----- \n";
var k1PrvP5EPEMDES = "" +
"-----BEGIN EC PRIVATE KEY-----\n" +
"Proc-Type: 4,ENCRYPTED\n" +
"DEK-Info: DES-CBC,645FBB08673C98F4\n" +
"\n" +
"8fuc/voymYvarRk58pkmpty0boF3ntX1A3SI742tWCL1+8E+alEoc8bAVbhsnELa\n" +
"b9cxRtmv4s26UOd6HUmvwS2OaifN/C6fmxRmrMm1XEuRMWu7k9AeCu5VoP9KnNCk\n" +
"b8EzJErKSjFGqgVZVm6dmQ3X8myCRl4ATx+s14dQ4jM=\n" +
"-----END EC PRIVATE KEY-----\n";
test("getKey private ECDSA k1.prv.p5e.pem (DES) > PKCS5PRV", function() {
var key = KEYUTIL.getKey(k1PrvP5EPEMDES, "passwd");
equal(key.prvKeyHex, "11b5737cf9d93f17c0cb1a84655d3995a02824097effa5edd8ee26381eb5d6c3", "");
});
test("getKey private ECDSA k1.prv.p5e.pem (AES-128) > PKCS5PRV", function() {
var key = KEYUTIL.getKey(k1PrvP5EPEMAES, "password-orange");
equal(key.prvKeyHex, "11b5737cf9d93f17c0cb1a84655d3995a02824097effa5edd8ee26381eb5d6c3", "");
});
// private key test ==============================================
test("getKey private DSA d1.prv.p8p.pem", function() {
var key = KEYUTIL.getKey(d1PrvP8PPEM);
expect(1);
equal(key.x.toString(16), "73b3538660ceac98a3bf48e53f88b4e124657c21", "");
});
// public key test ==============================================
test("getPEM public RSA z1.pub.p8.pem", function() {
var key = KEYUTIL.getKey(z1PubP8PEM);
equal(KEYUTIL.getPEM(key).replace(/\r\n/g, "\n"), z1PubP8PEM, "");
});
test("getPEM public ECDSA k1.pub.p8.pem", function() {
var key = KEYUTIL.getKey(k1PubP8PEM);
equal(hextob64("6161616161"), "YWFhYWE=", "aaaaa");
equal(hextob64("305c300d06092a864886f70d0101010500034b003048024100e8664dd2b40529121568f3b39bc97a62e7ba3c09babdc4f0dcd8df90eb790b9bb645a2b70e3112747b4d3c41b51424895115fef88f79d43eae5b1a4e3518fd590203010001"), "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOhmTdK0BSkSFWjzs5vJemLnujwJur3E8NzY35DreQubtkWitw4xEnR7TTxBtRQkiVEV/viPedQ+rlsaTjUY/VkCAwEAAQ==", "k1 pub");
equal(KEYUTIL.getPEM(key).replace(/\r\n/g, "\n"), k1PubP8PEM, "k1 pub p8 pem");
});
test("getPEM public DSA d1.pub.p8.pem", function() {
var key = KEYUTIL.getKey(d1PubP8PEM);
equal(KEYUTIL.getPEM(key).replace(/\r\n/g, "\n"), d1PubP8PEM, "");
});
// private key test 1 (PKCS1 plain) ===============================
// _test/z1.prv.p5p.pem (RSA)
var z1PrvP5PPEM = "" +
"-----BEGIN RSA PRIVATE KEY-----\n" +
"MIIBOgIBAAJBAOhmTdK0BSkSFWjzs5vJemLnujwJur3E8NzY35DreQubtkWitw4x\n" +
"EnR7TTxBtRQkiVEV/viPedQ+rlsaTjUY/VkCAwEAAQJAeLvFTGRnlemmI8sPkSx/\n" +
"n2hhcRVg5Xut4h3tL32Vefhicvq55xqycoLCdgxATa5qyKOrhSz2vNVi+a/4JHom\n" +
"TQIhAP6b1FCGazJVYU/el2p2rAsdWDDdpk9TWblG2FErwSOfAiEA6atoD18F27D0\n" +
"MRsOb0No9IdKEjiXnYvGAMNcbyBwfAcCIQDVSctpjcF9T+MOWoTzrehgAzwe639n\n" +
"0oZGXJ/YF9RbNwIgGEm0u0RJO5idCS2ixnXfRut5C4POXpXUsuebiAF7L6kCIH0m\n" +
"GpYlbUmwIMsdWH7N4Sfgk6TSs0zb/xcfNBJbWFep\n" +
"-----END RSA PRIVATE KEY-----\n";
// _gitpg/jsrsasign/test/eckey/k1.prv.p8p.pem (ECC)
var k1PrvP8PPEM = "" +
"-----BEGIN PRIVATE KEY-----\n" +
"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgEbVzfPnZPxfAyxqE\n" +
"ZV05laAoJAl+/6Xt2O4mOB611sOhRANCAASgFTKjwJAAU95g++/vzKWHkzAVmNMI\n" +
"tB5vTjZOOIwnEb70MsWZFIyUFD1P9Gwstz4+akHX7vI8BH6hHmBmfeQl\n" +
"-----END PRIVATE KEY-----\n";
var k1PrvP5PPEM = "" +
"-----BEGIN EC PARAMETERS-----\n" +
"BggqhkjOPQMBBw==\n" +
"-----END EC PARAMETERS-----\n" +
"-----BEGIN EC PRIVATE KEY-----\n" +
"MHcCAQEEIBG1c3z52T8XwMsahGVdOZWgKCQJfv+l7djuJjgetdbDoAoGCCqGSM49\n" +
"AwEHoUQDQgAEoBUyo8CQAFPeYPvv78ylh5MwFZjTCLQeb042TjiMJxG+9DLFmRSM\n" +
"lBQ9T/RsLLc+PmpB1+7yPAR+oR5gZn3kJQ==\n" +
"-----END EC PRIVATE KEY-----\n";
// _work_dsa/d1.prv.p5p.pem DSA 1024bit
var d1PrvP5PPEM = "" +
"-----BEGIN DSA PRIVATE KEY-----\n" +
"MIIBuwIBAAKBgQCe0yehJAfI0tyaa5NZ+8SPKjF1BPM7SGYcSwN3j1W4GK8hkoW7\n" +
"zfpg9j+W9cPAZzjXJDKjb0bWSQoP5wI4UXZx56vbQwxP+3Shf7bQzs7uKP3bSSc7\n" +
"zRZaUg5Klxe00n7wbzQX32qeoto1BY8RmudqyAlaLEXuV2w9/oJT80SaTwIVAIMh\n" +
"JMMYgpj41t0a2EEhwu8zpdUrAoGAcRrEBTuvUCqgoJq8t69yiFSV4e+w3hKdk8e7\n" +
"FvDkuAoaENBAntUrzQ3wtVEfbgj3RxVRfpQG7dRdePDvFdkrJ+85jqe/k2X6E1kT\n" +
"IhSfqEY1GH2id/FcvIyaKEI/6yMyIeXRrTbZJtLh4Mdw803ASmFvVWhSIqmxz0+O\n" +
"z4fBm34CgYEAjK/ZZUzlGBjhVGE70LFO6XT73/xaGYAsQwEwK8hU1eF9rw1nRaSq\n" +
"qORv+WtXyJNx+nLMoSoiSIIWRdH/dYaaJUmtf9EQzu/qVhbQC+WUEDbhoth7vPC/\n" +
"vmw7Hhi6DTs69tNLrPYTJwoLX2fHhmjkuls+wKoo52LqH58uAWfgUjsCFHOzU4Zg\n" +
"zqyYo79I5T+ItOEkZXwh\n" +
"-----END DSA PRIVATE KEY-----\n";
test("getPEM private RSA z1.prv.p5p.pem > PKCS1PRV", function() {
var key = KEYUTIL.getKey(z1PrvP5PPEM);
equal(KEYUTIL.getPEM(key, "PKCS1PRV").replace(/\r\n/g, "\n"), z1PrvP5PPEM, "");
});
test("getPEM private ECDSA k1.prv.p8p.pem > PKCS1PRV", function() {
var key = KEYUTIL.getKey(k1PrvP8PPEM);
equal(KEYUTIL.getPEM(key, "PKCS1PRV").replace(/\r\n/g, "\n"), k1PrvP5PPEM, "");
});
test("getPEM private DSA d1.prv.p5p.pem > PKCS1PRV", function() {
var key = KEYUTIL.getKey(d1PrvP5PPEM);
equal(KEYUTIL.getPEM(key, "PKCS1PRV").replace(/\r\n/g, "\n"), d1PrvP5PPEM, "");
});
// private key test 2 (PKCS5 encrypted) ========================
test("getPEM private RSA z1.prv.p5p.pem > PKCS5PRV", function() {
var key = KEYUTIL.getKey(z1PrvP5PPEM);
var pem = KEYUTIL.getPEM(key, "PKCS5PRV", "password-orange", "AES-128-CBC");
var key2 = KEYUTIL.getKey(pem, "password-orange");
expect(2);
equal(pem.indexOf("AES-128-CBC") != -1, true, "");
equal(key2.d.toString(16), "78bbc54c646795e9a623cb0f912c7f9f6861711560e57bade21ded2f7d9579f86272fab9e71ab27282c2760c404dae6ac8a3ab852cf6bcd562f9aff8247a264d", "");
});
test("getPEM private ECDSA k1.prv.p5p.pem > PKCS5PRV AES-128-CBC", function() {
var key = KEYUTIL.getKey(k1PrvP8PPEM);
var pem = KEYUTIL.getPEM(key, "PKCS5PRV", "password-orange", "AES-128-CBC");
var key2 = KEYUTIL.getKey(pem, "password-orange");
expect(2);
equal(pem.indexOf("AES-128-CBC") != -1, true, pem);
equal(key2.prvKeyHex, "11b5737cf9d93f17c0cb1a84655d3995a02824097effa5edd8ee26381eb5d6c3", "");
});
test("getPEM private ECDSA k1.prv.p5p.pem > PKCS5PRV DES-CBC", function() {
var key = KEYUTIL.getKey(k1PrvP8PPEM);
var pem = KEYUTIL.getPEM(key, "PKCS5PRV", "password-orange", "DES-CBC");
var key2 = KEYUTIL.getKey(pem, "password-orange");
expect(2);
equal(pem.indexOf("DES-CBC") != -1, true, pem);
equal(key2.prvKeyHex, "11b5737cf9d93f17c0cb1a84655d3995a02824097effa5edd8ee26381eb5d6c3", "");
});
test("getPEM private DSA d1.prv.p5p.pem > PKCS5PRV", function() {
var key = KEYUTIL.getKey(d1PrvP5PPEM);
var pem = KEYUTIL.getPEM(key, "PKCS5PRV", "password-orange", "AES-128-CBC");
var key2 = KEYUTIL.getKey(pem, "password-orange");
expect(2);
equal(pem.indexOf("AES-128-CBC") != -1, true, "");
equal(key2.x.toString(16), "73b3538660ceac98a3bf48e53f88b4e124657c21", "");
});
// PKCS8 plain private key
var d1PrvP8PPEM = "" +
"-----BEGIN PRIVATE KEY-----\n" +
"MIIBSgIBADCCASsGByqGSM44BAEwggEeAoGBAJ7TJ6EkB8jS3Jprk1n7xI8qMXUE\n" +
"8ztIZhxLA3ePVbgYryGShbvN+mD2P5b1w8BnONckMqNvRtZJCg/nAjhRdnHnq9tD\n" +
"DE/7dKF/ttDOzu4o/dtJJzvNFlpSDkqXF7TSfvBvNBffap6i2jUFjxGa52rICVos\n" +
"Re5XbD3+glPzRJpPAhUAgyEkwxiCmPjW3RrYQSHC7zOl1SsCgYBxGsQFO69QKqCg\n" +
"mry3r3KIVJXh77DeEp2Tx7sW8OS4ChoQ0ECe1SvNDfC1UR9uCPdHFVF+lAbt1F14\n" +
"8O8V2Ssn7zmOp7+TZfoTWRMiFJ+oRjUYfaJ38Vy8jJooQj/rIzIh5dGtNtkm0uHg\n" +
"x3DzTcBKYW9VaFIiqbHPT47Ph8GbfgQWAhRzs1OGYM6smKO/SOU/iLThJGV8IQ==\n" +
"-----END PRIVATE KEY-----\n";
test("getPEM private RSA z1.prv.p5p.pem > PKCS8PRV plain", function() {
var key = KEYUTIL.getKey(z1PrvP5PPEM);
var pem = KEYUTIL.getPEM(key, "PKCS8PRV");
var key2 = KEYUTIL.getKey(pem)
expect(2);
equal(pem.indexOf("-BEGIN PRIVATE KEY-") != -1, true, "");
equal(key2.d.toString(16), "78bbc54c646795e9a623cb0f912c7f9f6861711560e57bade21ded2f7d9579f86272fab9e71ab27282c2760c404dae6ac8a3ab852cf6bcd562f9aff8247a264d", "");
});
test("getPEM private ECDSA k1.prv.p5p.pem > PKCS8PRV plain", function() {
var key = KEYUTIL.getKey(k1PrvP8PPEM);
var pem = KEYUTIL.getPEM(key, "PKCS8PRV");
var key2 = KEYUTIL.getKey(pem);
expect(2);
equal(pem.indexOf("-BEGIN PRIVATE KEY-") != -1, true, "");
equal(key2.prvKeyHex, "11b5737cf9d93f17c0cb1a84655d3995a02824097effa5edd8ee26381eb5d6c3", "");
});
test("getPEM private DSA d1.prv.p5p.pem > PKCS8PRV plain", function() {
var key = KEYUTIL.getKey(d1PrvP5PPEM);
var pem = KEYUTIL.getPEM(key, "PKCS8PRV");
expect(3);
equal(pem.indexOf("-BEGIN PRIVATE KEY-") != -1, true, pem);
equal(pem.replace(/\r\n/g, "\n"), d1PrvP8PPEM, "");
var key2 = KEYUTIL.getKey(pem);
equal(key2.x.toString(16), "73b3538660ceac98a3bf48e53f88b4e124657c21", "");
});
// encripted PKCS#8 ==================================================================================
test("getPEM private RSA z1.prv.p5p.pem > PKCS8PRV encrypted", function() {
var key = KEYUTIL.getKey(z1PrvP5PPEM);
expect(2);
var pem = KEYUTIL.getPEM(key, "PKCS8PRV", "orange");
equal(pem.indexOf("-BEGIN ENCRYPTED PRIVATE KEY-") != -1, true, pem);
var key2 = KEYUTIL.getKey(pem, "orange");
equal(key2.d.toString(16), "78bbc54c646795e9a623cb0f912c7f9f6861711560e57bade21ded2f7d9579f86272fab9e71ab27282c2760c404dae6ac8a3ab852cf6bcd562f9aff8247a264d", "");
});
test("getPEM private ECDSA k1.prv.p5p.pem > PKCS8PRV encrypted", function() {
var key = KEYUTIL.getKey(k1PrvP8PPEM);
expect(2);
var pem = KEYUTIL.getPEM(key, "PKCS8PRV", "orange");
equal(pem.indexOf("-BEGIN ENCRYPTED PRIVATE KEY-") != -1, true, pem);
var key2 = KEYUTIL.getKey(pem, "orange");
equal(key2.prvKeyHex, "11b5737cf9d93f17c0cb1a84655d3995a02824097effa5edd8ee26381eb5d6c3", "");
});
test("getPEM private DSA d1.prv.p5p.pem > PKCS8PRV encrypted", function() {
var key = KEYUTIL.getKey(d1PrvP5PPEM);
expect(2);
var pem = KEYUTIL.getPEM(key, "PKCS8PRV", "orange");
equal(pem.indexOf("-BEGIN ENCRYPTED PRIVATE KEY-") != -1, true, pem);
var key2 = KEYUTIL.getKey(pem, "orange");
equal(key2.x.toString(16), "73b3538660ceac98a3bf48e53f88b4e124657c21", "");
});
// encripted PKCS#8 with generateKey============================================================
test("aaa", function() {
var kp = KEYUTIL.generateKeypair("RSA", 1024);
var prvKey = kp.prvKeyObj;
var pem1 = KEYUTIL.getPEM(prvKey, "PKCS5PRV", "passwd", "AES-128-CBC");
//alert(pem1);
var prvKey1 = KEYUTIL.getKey(pem1, "passwd");
//alert(prvKey1.d.toString(16));
var pem2 = KEYUTIL.getPEM(prvKey, "PKCS8PRV", "passwd2");
//alert(pem2);
var prvKey2 = KEYUTIL.getKey(pem2, "passwd2");
//alert(prvKey2.d.toString(16));
equal(prvKey1.d.toString(16), prvKey2.d.toString(16), "same d - " + prvKey2.d.toString(16));
});
});
-->
</script>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture">test markup</div>
QUnit for
<a href="qunit-do-keyutil.html">keyutil</a> |
<a href="qunit-do-keyutil-eprv.html">keyutil-eprv</a> |
<a href="qunit-do-keyutil-pub.html">keyutil-pub</a> |
</body>
</html>