@unabandoned/parse-asn1 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.githooks/commit-msg +2 -0
- package/.github/FUNDING.yml +12 -0
- package/.github/workflows/ci.yml +13 -0
- package/.github/workflows/codeql.yml +14 -0
- package/.github/workflows/commitlint.yml +8 -0
- package/.github/workflows/publish.yml +16 -0
- package/.github/workflows/release-cut.yml +12 -0
- package/.github/workflows/release-please.yml +11 -0
- package/.github/workflows/release-security.yml +11 -0
- package/.github/workflows/renovate-config.yml +10 -0
- package/.github/workflows/scorecard.yml +14 -0
- package/.release-please-manifest.json +3 -0
- package/.unabandoned.yml +30 -0
- package/CHANGELOG.md +216 -0
- package/LICENSE +13 -0
- package/README.md +15 -0
- package/aesid.json +13 -0
- package/asn1.js +123 -0
- package/certificate.js +89 -0
- package/commitlint.config.js +1 -0
- package/evp-bytes-to-key.js +56 -0
- package/fixProc.js +33 -0
- package/index.js +111 -0
- package/package.json +46 -0
- package/release-please-config.json +24 -0
- package/renovate.json +7 -0
- package/test/1024.priv +16 -0
- package/test/1024.pub +6 -0
- package/test/cert.priv +27 -0
- package/test/cert.pub +20 -0
- package/test/dsa.1024.priv +18 -0
- package/test/dsa.1024.pub +12 -0
- package/test/dsa.2048.priv +20 -0
- package/test/dsa.2048.pub +20 -0
- package/test/ec.pass.priv +7 -0
- package/test/ec.priv +5 -0
- package/test/ec.pub +4 -0
- package/test/index.js +108 -0
- package/test/node.cert +20 -0
- package/test/pass.1024.priv +18 -0
- package/test/pass.1024.pub +6 -0
- package/test/pass.dsa.1024.priv +11 -0
- package/test/pass.dsa.1024.pub +12 -0
- package/test/pass.rsa.1024.priv +18 -0
- package/test/pass.rsa.1024.pub +6 -0
- package/test/pass.rsa.2028.priv +30 -0
- package/test/pass.rsa.2028.pub +9 -0
- package/test/pass2.dsa.1024.priv +15 -0
- package/test/pass2.dsa.1024.pub +12 -0
- package/test/rsa.1024.priv +15 -0
- package/test/rsa.1024.pub +5 -0
- package/test/rsa.2028.priv +27 -0
- package/test/rsa.2028.pub +8 -0
- package/test/tape.js +134 -0
- package/test/vector.js +11 -0
- package/test/vector.priv +12 -0
- package/test/vector2.priv +19 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// EVP_BytesToKey, vendored from evp_bytestokey@1.0.3 (MIT, Calvin Metcalf),
|
|
4
|
+
// unmaintained since 2017. Forty-five lines whose only real content is MD5,
|
|
5
|
+
// which @unabandoned/hash.js provides with no dependencies of its own;
|
|
6
|
+
// depending on the package meant carrying md5.js (2018) and hash-base too.
|
|
7
|
+
|
|
8
|
+
var Buffer = require('safe-buffer').Buffer;
|
|
9
|
+
var md5 = require('@unabandoned/hash.js').md5;
|
|
10
|
+
|
|
11
|
+
function digest(parts) {
|
|
12
|
+
var hash = md5();
|
|
13
|
+
for (var i = 0; i < parts.length; i++) {
|
|
14
|
+
if (parts[i]) { hash.update(parts[i]); }
|
|
15
|
+
}
|
|
16
|
+
return Buffer.from(hash.digest());
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* eslint-disable camelcase */
|
|
20
|
+
function EVP_BytesToKey(password, salt, keyBits, ivLen) {
|
|
21
|
+
if (!Buffer.isBuffer(password)) { password = Buffer.from(password, 'binary'); }
|
|
22
|
+
if (salt) {
|
|
23
|
+
if (!Buffer.isBuffer(salt)) { salt = Buffer.from(salt, 'binary'); }
|
|
24
|
+
if (salt.length !== 8) { throw new RangeError('salt should be Buffer with 8 byte length'); }
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var keyLen = keyBits / 8;
|
|
28
|
+
var key = Buffer.alloc(keyLen);
|
|
29
|
+
var iv = Buffer.alloc(ivLen || 0);
|
|
30
|
+
var tmp = Buffer.alloc(0);
|
|
31
|
+
|
|
32
|
+
while (keyLen > 0 || ivLen > 0) {
|
|
33
|
+
tmp = digest([tmp, password, salt]);
|
|
34
|
+
|
|
35
|
+
var used = 0;
|
|
36
|
+
|
|
37
|
+
if (keyLen > 0) {
|
|
38
|
+
var keyStart = key.length - keyLen;
|
|
39
|
+
used = Math.min(keyLen, tmp.length);
|
|
40
|
+
tmp.copy(key, keyStart, 0, used);
|
|
41
|
+
keyLen -= used;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (used < tmp.length && ivLen > 0) {
|
|
45
|
+
var ivStart = iv.length - ivLen;
|
|
46
|
+
var length = Math.min(ivLen, tmp.length - used);
|
|
47
|
+
tmp.copy(iv, ivStart, used, used + length);
|
|
48
|
+
ivLen -= length;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
tmp.fill(0);
|
|
53
|
+
return { key: key, iv: iv };
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
module.exports = EVP_BytesToKey;
|
package/fixProc.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// adapted from https://github.com/apatil/pemstrip
|
|
4
|
+
var findProc = /Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m;
|
|
5
|
+
var startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;
|
|
6
|
+
var fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m;
|
|
7
|
+
var evp = require('./evp-bytes-to-key');
|
|
8
|
+
var ciphers = require('@unabandoned/browserify-aes');
|
|
9
|
+
var Buffer = require('safe-buffer').Buffer;
|
|
10
|
+
module.exports = function (okey, password) {
|
|
11
|
+
var key = okey.toString();
|
|
12
|
+
var match = key.match(findProc);
|
|
13
|
+
var decrypted;
|
|
14
|
+
if (!match) {
|
|
15
|
+
var match2 = key.match(fullRegex);
|
|
16
|
+
decrypted = Buffer.from(match2[2].replace(/[\r\n]/g, ''), 'base64');
|
|
17
|
+
} else {
|
|
18
|
+
var suite = 'aes' + match[1];
|
|
19
|
+
var iv = Buffer.from(match[2], 'hex');
|
|
20
|
+
var cipherText = Buffer.from(match[3].replace(/[\r\n]/g, ''), 'base64');
|
|
21
|
+
var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key;
|
|
22
|
+
var out = [];
|
|
23
|
+
var cipher = ciphers.createDecipheriv(suite, cipherKey, iv);
|
|
24
|
+
out.push(cipher.update(cipherText));
|
|
25
|
+
out.push(cipher['final']());
|
|
26
|
+
decrypted = Buffer.concat(out);
|
|
27
|
+
}
|
|
28
|
+
var tag = key.match(startRegex)[1];
|
|
29
|
+
return {
|
|
30
|
+
tag: tag,
|
|
31
|
+
data: decrypted
|
|
32
|
+
};
|
|
33
|
+
};
|
package/index.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var asn1 = require('./asn1');
|
|
4
|
+
var aesid = require('./aesid.json');
|
|
5
|
+
var fixProc = require('./fixProc');
|
|
6
|
+
var ciphers = require('@unabandoned/browserify-aes');
|
|
7
|
+
var pbkdf2Sync = require('pbkdf2').pbkdf2Sync;
|
|
8
|
+
var Buffer = require('safe-buffer').Buffer;
|
|
9
|
+
|
|
10
|
+
function decrypt(data, password) {
|
|
11
|
+
var salt = data.algorithm.decrypt.kde.kdeparams.salt;
|
|
12
|
+
var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10);
|
|
13
|
+
var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')];
|
|
14
|
+
var iv = data.algorithm.decrypt.cipher.iv;
|
|
15
|
+
var cipherText = data.subjectPrivateKey;
|
|
16
|
+
var keylen = parseInt(algo.split('-')[1], 10) / 8;
|
|
17
|
+
var key = pbkdf2Sync(password, salt, iters, keylen, 'sha1');
|
|
18
|
+
var cipher = ciphers.createDecipheriv(algo, key, iv);
|
|
19
|
+
var out = [];
|
|
20
|
+
out.push(cipher.update(cipherText));
|
|
21
|
+
out.push(cipher['final']());
|
|
22
|
+
return Buffer.concat(out);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function parseKeys(buffer) {
|
|
26
|
+
var password;
|
|
27
|
+
if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {
|
|
28
|
+
password = buffer.passphrase;
|
|
29
|
+
buffer = buffer.key;
|
|
30
|
+
}
|
|
31
|
+
if (typeof buffer === 'string') {
|
|
32
|
+
buffer = Buffer.from(buffer);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
var stripped = fixProc(buffer, password);
|
|
36
|
+
|
|
37
|
+
var type = stripped.tag;
|
|
38
|
+
var data = stripped.data;
|
|
39
|
+
var subtype, ndata;
|
|
40
|
+
switch (type) {
|
|
41
|
+
case 'CERTIFICATE':
|
|
42
|
+
ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo;
|
|
43
|
+
// falls through
|
|
44
|
+
case 'PUBLIC KEY':
|
|
45
|
+
if (!ndata) {
|
|
46
|
+
ndata = asn1.PublicKey.decode(data, 'der');
|
|
47
|
+
}
|
|
48
|
+
subtype = ndata.algorithm.algorithm.join('.');
|
|
49
|
+
switch (subtype) {
|
|
50
|
+
case '1.2.840.113549.1.1.1':
|
|
51
|
+
return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der');
|
|
52
|
+
case '1.2.840.10045.2.1':
|
|
53
|
+
ndata.subjectPrivateKey = ndata.subjectPublicKey;
|
|
54
|
+
return {
|
|
55
|
+
type: 'ec',
|
|
56
|
+
data: ndata
|
|
57
|
+
};
|
|
58
|
+
case '1.2.840.10040.4.1':
|
|
59
|
+
ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der');
|
|
60
|
+
return {
|
|
61
|
+
type: 'dsa',
|
|
62
|
+
data: ndata.algorithm.params
|
|
63
|
+
};
|
|
64
|
+
default: throw new Error('unknown key id ' + subtype);
|
|
65
|
+
}
|
|
66
|
+
// throw new Error('unknown key type ' + type)
|
|
67
|
+
case 'ENCRYPTED PRIVATE KEY':
|
|
68
|
+
data = asn1.EncryptedPrivateKey.decode(data, 'der');
|
|
69
|
+
data = decrypt(data, password);
|
|
70
|
+
// falls through
|
|
71
|
+
case 'PRIVATE KEY':
|
|
72
|
+
ndata = asn1.PrivateKey.decode(data, 'der');
|
|
73
|
+
subtype = ndata.algorithm.algorithm.join('.');
|
|
74
|
+
switch (subtype) {
|
|
75
|
+
case '1.2.840.113549.1.1.1':
|
|
76
|
+
return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der');
|
|
77
|
+
case '1.2.840.10045.2.1':
|
|
78
|
+
return {
|
|
79
|
+
curve: ndata.algorithm.curve,
|
|
80
|
+
privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey
|
|
81
|
+
};
|
|
82
|
+
case '1.2.840.10040.4.1':
|
|
83
|
+
ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der');
|
|
84
|
+
return {
|
|
85
|
+
type: 'dsa',
|
|
86
|
+
params: ndata.algorithm.params
|
|
87
|
+
};
|
|
88
|
+
default: throw new Error('unknown key id ' + subtype);
|
|
89
|
+
}
|
|
90
|
+
// throw new Error('unknown key type ' + type)
|
|
91
|
+
case 'RSA PUBLIC KEY':
|
|
92
|
+
return asn1.RSAPublicKey.decode(data, 'der');
|
|
93
|
+
case 'RSA PRIVATE KEY':
|
|
94
|
+
return asn1.RSAPrivateKey.decode(data, 'der');
|
|
95
|
+
case 'DSA PRIVATE KEY':
|
|
96
|
+
return {
|
|
97
|
+
type: 'dsa',
|
|
98
|
+
params: asn1.DSAPrivateKey.decode(data, 'der')
|
|
99
|
+
};
|
|
100
|
+
case 'EC PRIVATE KEY':
|
|
101
|
+
data = asn1.ECPrivateKey.decode(data, 'der');
|
|
102
|
+
return {
|
|
103
|
+
curve: data.parameters.value,
|
|
104
|
+
privateKey: data.privateKey
|
|
105
|
+
};
|
|
106
|
+
default: throw new Error('unknown key type ' + type);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
parseKeys.signature = asn1.signature;
|
|
110
|
+
|
|
111
|
+
module.exports = parseKeys;
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@unabandoned/parse-asn1",
|
|
3
|
+
"version": "5.2.0",
|
|
4
|
+
"description": "utility library for parsing asn1 files for use with browserify-sign.",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "node --test test/*.js",
|
|
8
|
+
"prepare": "git config core.hooksPath .githooks || true"
|
|
9
|
+
},
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/unabandoned/parse-asn1.git"
|
|
13
|
+
},
|
|
14
|
+
"author": "",
|
|
15
|
+
"license": "ISC",
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@unabandoned/asn1.js": "^5.4.1",
|
|
18
|
+
"@unabandoned/browserify-aes": "^1.4.0",
|
|
19
|
+
"@unabandoned/hash.js": "^1.4.0",
|
|
20
|
+
"pbkdf2": "npm:@unabandoned/pbkdf2@^3.2.1",
|
|
21
|
+
"safe-buffer": "^5.2.1"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@commitlint/cli": "21.2.2",
|
|
25
|
+
"@commitlint/config-conventional": "21.2.2"
|
|
26
|
+
},
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">= 0.10"
|
|
29
|
+
},
|
|
30
|
+
"auto-changelog": {
|
|
31
|
+
"output": "CHANGELOG.md",
|
|
32
|
+
"template": "keepachangelog",
|
|
33
|
+
"unreleased": false,
|
|
34
|
+
"commitLimit": false,
|
|
35
|
+
"backfillLimit": false,
|
|
36
|
+
"hideCredit": true
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public",
|
|
40
|
+
"provenance": true
|
|
41
|
+
},
|
|
42
|
+
"bugs": {
|
|
43
|
+
"url": "https://github.com/unabandoned/parse-asn1/issues"
|
|
44
|
+
},
|
|
45
|
+
"homepage": "https://github.com/unabandoned/parse-asn1#readme"
|
|
46
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
|
|
3
|
+
"packages": {
|
|
4
|
+
".": {
|
|
5
|
+
"release-type": "node",
|
|
6
|
+
"bump-minor-pre-major": true,
|
|
7
|
+
"bump-patch-for-minor-pre-major": true,
|
|
8
|
+
"changelog-sections": [
|
|
9
|
+
{ "type": "feat", "section": "Features" },
|
|
10
|
+
{ "type": "fix", "section": "Bug Fixes" },
|
|
11
|
+
{ "type": "perf", "section": "Performance Improvements" },
|
|
12
|
+
{ "type": "revert", "section": "Reverts" },
|
|
13
|
+
{ "type": "deps", "section": "Dependencies & maintenance" },
|
|
14
|
+
{ "type": "build", "section": "Dependencies & maintenance" },
|
|
15
|
+
{ "type": "chore", "section": "Dependencies & maintenance" },
|
|
16
|
+
{ "type": "ci", "section": "Dependencies & maintenance" },
|
|
17
|
+
{ "type": "refactor", "section": "Dependencies & maintenance" },
|
|
18
|
+
{ "type": "docs", "section": "Dependencies & maintenance" },
|
|
19
|
+
{ "type": "test", "section": "Dependencies & maintenance" },
|
|
20
|
+
{ "type": "style", "section": "Dependencies & maintenance" }
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
package/renovate.json
ADDED
package/test/1024.priv
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKulUTZ8B1qccZ8c
|
|
3
|
+
DXRGSY08gW8KvLlcxxxGC4gZHNT3CBUF8n5R4KE30aZyYZ/rtsQZu05juZJxaJ0q
|
|
4
|
+
mbe75dlQ5d+Xc9BMXeQg/MpTZw5TAN7OIdGYYpFBe+1PLZ6wEfjkYrMqMUcfq2Lq
|
|
5
|
+
hTLdAbvBJnuRcYZLqmBeOQ8FTrKrAgMBAAECgYEAnkHRbEPU3/WISSQrP36iyCb2
|
|
6
|
+
S/SBZwKkzmvCrBxDWhPeDswp9c/2JY76rNWfLzy8iXgUG8WUzvHje61Qh3gmBcKe
|
|
7
|
+
bUaTGl4Vy8Ha1YBADo5RfRrdm0FE4tvgvu/TkqFqpBBZweu54285hk5zlG7n/D7Y
|
|
8
|
+
dnNXUpu5MlNb5x3gW0kCQQDUL//cwcXUxY/evaJP4jSe+ZwEQZo+zXRLiPUulBoV
|
|
9
|
+
aw28CVMuxdgwqAo1X1IKefPeUaf7RQu8gCKaRnpGuEuXAkEAzxZTfMmvmCUDIew4
|
|
10
|
+
5Gk6bK265XQWdhcgiq254lpBGOYmDj9yCE7yA+zmASQwMsXTdQOi1hOCEyrXuSJ5
|
|
11
|
+
c++EDQJAFh3WrnzoEPByuYXMmET8tSFRWMQ5vpgNqh3haHR5b4gUC2hxaiunCBNL
|
|
12
|
+
1RpVY9AoUiDywGcG/SPh93CnKB3niwJBAKP7AtsifZgVXtiizB4aMThTjVYaSZrz
|
|
13
|
+
D0Kg9DuHylpkDChmFu77TGrNUQgAVuYtfhb/bRblVa/F0hJ4eQHT3JUCQBVT68tb
|
|
14
|
+
OgRUk0aP9tC3021VN82X6+klowSQN8oBPX8+TfDWSUilp/+j24Hky+Z29Do7yR/R
|
|
15
|
+
qutnL92CvBlVLV4=
|
|
16
|
+
-----END PRIVATE KEY-----
|
package/test/1024.pub
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
-----BEGIN PUBLIC KEY-----
|
|
2
|
+
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrpVE2fAdanHGfHA10RkmNPIFv
|
|
3
|
+
Cry5XMccRguIGRzU9wgVBfJ+UeChN9GmcmGf67bEGbtOY7mScWidKpm3u+XZUOXf
|
|
4
|
+
l3PQTF3kIPzKU2cOUwDeziHRmGKRQXvtTy2esBH45GKzKjFHH6ti6oUy3QG7wSZ7
|
|
5
|
+
kXGGS6pgXjkPBU6yqwIDAQAB
|
|
6
|
+
-----END PUBLIC KEY-----
|
package/test/cert.priv
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
MIIEpAIBAAKCAQEAt9YImToSbFBMV+/xo6Dlh8+MlZEizQKLE2B3PF9qKeBCg24p
|
|
3
|
+
RYff+rhrfj9fA67Z0duGCDjys+IF2BcqY+vlBt6s0mjfD3zAKwLXCKVTv81znWu7
|
|
4
|
+
ChwKk6QQMfs4EHaxJShrA4vdhhf6+Z3Grt6WnlDD7SwUHXVfOexeTC1VIS+0fXQf
|
|
5
|
+
bfTMQL8A+0GA7u0/c465v5AGMDwts+leNJ9kdgaowJtUu681i0tlJpTceAn1xuKn
|
|
6
|
+
AONbw6LTlQns1+30TDwrUgn72dDcf6s3XqGwMV0RjXC50l/mISNNVLiIDCYf57Fh
|
|
7
|
+
W9NZcxt0uuJDwU4VaWxQaMAmbaI2U8sxF3FtGQIDAQABAoIBAQCwhTtybjmceaok
|
|
8
|
+
0khTlz5vHxLd1yP0eNm0PG+hr/jPxv/3FcNZeXPPWmAVNKJ2deG/yau0n4IkygZU
|
|
9
|
+
jUHt+mfLJewKihqN03rukeaK7b0yMgQvB2/s8CoTxHislY4q+N12UY4YNKf8h3A9
|
|
10
|
+
WYubBC7aS7EmPqn982MByn5tZSYWGwjqZ83j5XUPVATqvLZ0/uruRxZSykV0lcE6
|
|
11
|
+
9xXKj5xHFHn21IcFzzBLTdkQjcOo2wnLVfUqf+1izPKHkXkn5LGRFy+EFwzl+99P
|
|
12
|
+
vj6YWinqKaS00CazdxMx61btwQ2euUw9+ifGAr1nQvUaDbv7JzXkTSg4VaXVhO/l
|
|
13
|
+
igiGqayBAoGBANwbDnWrQSmS9BPNmA9dL3NYyISsFzWSFqS7/KGQ0ZzkPJ5yIcdV
|
|
14
|
+
nl1QZYF7+O/JT6mV8fLKDQiIsB0LSET8nRUsty12n3Gr4ysHiRZTAI+IOubbpE/N
|
|
15
|
+
Id+Mk7AElxVJ5Ff/3emJzZrJQH+d+oVkRJFz/7d2AupOVPPWKHtzTkCRAoGBANXQ
|
|
16
|
+
zDfX6lGYR8ZWXVAXGHJQLgz5NL0cppdpSNS7gcKUR6Zr+450fHxMM/l8aJvkXuCN
|
|
17
|
+
arIGEqKDnWNKfFQiWnAU73Rtntv+C0mMOSlBpn8RNG3MtqXY4HL5aAyLygDhziNH
|
|
18
|
+
C8A7QvF4Pl8kqeq1wc+1ULA2Jt6yvfXE2w5jMqgJAoGBAKXyVEWNN5TjsdgYYvP6
|
|
19
|
+
euMJZiz5HoqKOT48aW1apV8XiUigni0OtVZ/XfhxAq+u5LvkTEWT5p2viLBtKDCz
|
|
20
|
+
EK+9ReImFHJ8eMqhZM8LB1owCNCzer+b1lUYROUpoMsxKdLbG3GPLw/rehB9iDr3
|
|
21
|
+
7OaJQZwNgocrRcuNhHoG5lGxAoGAaI94HuL+2rIef3aioVT6BoUBUCTaTpThPvAk
|
|
22
|
+
xqt/lFkRBOiPlyWN7vcQ/7OAMKQoZaWihLaFjGXSpMi7LiWyllcWlpg49JoyiOAC
|
|
23
|
+
4BMTydXvDrbqpwX9FRy0blY6Dd5fAU9wBqy0WwOTdNGoKniB9AJWGCYTMhq03KhM
|
|
24
|
+
+6c1EYkCgYAv65p32zCWieFzl/H6EVItNzRoQGOLR8uHcfw0+9Kjs5zPLhtzAJwS
|
|
25
|
+
8YF/6s608zW9yCdsN3k5+9tR2UAPLEvQoHgZQkGmNSeMufEVyC10MKM5ytMMcIU5
|
|
26
|
+
UrM1pgMwllNyS1sWpJY0or9gEDaHzchN+Q1Ljj23DHDC1uPTkXQqSg==
|
|
27
|
+
-----END RSA PRIVATE KEY-----
|
package/test/cert.pub
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDUDCCAjgCCQD1TryolF9FbDANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJV
|
|
3
|
+
UzEOMAwGA1UECAwFVGV4YXMxDzANBgNVBAcMBkRhbGxhczEWMBQGA1UECgwNUHVi
|
|
4
|
+
bGlzaGVyIEluYzErMCkGA1UEAwwiUHVibGlzaGVyIElOVEVSTUVESUFSWSBDRVJU
|
|
5
|
+
SUZJQ0FURTAeFw0xOTAxMTAyMTAzNDVaFw0yOTAxMDcyMTAzNDVaMGExCzAJBgNV
|
|
6
|
+
BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEPMA0GA1UEBwwGRGFsbGFzMRYwFAYDVQQK
|
|
7
|
+
DA1QdWJsaXNoZXIgSW5jMRkwFwYDVQQDDBBCb2IgUGhvdG9ncmFwaGVyMIIBIjAN
|
|
8
|
+
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt9YImToSbFBMV+/xo6Dlh8+MlZEi
|
|
9
|
+
zQKLE2B3PF9qKeBCg24pRYff+rhrfj9fA67Z0duGCDjys+IF2BcqY+vlBt6s0mjf
|
|
10
|
+
D3zAKwLXCKVTv81znWu7ChwKk6QQMfs4EHaxJShrA4vdhhf6+Z3Grt6WnlDD7SwU
|
|
11
|
+
HXVfOexeTC1VIS+0fXQfbfTMQL8A+0GA7u0/c465v5AGMDwts+leNJ9kdgaowJtU
|
|
12
|
+
u681i0tlJpTceAn1xuKnAONbw6LTlQns1+30TDwrUgn72dDcf6s3XqGwMV0RjXC5
|
|
13
|
+
0l/mISNNVLiIDCYf57FhW9NZcxt0uuJDwU4VaWxQaMAmbaI2U8sxF3FtGQIDAQAB
|
|
14
|
+
MA0GCSqGSIb3DQEBCwUAA4IBAQCLXkxQAHK1uSrtNZL3LbYFmDq1EXpe7wNmRmya
|
|
15
|
+
9i5ys+TmGYACGDEGogTp0uGY1qL7pKPB4IWfZsiZ0UEcYju4eRQR/SfK2e8GPT26
|
|
16
|
+
IC3nLfoH20E7+TbHZSfUt3g+Oqn4Sg63vYMXNxCPnUq6gUbbzYcv5/O0cT5yqTpL
|
|
17
|
+
9C1y+IIXSEB0t0M7oYOZDpOSB/VN/7lDZFLjXfeOhhsXbfIc1gyx3BMrNT/nnW1J
|
|
18
|
+
LbSpB0r1d9VPsZA40CH7E0oiGQCa9Jb7h3n/10ABu5C8PQktbxjAlqZ5jiuYZG11
|
|
19
|
+
C5f7bPbe6ao2OGXWKLrVSE+2hYGMcffXy0gutH4ytLS8EiLX
|
|
20
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-----BEGIN DSA PARAMETERS-----
|
|
2
|
+
MIIBHgKBgQDdFg3WQmpOZxObxraIe4rrbUhrBw99fbnz99IvLj60sM/7Uk7eHYvp
|
|
3
|
+
UrPaJBIcjPy68BjV4ekDljuPpFoAorsLzyvVSHuNvN6I/bRGm1TCOjDFVe98Oz6k
|
|
4
|
+
XmI6pRfIF0TiIPXkel/sWIfBYa1lqdoW82h9FIjhbxVHrKGfvMEc9wIVAOzmJHec
|
|
5
|
+
s6yBm+nE3+OmpWFYj0ylAoGAYxO6mFSoIY7PDRyRzKJEnULSzYXd3FoMkPwDCd5I
|
|
6
|
+
ch/piIoAUIIQ542TL54GT9wuiCL+0D48qi9GWKasPZABfPQ008WOzmKzD8ncrUTd
|
|
7
|
+
a7pzvUvdmwldA4Aa5/5xSXwtpK+DDye7KPlu+oi1BF6uj4TgfeGr1uxouxC2WhBE
|
|
8
|
+
qH0=
|
|
9
|
+
-----END DSA PARAMETERS-----
|
|
10
|
+
-----BEGIN PRIVATE KEY-----
|
|
11
|
+
MIIBSwIBADCCASwGByqGSM44BAEwggEfAoGBAOY0KsTt5EpJ4LtlD3xRS5mDiGE1
|
|
12
|
+
CMNp0S9X0sK8kP8Aps8iYwMLbZYglk18GCNnCk4SjbAnZHSB3kaIv6AKQc2J8W2Y
|
|
13
|
+
V5se3VhpKOFst7bqRtkGsl8uJtGlKTiXNclkv2jsKOrsBokSD1USGCECTNeMt3Og
|
|
14
|
+
ziRcZ1dS+djSOZ2nAhUAzB96SpxlAak+K/QLVJ+lDe5DcY0CgYEAtxX1/Hckvhlh
|
|
15
|
+
HQyKZWLQsDfZBILbhc+OLDpOyT6cJS/sJzfFIYZgK5M3rOS4OmzdYfJccQAuGq+T
|
|
16
|
+
VJQ3VcYOdbrIANJV8CDrn4jkkejTzJI6fCwAkPWOyxw8kbV1Hsoy6WLfSCHKpBUc
|
|
17
|
+
rogAqRGESqBVTawjyF/ECX667y/P49MEFgIUSeRVRgAXsLmeWR/V4Rh9Hex+9+s=
|
|
18
|
+
-----END PRIVATE KEY-----
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
-----BEGIN PUBLIC KEY-----
|
|
2
|
+
MIIBtzCCASwGByqGSM44BAEwggEfAoGBAOY0KsTt5EpJ4LtlD3xRS5mDiGE1CMNp
|
|
3
|
+
0S9X0sK8kP8Aps8iYwMLbZYglk18GCNnCk4SjbAnZHSB3kaIv6AKQc2J8W2YV5se
|
|
4
|
+
3VhpKOFst7bqRtkGsl8uJtGlKTiXNclkv2jsKOrsBokSD1USGCECTNeMt3OgziRc
|
|
5
|
+
Z1dS+djSOZ2nAhUAzB96SpxlAak+K/QLVJ+lDe5DcY0CgYEAtxX1/HckvhlhHQyK
|
|
6
|
+
ZWLQsDfZBILbhc+OLDpOyT6cJS/sJzfFIYZgK5M3rOS4OmzdYfJccQAuGq+TVJQ3
|
|
7
|
+
VcYOdbrIANJV8CDrn4jkkejTzJI6fCwAkPWOyxw8kbV1Hsoy6WLfSCHKpBUcrogA
|
|
8
|
+
qRGESqBVTawjyF/ECX667y/P49MDgYQAAoGAXYmxO4+52C1gBzh7GgTwNLJl7bLn
|
|
9
|
+
gOhKTFlKhT36VjMjeFfdXmBVBVbfUottKZby/gVX1IXT38PStB/dswbF45bGDdoS
|
|
10
|
+
zMFjYmHTtLtrU/4hReVtvb5MYmrPDFX58SwcSRRO/cH6WJPvfu4Aq0cJZA9Kb0B9
|
|
11
|
+
5Wo18JxAqvPtTB8=
|
|
12
|
+
-----END PUBLIC KEY-----
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-----BEGIN DSA PRIVATE KEY-----
|
|
2
|
+
MIIDVQIBAAKCAQEA0jDs9lLWX//NXYE1kNKw4UiDVMHHEtTF1OzJvBJvUh3/xMlU
|
|
3
|
+
ic8mUpIMU5mt7BTjcijyLLl/TeNBcI/xDvWH3PAfCjP1CmNzOMHwU6wKA4Q20m5v
|
|
4
|
+
zjauVycd7loRm5h+1XyD2JL1KmQTzhIIRAmRTeXMnr8LAHidYfUKmzCOCCrnctlE
|
|
5
|
+
EOh1S6e7BFxQBRrlUxZF0LTjcAz31rrjIH6wKkYR4mnpGuI2vVJ+qHGmEhvq1hAb
|
|
6
|
+
DvP0GN0iofxHlIVqOlfXYCZO388ZabfcBOQG57tTofm8aS4pnXCgbok9wEYPgbU5
|
|
7
|
+
n6fEvDGOOObQyY109hZZaDJmfygr5mmD0TIXrQIhAMVBhV4liqAN2MrT/+ZUH6hY
|
|
8
|
+
+DhTazzSNLIZKQ5gfd+1AoIBADqHGUVQa9pbwyjbzooeWdijUM9W5P7UUj1OjrA0
|
|
9
|
+
HIkcx37qHiYOVFqHpbjDs3tbgRBxBX5zBpwuhywC/6OetDiqzDy7zZCV/YMn06d2
|
|
10
|
+
ncW2Ctjp3KPl7of39+HgXXePgTdKcfkjH9upJQTko88rA4NWwZbHYeA3Lv7DcA11
|
|
11
|
+
XY3+TQHcxMtxf/E6aePjANJBsJsQjYLy3WyUiS87jkgi0Bigjg/cD3Nel4LToCTR
|
|
12
|
+
JvQ4m3w3T4W0xL1+8nPjRZ2q0GgmxZzPfwALrwiSYMgGZC/ov43wqOs6WXs0NnpJ
|
|
13
|
+
moU4oxutC/uDvTZmJvRj77FINjK0ZA20jmNvWmTIeEm1Xn4CggEABeRpOymQS5IS
|
|
14
|
+
X+u9ya7C+P3MPIRGm4dcWPWgPpD1QcclNYLGnhRp7JazNsbbPMjnx1qtF+2qjfy9
|
|
15
|
+
JDeWTAR8qfCNVmQHPAhJsJtV0C/V4PUii71FRNPVC3EAYbcBk8deMGoUg99cxSac
|
|
16
|
+
6MCxIIOxuUKWpw8XPlMVpuXc8+lIMTYCPeLGinmT4DQ573t0MS6U3Ck/987xjkH9
|
|
17
|
+
sos7zcYn3vnjywDCxXMidC0eUK1rxAAuY7PL4vQiKwXq8kFtWiKAnns/Zm5LTjiZ
|
|
18
|
+
NrwlhNlU2wQVvyIcKaGfSRPheb69IbP+9qp5b7Xe7DNWdo48S0jl2KAFeZ91BnhM
|
|
19
|
+
TH6WPtMpjQIgOaTTn6xYK0kZvvH3lZXrzkjp4aNlNY65R0JAKKNsx3s=
|
|
20
|
+
-----END DSA PRIVATE KEY-----
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-----BEGIN PUBLIC KEY-----
|
|
2
|
+
MIIDRjCCAjkGByqGSM44BAEwggIsAoIBAQDSMOz2UtZf/81dgTWQ0rDhSINUwccS
|
|
3
|
+
1MXU7Mm8Em9SHf/EyVSJzyZSkgxTma3sFONyKPIsuX9N40Fwj/EO9Yfc8B8KM/UK
|
|
4
|
+
Y3M4wfBTrAoDhDbSbm/ONq5XJx3uWhGbmH7VfIPYkvUqZBPOEghECZFN5cyevwsA
|
|
5
|
+
eJ1h9QqbMI4IKudy2UQQ6HVLp7sEXFAFGuVTFkXQtONwDPfWuuMgfrAqRhHiaeka
|
|
6
|
+
4ja9Un6ocaYSG+rWEBsO8/QY3SKh/EeUhWo6V9dgJk7fzxlpt9wE5Abnu1Oh+bxp
|
|
7
|
+
LimdcKBuiT3ARg+BtTmfp8S8MY445tDJjXT2FlloMmZ/KCvmaYPRMhetAiEAxUGF
|
|
8
|
+
XiWKoA3YytP/5lQfqFj4OFNrPNI0shkpDmB937UCggEAOocZRVBr2lvDKNvOih5Z
|
|
9
|
+
2KNQz1bk/tRSPU6OsDQciRzHfuoeJg5UWoeluMOze1uBEHEFfnMGnC6HLAL/o560
|
|
10
|
+
OKrMPLvNkJX9gyfTp3adxbYK2Onco+Xuh/f34eBdd4+BN0px+SMf26klBOSjzysD
|
|
11
|
+
g1bBlsdh4Dcu/sNwDXVdjf5NAdzEy3F/8Tpp4+MA0kGwmxCNgvLdbJSJLzuOSCLQ
|
|
12
|
+
GKCOD9wPc16XgtOgJNEm9DibfDdPhbTEvX7yc+NFnarQaCbFnM9/AAuvCJJgyAZk
|
|
13
|
+
L+i/jfCo6zpZezQ2ekmahTijG60L+4O9NmYm9GPvsUg2MrRkDbSOY29aZMh4SbVe
|
|
14
|
+
fgOCAQUAAoIBAAXkaTspkEuSEl/rvcmuwvj9zDyERpuHXFj1oD6Q9UHHJTWCxp4U
|
|
15
|
+
aeyWszbG2zzI58darRftqo38vSQ3lkwEfKnwjVZkBzwISbCbVdAv1eD1Iou9RUTT
|
|
16
|
+
1QtxAGG3AZPHXjBqFIPfXMUmnOjAsSCDsblClqcPFz5TFabl3PPpSDE2Aj3ixop5
|
|
17
|
+
k+A0Oe97dDEulNwpP/fO8Y5B/bKLO83GJ97548sAwsVzInQtHlCta8QALmOzy+L0
|
|
18
|
+
IisF6vJBbVoigJ57P2ZuS044mTa8JYTZVNsEFb8iHCmhn0kT4Xm+vSGz/vaqeW+1
|
|
19
|
+
3uwzVnaOPEtI5digBXmfdQZ4TEx+lj7TKY0=
|
|
20
|
+
-----END PUBLIC KEY-----
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-----BEGIN ENCRYPTED PRIVATE KEY-----
|
|
2
|
+
MIHeMEkGCSqGSIb3DQEFDTA8MBsGCSqGSIb3DQEFDDAOBAi9LqZQx4JFXAICCAAw
|
|
3
|
+
HQYJYIZIAWUDBAECBBA+js1fG4Rv/yRN7oZvxbgyBIGQ/D4yj86M1x8lMsnAHQ/K
|
|
4
|
+
7/ryb/baDNHqN9LTZanEGBuyxgrTzt08SiL+h91yFGMoaly029K1VgEI8Lxu5Np/
|
|
5
|
+
A+LK7ewh73ABzsbuxYdcXI+rKnrvLN9Tt6veDs4GlqTTsWwq5wF0C+6gaYRBXA74
|
|
6
|
+
T1b6NykGh2UNL5U5pHZEYdOVLz+lRJL7gYqlweNHP/S3
|
|
7
|
+
-----END ENCRYPTED PRIVATE KEY-----
|
package/test/ec.priv
ADDED
package/test/ec.pub
ADDED
package/test/index.js
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var test = require('./tape');
|
|
4
|
+
var fs = require('fs');
|
|
5
|
+
var path = require('path');
|
|
6
|
+
var parseKey = require('../');
|
|
7
|
+
function loadPath(str) {
|
|
8
|
+
return fs.readFileSync(path.join(__dirname, str));
|
|
9
|
+
}
|
|
10
|
+
var rsa1024 = {
|
|
11
|
+
'private': loadPath('/rsa.1024.priv'),
|
|
12
|
+
'public': loadPath('/rsa.1024.pub')
|
|
13
|
+
};
|
|
14
|
+
var rsa2028 = {
|
|
15
|
+
'private': loadPath('/rsa.2028.priv'),
|
|
16
|
+
'public': loadPath('/rsa.2028.pub')
|
|
17
|
+
};
|
|
18
|
+
var nonrsa1024 = {
|
|
19
|
+
'private': loadPath('/1024.priv'),
|
|
20
|
+
'public': loadPath('/1024.pub')
|
|
21
|
+
};
|
|
22
|
+
var pass1024 = {
|
|
23
|
+
'private': {
|
|
24
|
+
passphrase: 'fooo',
|
|
25
|
+
key: loadPath('/pass.1024.priv')
|
|
26
|
+
},
|
|
27
|
+
'public': loadPath('/pass.1024.pub')
|
|
28
|
+
};
|
|
29
|
+
var ec = {
|
|
30
|
+
'private': loadPath('/ec.priv'),
|
|
31
|
+
'public': loadPath('/ec.pub')
|
|
32
|
+
};
|
|
33
|
+
var ecpass = {
|
|
34
|
+
'private': {
|
|
35
|
+
key: loadPath('/ec.pass.priv'),
|
|
36
|
+
passphrase: 'bard'
|
|
37
|
+
},
|
|
38
|
+
'public': loadPath('/ec.pub')
|
|
39
|
+
};
|
|
40
|
+
var dsa = {
|
|
41
|
+
'private': loadPath('/dsa.1024.priv'),
|
|
42
|
+
'public': loadPath('/dsa.1024.pub')
|
|
43
|
+
};
|
|
44
|
+
var dsa2 = {
|
|
45
|
+
'private': loadPath('/dsa.2048.priv'),
|
|
46
|
+
'public': loadPath('/dsa.2048.pub')
|
|
47
|
+
};
|
|
48
|
+
var dsapass = {
|
|
49
|
+
'private': {
|
|
50
|
+
key: loadPath('/pass.dsa.1024.priv'),
|
|
51
|
+
passphrase: 'password'
|
|
52
|
+
},
|
|
53
|
+
'public': loadPath('/pass.dsa.1024.pub')
|
|
54
|
+
};
|
|
55
|
+
var dsapass2 = {
|
|
56
|
+
'private': {
|
|
57
|
+
key: loadPath('/pass2.dsa.1024.priv'),
|
|
58
|
+
passphrase: 'password'
|
|
59
|
+
},
|
|
60
|
+
'public': loadPath('/pass2.dsa.1024.pub')
|
|
61
|
+
};
|
|
62
|
+
var rsapass = {
|
|
63
|
+
'private': {
|
|
64
|
+
key: loadPath('/pass.rsa.1024.priv'),
|
|
65
|
+
passphrase: 'password'
|
|
66
|
+
},
|
|
67
|
+
'public': loadPath('/pass.rsa.1024.pub')
|
|
68
|
+
};
|
|
69
|
+
var rsapass2 = {
|
|
70
|
+
'private': {
|
|
71
|
+
key: loadPath('/pass.rsa.2028.priv'),
|
|
72
|
+
passphrase: 'password'
|
|
73
|
+
},
|
|
74
|
+
'public': loadPath('/pass.rsa.2028.pub')
|
|
75
|
+
};
|
|
76
|
+
var cert = {
|
|
77
|
+
'private': loadPath('/rsa.1024.priv'),
|
|
78
|
+
'public': loadPath('/node.cert')
|
|
79
|
+
};
|
|
80
|
+
var cert2 = {
|
|
81
|
+
'private': loadPath('/cert.priv'),
|
|
82
|
+
'public': loadPath('/cert.pub')
|
|
83
|
+
};
|
|
84
|
+
var i = 0;
|
|
85
|
+
function testIt(keys) {
|
|
86
|
+
// eslint-disable-next-line no-plusplus
|
|
87
|
+
test('key ' + ++i, function (t) {
|
|
88
|
+
t.plan(2);
|
|
89
|
+
t.ok(parseKey(keys['public']), 'public key');
|
|
90
|
+
t.ok(parseKey(keys['private']), 'private key');
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
testIt(dsa);
|
|
95
|
+
testIt(dsa2);
|
|
96
|
+
testIt(rsa1024);
|
|
97
|
+
testIt(ec);
|
|
98
|
+
testIt(rsa2028);
|
|
99
|
+
testIt(nonrsa1024);
|
|
100
|
+
testIt(ecpass);
|
|
101
|
+
testIt(dsapass);
|
|
102
|
+
testIt(dsapass2);
|
|
103
|
+
testIt(rsapass);
|
|
104
|
+
testIt(rsapass2);
|
|
105
|
+
testIt(pass1024);
|
|
106
|
+
testIt(pass1024);
|
|
107
|
+
testIt(cert);
|
|
108
|
+
testIt(cert2);
|
package/test/node.cert
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDXDCCAsWgAwIBAgIJAKL0UG+mRkSPMA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNV
|
|
3
|
+
BAYTAlVLMRQwEgYDVQQIEwtBY2tuYWNrIEx0ZDETMBEGA1UEBxMKUmh5cyBKb25l
|
|
4
|
+
czEQMA4GA1UEChMHbm9kZS5qczEdMBsGA1UECxMUVGVzdCBUTFMgQ2VydGlmaWNh
|
|
5
|
+
dGUxEjAQBgNVBAMTCWxvY2FsaG9zdDAeFw0wOTExMTEwOTUyMjJaFw0yOTExMDYw
|
|
6
|
+
OTUyMjJaMH0xCzAJBgNVBAYTAlVLMRQwEgYDVQQIEwtBY2tuYWNrIEx0ZDETMBEG
|
|
7
|
+
A1UEBxMKUmh5cyBKb25lczEQMA4GA1UEChMHbm9kZS5qczEdMBsGA1UECxMUVGVz
|
|
8
|
+
dCBUTFMgQ2VydGlmaWNhdGUxEjAQBgNVBAMTCWxvY2FsaG9zdDCBnzANBgkqhkiG
|
|
9
|
+
9w0BAQEFAAOBjQAwgYkCgYEA8d8Hc6atq78Jt1HLp9agA/wpQfsFvkYUdZ1YsdvO
|
|
10
|
+
kL2janjwHQgMMCy/Njal3FUEW0OLPebKZUJ8L44JBXSlVxU4zyiiSOWld8EkTetR
|
|
11
|
+
AVT3WKQq3ud+cnxv7g8rGRQp1UHZwmdbZ1wEfAYq8QjYx6m1ciMgRo7DaDQhD29k
|
|
12
|
+
d+UCAwEAAaOB4zCB4DAdBgNVHQ4EFgQUL9miTJn+HKNuTmx/oMWlZP9cd4QwgbAG
|
|
13
|
+
A1UdIwSBqDCBpYAUL9miTJn+HKNuTmx/oMWlZP9cd4ShgYGkfzB9MQswCQYDVQQG
|
|
14
|
+
EwJVSzEUMBIGA1UECBMLQWNrbmFjayBMdGQxEzARBgNVBAcTClJoeXMgSm9uZXMx
|
|
15
|
+
EDAOBgNVBAoTB25vZGUuanMxHTAbBgNVBAsTFFRlc3QgVExTIENlcnRpZmljYXRl
|
|
16
|
+
MRIwEAYDVQQDEwlsb2NhbGhvc3SCCQCi9FBvpkZEjzAMBgNVHRMEBTADAQH/MA0G
|
|
17
|
+
CSqGSIb3DQEBBQUAA4GBADRXXA2xSUK5W1i3oLYWW6NEDVWkTQ9RveplyeS9MOkP
|
|
18
|
+
e7yPcpz0+O0ZDDrxR9chAiZ7fmdBBX1Tr+pIuCrG/Ud49SBqeS5aMJGVwiSd7o1n
|
|
19
|
+
dhU2Sz3Q60DwJEL1VenQHiVYlWWtqXBThe9ggqRPnCfsCRTP8qifKkjk45zWPcpN
|
|
20
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-----BEGIN ENCRYPTED PRIVATE KEY-----
|
|
2
|
+
MIICzzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQIji3ZZ6JbsA4CAggA
|
|
3
|
+
MB0GCWCGSAFlAwQBFgQQC6MKblq8zyX90/KmgotsMQSCAoDghNf+yxPC/KRh7F3O
|
|
4
|
+
k0lMgtDkV+wCLDv7aBvUqy8Ry2zqFPIlfLb8XtSW943XEu6KUI13IZPEr8p9h1ve
|
|
5
|
+
Iye6L0g6uAgbFxBE2DwBBSI7mYr7lokr4v0k+inMKf4JeRdI9XWgwOILKTGf1vH7
|
|
6
|
+
PhvBnqLhOg6BIOuF426qpiyYlmRda74d0Th4o6ZyhyMSzPI1XbWSg719Ew3N/tLe
|
|
7
|
+
OHdYl0eFrgNjq+xO4Ev+W7eNIh/XBMQtk9wo+mxeNdldRnX822HxTsL8fSSPs+9T
|
|
8
|
+
W5M/2EBTJMSsswSjZyFkq8ehtxovI2u0IBX1IiPulyUZLnSNPDV1eUVClK6rk+q1
|
|
9
|
+
kVsfJhUr2qvIjNlQWlbEXQj4VwGtgl0++l8vdpj59MuN2J3Nx5TNMLjA6BYAa/tr
|
|
10
|
+
Bu928QoT7ET+SGx5XKCwKb5fwXmDlV5zZC4kZWTaF/d/Icvj5F+fDZuYFg1JOXNZ
|
|
11
|
+
+q2oA1qMYaHGX6lF3pbO84ebg1iwQTDM8iIqFeSMGUJTnk/3a7sqfaWQbEQwGb+X
|
|
12
|
+
fXnSTwkF+wO2rriPbFvWyzecWu67zDCP0ZWUgGb86sSJCM7xRGShESwCjOrb88F1
|
|
13
|
+
5SZjyIqogrkc3IWiLH9gc5U8d86qoFjJnP6BfwYks1UIyXNGKfZTCqICpMphV+IS
|
|
14
|
+
b0N2jprjLTkWR6nxYGSH1bkKMs7x1M0FBLWWLAZqPn9X3pe6JwIBds04O6XjF0un
|
|
15
|
+
oxwDjcJdoxVs7PgRiM5d1Tubqu2zmpCCmXNiqi9B0+rV9/jHg9IA5gUfvYdCcEv+
|
|
16
|
+
oAr90I+2+PuBFa9lgdbDV6DtZk4bSYluqamxVeLPg/vrewYfVfDv6jftfY1D0DEy
|
|
17
|
+
69H0
|
|
18
|
+
-----END ENCRYPTED PRIVATE KEY-----
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
-----BEGIN PUBLIC KEY-----
|
|
2
|
+
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSK/7i5BV0x+gmX16Wrm7kRkCZ
|
|
3
|
+
y1QUt6wiM2g+SAZTYR0381VnSMX2cv7CpN3499lZj1rL5S7YTaZZwX3RvU5fz56/
|
|
4
|
+
eDX6ciL/PZsbclN2KdkMWYgmcb9J1zUeoMQ3cjfFUCdQZ/ZvDWa+wY2Zg8os2Bow
|
|
5
|
+
AoufHtYHm3eOly/cWwIDAQAB
|
|
6
|
+
-----END PUBLIC KEY-----
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
-----BEGIN ENCRYPTED PRIVATE KEY-----
|
|
2
|
+
MIIBnzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQI1z4IJORFws4CAggA
|
|
3
|
+
MB0GCWCGSAFlAwQBAgQQq7f0CuKCTITfPS5Xax1H4wSCAVDFyIjYVXfBNe+BARqz
|
|
4
|
+
Tfo09y4vKkErOb7Sz4bQkAjRLjOXiUjM4eTNtivml8NqVrQTKAghN+ggxj416OD4
|
|
5
|
+
oq6Ns7Ncbd4Xm5Ni8wrrWbJxVog6rAa/ioU0sfgRExYy/xE2Q9KkW+VE7SUwanwY
|
|
6
|
+
e81Od9qNM5KhZGM1yUSKa0JA6Xqb8dAqBo9rVt8DceumB9OP83xV3fLEimSZfR6p
|
|
7
|
+
slA1P/dTvKxwhpguQe4Z3OkzTzGCxyboqeRW1woNHKbxjzzSHcaki9SHQm3xpUW8
|
|
8
|
+
hRAJd6OtDnLbkE9MnC+UcI3mjru1xfnR5MU7qG7e9nvOhEDVaDkiK3DbrSf0B0Bi
|
|
9
|
+
p1hyX1XsSXDewSEd/mlfMLdD8WecgUtl9ea7JzxY3/6R78yB951I5TmY45mp/v+N
|
|
10
|
+
tbxEv29B65UKf0ac7gVw4LNy8JF2ef/L/meEmBoIAE71f+8=
|
|
11
|
+
-----END ENCRYPTED PRIVATE KEY-----
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
-----BEGIN PUBLIC KEY-----
|
|
2
|
+
MIIBtzCCASwGByqGSM44BAEwggEfAoGBAOY0KsTt5EpJ4LtlD3xRS5mDiGE1CMNp
|
|
3
|
+
0S9X0sK8kP8Aps8iYwMLbZYglk18GCNnCk4SjbAnZHSB3kaIv6AKQc2J8W2YV5se
|
|
4
|
+
3VhpKOFst7bqRtkGsl8uJtGlKTiXNclkv2jsKOrsBokSD1USGCECTNeMt3OgziRc
|
|
5
|
+
Z1dS+djSOZ2nAhUAzB96SpxlAak+K/QLVJ+lDe5DcY0CgYEAtxX1/HckvhlhHQyK
|
|
6
|
+
ZWLQsDfZBILbhc+OLDpOyT6cJS/sJzfFIYZgK5M3rOS4OmzdYfJccQAuGq+TVJQ3
|
|
7
|
+
VcYOdbrIANJV8CDrn4jkkejTzJI6fCwAkPWOyxw8kbV1Hsoy6WLfSCHKpBUcrogA
|
|
8
|
+
qRGESqBVTawjyF/ECX667y/P49MDgYQAAoGAXYmxO4+52C1gBzh7GgTwNLJl7bLn
|
|
9
|
+
gOhKTFlKhT36VjMjeFfdXmBVBVbfUottKZby/gVX1IXT38PStB/dswbF45bGDdoS
|
|
10
|
+
zMFjYmHTtLtrU/4hReVtvb5MYmrPDFX58SwcSRRO/cH6WJPvfu4Aq0cJZA9Kb0B9
|
|
11
|
+
5Wo18JxAqvPtTB8=
|
|
12
|
+
-----END PUBLIC KEY-----
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
Proc-Type: 4,ENCRYPTED
|
|
3
|
+
DEK-Info: AES-192-CBC,04D2D7882E0C474E07E542FE997D2A49
|
|
4
|
+
|
|
5
|
+
vfB5Gtm34n3SeI6JELjWiGw6O+j+tGR6Wbi3SNeAZkfSA8PTjei6PVHr+dGK5zMd
|
|
6
|
+
nTckd0EpxItqxEdtLK6GtBIa9KRd3cEbayHmyyybH2FC4STXJCUFBe2eb7ZKmnCl
|
|
7
|
+
RB5FcmAqExif+QOJwHnZw6DTzq+oGSwi9cSoy2qE62FgXkj8uKAYcBLONmsP1YQA
|
|
8
|
+
4zIub4bnEbIghL/swEB/HVS86FyMCsMXrHEOnSuUUBf/UfZFNypI6kVUNXlItnN1
|
|
9
|
+
14eeRsBD37VkL7dAQPMx+Dwm7DbU07QWrVvzgmWlu3KqR0tRNA9e4a5f14XOYxgS
|
|
10
|
+
HZ+XVZK8iAd+76OnprlFtGDowDXGM0wUXPYq5j8WpKxNsVs2RV+S6U0gQLoSqNxt
|
|
11
|
+
We7UPWZufzEdjTUO8q9KhdGqFmJ53XIYClZf0bp148b+Bk3P+dN5TbmKQEfulScn
|
|
12
|
+
rTLTRo34fdTIAJr5BJh0OXGNs9rFlMJ9Nz4FwVTEB1DMerXtt9ICdhud9BktRhvq
|
|
13
|
+
axgoz+XA3LrBrlPPcrSCZyIYjZFydGSkzg439OyDEZ6+uRmc0qhWA4j6AgXx6gGR
|
|
14
|
+
NvvypoFVKvXqEq/2F+SVyyMGrm4xPmsr/HUBeE9SmuTzNzDfVAM/xerqIoR2szR0
|
|
15
|
+
O0hwtOj4fk7//cd1CjFzd0JiF/SqMkHxkdbmIC9qlhshkWlQbvvhbefodYPuGxmj
|
|
16
|
+
L1TaPgX36OcrQSodzyWBN5tSmmX1Nmftcz7iwc4AKrqkdnM3sPS3SczsAjMWrjRr
|
|
17
|
+
7iYhdPQSZtxVCTjACU3h7scNAg9AU6l4YZrowR//J6U=
|
|
18
|
+
-----END RSA PRIVATE KEY-----
|