aboutsummaryrefslogtreecommitdiff
path: root/node_modules/parse-asn1
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
commitde98e0b232509d5f40c135d540a70e415272ff85 (patch)
treea79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/parse-asn1
parente0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff)
downloadwallet-core-de98e0b232509d5f40c135d540a70e415272ff85.tar.xz
node_modules
Diffstat (limited to 'node_modules/parse-asn1')
-rw-r--r--node_modules/parse-asn1/.npmignore1
-rw-r--r--node_modules/parse-asn1/.travis.yml9
-rw-r--r--node_modules/parse-asn1/README.md8
-rw-r--r--node_modules/parse-asn1/aesid.json13
-rw-r--r--node_modules/parse-asn1/asn1.js122
-rw-r--r--node_modules/parse-asn1/certificate.js88
-rw-r--r--node_modules/parse-asn1/fixProc.js30
-rw-r--r--node_modules/parse-asn1/index.js106
-rw-r--r--node_modules/parse-asn1/package.json28
-rw-r--r--node_modules/parse-asn1/test/1024.priv16
-rw-r--r--node_modules/parse-asn1/test/1024.pub6
-rw-r--r--node_modules/parse-asn1/test/dsa.1024.priv18
-rw-r--r--node_modules/parse-asn1/test/dsa.1024.pub12
-rw-r--r--node_modules/parse-asn1/test/dsa.2048.priv20
-rw-r--r--node_modules/parse-asn1/test/dsa.2048.pub20
-rw-r--r--node_modules/parse-asn1/test/ec.pass.priv7
-rw-r--r--node_modules/parse-asn1/test/ec.priv5
-rw-r--r--node_modules/parse-asn1/test/ec.pub4
-rw-r--r--node_modules/parse-asn1/test/index.js96
-rw-r--r--node_modules/parse-asn1/test/node.cert20
-rw-r--r--node_modules/parse-asn1/test/pass.1024.priv18
-rw-r--r--node_modules/parse-asn1/test/pass.1024.pub6
-rw-r--r--node_modules/parse-asn1/test/pass.dsa.1024.priv11
-rw-r--r--node_modules/parse-asn1/test/pass.dsa.1024.pub12
-rw-r--r--node_modules/parse-asn1/test/pass.rsa.1024.priv18
-rw-r--r--node_modules/parse-asn1/test/pass.rsa.1024.pub6
-rw-r--r--node_modules/parse-asn1/test/pass.rsa.2028.priv30
-rw-r--r--node_modules/parse-asn1/test/pass.rsa.2028.pub9
-rw-r--r--node_modules/parse-asn1/test/pass2.dsa.1024.priv15
-rw-r--r--node_modules/parse-asn1/test/pass2.dsa.1024.pub12
-rw-r--r--node_modules/parse-asn1/test/rsa.1024.priv15
-rw-r--r--node_modules/parse-asn1/test/rsa.1024.pub5
-rw-r--r--node_modules/parse-asn1/test/rsa.2028.priv27
-rw-r--r--node_modules/parse-asn1/test/rsa.2028.pub8
-rw-r--r--node_modules/parse-asn1/test/vector.js7
-rw-r--r--node_modules/parse-asn1/test/vector.priv12
-rw-r--r--node_modules/parse-asn1/test/vector2.priv19
37 files changed, 859 insertions, 0 deletions
diff --git a/node_modules/parse-asn1/.npmignore b/node_modules/parse-asn1/.npmignore
new file mode 100644
index 000000000..4ebc8aea5
--- /dev/null
+++ b/node_modules/parse-asn1/.npmignore
@@ -0,0 +1 @@
+coverage
diff --git a/node_modules/parse-asn1/.travis.yml b/node_modules/parse-asn1/.travis.yml
new file mode 100644
index 000000000..ea321ccc5
--- /dev/null
+++ b/node_modules/parse-asn1/.travis.yml
@@ -0,0 +1,9 @@
+sudo: false
+language: node_js
+node_js:
+ - "0.12"
+ - "iojs"
+env:
+ - TEST_SUITE=standard
+ - TEST_SUITE=unit
+script: "npm run-script $TEST_SUITE"
diff --git a/node_modules/parse-asn1/README.md b/node_modules/parse-asn1/README.md
new file mode 100644
index 000000000..89ed07461
--- /dev/null
+++ b/node_modules/parse-asn1/README.md
@@ -0,0 +1,8 @@
+#parse-asn1
+
+[![TRAVIS](https://secure.travis-ci.org/crypto-browserify/parse-asn1.png)](http://travis-ci.org/crypto-browserify/parse-asn1)
+[![NPM](http://img.shields.io/npm/v/parse-asn1.svg)](https://www.npmjs.org/package/parse-asn1)
+
+[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)
+
+utility library for parsing asn1 files for use with browserify-sign.
diff --git a/node_modules/parse-asn1/aesid.json b/node_modules/parse-asn1/aesid.json
new file mode 100644
index 000000000..24f653b40
--- /dev/null
+++ b/node_modules/parse-asn1/aesid.json
@@ -0,0 +1,13 @@
+{"2.16.840.1.101.3.4.1.1": "aes-128-ecb",
+"2.16.840.1.101.3.4.1.2": "aes-128-cbc",
+"2.16.840.1.101.3.4.1.3": "aes-128-ofb",
+"2.16.840.1.101.3.4.1.4": "aes-128-cfb",
+"2.16.840.1.101.3.4.1.21": "aes-192-ecb",
+"2.16.840.1.101.3.4.1.22": "aes-192-cbc",
+"2.16.840.1.101.3.4.1.23": "aes-192-ofb",
+"2.16.840.1.101.3.4.1.24": "aes-192-cfb",
+"2.16.840.1.101.3.4.1.41": "aes-256-ecb",
+"2.16.840.1.101.3.4.1.42": "aes-256-cbc",
+"2.16.840.1.101.3.4.1.43": "aes-256-ofb",
+"2.16.840.1.101.3.4.1.44": "aes-256-cfb"
+} \ No newline at end of file
diff --git a/node_modules/parse-asn1/asn1.js b/node_modules/parse-asn1/asn1.js
new file mode 100644
index 000000000..6cac822cf
--- /dev/null
+++ b/node_modules/parse-asn1/asn1.js
@@ -0,0 +1,122 @@
+// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js
+// Fedor, you are amazing.
+'use strict'
+
+var asn1 = require('asn1.js')
+
+exports.certificate = require('./certificate')
+
+var RSAPrivateKey = asn1.define('RSAPrivateKey', function () {
+ this.seq().obj(
+ this.key('version').int(),
+ this.key('modulus').int(),
+ this.key('publicExponent').int(),
+ this.key('privateExponent').int(),
+ this.key('prime1').int(),
+ this.key('prime2').int(),
+ this.key('exponent1').int(),
+ this.key('exponent2').int(),
+ this.key('coefficient').int()
+ )
+})
+exports.RSAPrivateKey = RSAPrivateKey
+
+var RSAPublicKey = asn1.define('RSAPublicKey', function () {
+ this.seq().obj(
+ this.key('modulus').int(),
+ this.key('publicExponent').int()
+ )
+})
+exports.RSAPublicKey = RSAPublicKey
+
+var PublicKey = asn1.define('SubjectPublicKeyInfo', function () {
+ this.seq().obj(
+ this.key('algorithm').use(AlgorithmIdentifier),
+ this.key('subjectPublicKey').bitstr()
+ )
+})
+exports.PublicKey = PublicKey
+
+var AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {
+ this.seq().obj(
+ this.key('algorithm').objid(),
+ this.key('none').null_().optional(),
+ this.key('curve').objid().optional(),
+ this.key('params').seq().obj(
+ this.key('p').int(),
+ this.key('q').int(),
+ this.key('g').int()
+ ).optional()
+ )
+})
+
+var PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {
+ this.seq().obj(
+ this.key('version').int(),
+ this.key('algorithm').use(AlgorithmIdentifier),
+ this.key('subjectPrivateKey').octstr()
+ )
+})
+exports.PrivateKey = PrivateKeyInfo
+var EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {
+ this.seq().obj(
+ this.key('algorithm').seq().obj(
+ this.key('id').objid(),
+ this.key('decrypt').seq().obj(
+ this.key('kde').seq().obj(
+ this.key('id').objid(),
+ this.key('kdeparams').seq().obj(
+ this.key('salt').octstr(),
+ this.key('iters').int()
+ )
+ ),
+ this.key('cipher').seq().obj(
+ this.key('algo').objid(),
+ this.key('iv').octstr()
+ )
+ )
+ ),
+ this.key('subjectPrivateKey').octstr()
+ )
+})
+
+exports.EncryptedPrivateKey = EncryptedPrivateKeyInfo
+
+var DSAPrivateKey = asn1.define('DSAPrivateKey', function () {
+ this.seq().obj(
+ this.key('version').int(),
+ this.key('p').int(),
+ this.key('q').int(),
+ this.key('g').int(),
+ this.key('pub_key').int(),
+ this.key('priv_key').int()
+ )
+})
+exports.DSAPrivateKey = DSAPrivateKey
+
+exports.DSAparam = asn1.define('DSAparam', function () {
+ this.int()
+})
+
+var ECPrivateKey = asn1.define('ECPrivateKey', function () {
+ this.seq().obj(
+ this.key('version').int(),
+ this.key('privateKey').octstr(),
+ this.key('parameters').optional().explicit(0).use(ECParameters),
+ this.key('publicKey').optional().explicit(1).bitstr()
+ )
+})
+exports.ECPrivateKey = ECPrivateKey
+
+var ECParameters = asn1.define('ECParameters', function () {
+ this.choice({
+ namedCurve: this.objid()
+ })
+})
+
+exports.signature = asn1.define('signature', function () {
+ this.seq().obj(
+ this.key('r').int(),
+ this.key('s').int()
+ )
+})
diff --git a/node_modules/parse-asn1/certificate.js b/node_modules/parse-asn1/certificate.js
new file mode 100644
index 000000000..1acfe559e
--- /dev/null
+++ b/node_modules/parse-asn1/certificate.js
@@ -0,0 +1,88 @@
+// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js
+// thanks to @Rantanen
+
+'use strict'
+
+var asn = require('asn1.js')
+
+var Time = asn.define('Time', function () {
+ this.choice({
+ utcTime: this.utctime(),
+ generalTime: this.gentime()
+ })
+})
+
+var AttributeTypeValue = asn.define('AttributeTypeValue', function () {
+ this.seq().obj(
+ this.key('type').objid(),
+ this.key('value').any()
+ )
+})
+
+var AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {
+ this.seq().obj(
+ this.key('algorithm').objid(),
+ this.key('parameters').optional()
+ )
+})
+
+var SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {
+ this.seq().obj(
+ this.key('algorithm').use(AlgorithmIdentifier),
+ this.key('subjectPublicKey').bitstr()
+ )
+})
+
+var RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {
+ this.setof(AttributeTypeValue)
+})
+
+var RDNSequence = asn.define('RDNSequence', function () {
+ this.seqof(RelativeDistinguishedName)
+})
+
+var Name = asn.define('Name', function () {
+ this.choice({
+ rdnSequence: this.use(RDNSequence)
+ })
+})
+
+var Validity = asn.define('Validity', function () {
+ this.seq().obj(
+ this.key('notBefore').use(Time),
+ this.key('notAfter').use(Time)
+ )
+})
+
+var Extension = asn.define('Extension', function () {
+ this.seq().obj(
+ this.key('extnID').objid(),
+ this.key('critical').bool().def(false),
+ this.key('extnValue').octstr()
+ )
+})
+
+var TBSCertificate = asn.define('TBSCertificate', function () {
+ this.seq().obj(
+ this.key('version').explicit(0).int(),
+ this.key('serialNumber').int(),
+ this.key('signature').use(AlgorithmIdentifier),
+ this.key('issuer').use(Name),
+ this.key('validity').use(Validity),
+ this.key('subject').use(Name),
+ this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),
+ this.key('issuerUniqueID').implicit(1).bitstr().optional(),
+ this.key('subjectUniqueID').implicit(2).bitstr().optional(),
+ this.key('extensions').explicit(3).seqof(Extension).optional()
+ )
+})
+
+var X509Certificate = asn.define('X509Certificate', function () {
+ this.seq().obj(
+ this.key('tbsCertificate').use(TBSCertificate),
+ this.key('signatureAlgorithm').use(AlgorithmIdentifier),
+ this.key('signatureValue').bitstr()
+ )
+})
+
+module.exports = X509Certificate
diff --git a/node_modules/parse-asn1/fixProc.js b/node_modules/parse-asn1/fixProc.js
new file mode 100644
index 000000000..655c3cf2e
--- /dev/null
+++ b/node_modules/parse-asn1/fixProc.js
@@ -0,0 +1,30 @@
+// adapted from https://github.com/apatil/pemstrip
+var findProc = /Proc-Type: 4,ENCRYPTED\n\r?DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\n\r?\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?/m
+var startRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----\n/m
+var fullRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?-----END \1-----$/m
+var evp = require('evp_bytestokey')
+var ciphers = require('browserify-aes')
+module.exports = function (okey, password) {
+ var key = okey.toString()
+ var match = key.match(findProc)
+ var decrypted
+ if (!match) {
+ var match2 = key.match(fullRegex)
+ decrypted = new Buffer(match2[2].replace(/\r?\n/g, ''), 'base64')
+ } else {
+ var suite = 'aes' + match[1]
+ var iv = new Buffer(match[2], 'hex')
+ var cipherText = new Buffer(match[3].replace(/\r?\n/g, ''), 'base64')
+ var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key
+ var out = []
+ var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)
+ out.push(cipher.update(cipherText))
+ out.push(cipher.final())
+ decrypted = Buffer.concat(out)
+ }
+ var tag = key.match(startRegex)[1]
+ return {
+ tag: tag,
+ data: decrypted
+ }
+}
diff --git a/node_modules/parse-asn1/index.js b/node_modules/parse-asn1/index.js
new file mode 100644
index 000000000..14932dfc0
--- /dev/null
+++ b/node_modules/parse-asn1/index.js
@@ -0,0 +1,106 @@
+var asn1 = require('./asn1')
+var aesid = require('./aesid.json')
+var fixProc = require('./fixProc')
+var ciphers = require('browserify-aes')
+var compat = require('pbkdf2')
+module.exports = parseKeys
+
+function parseKeys (buffer) {
+ var password
+ if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {
+ password = buffer.passphrase
+ buffer = buffer.key
+ }
+ if (typeof buffer === 'string') {
+ buffer = new Buffer(buffer)
+ }
+
+ var stripped = fixProc(buffer, password)
+
+ var type = stripped.tag
+ var data = stripped.data
+ var subtype, ndata
+ switch (type) {
+ case 'CERTIFICATE':
+ ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo
+ // falls through
+ case 'PUBLIC KEY':
+ if (!ndata) {
+ ndata = asn1.PublicKey.decode(data, 'der')
+ }
+ subtype = ndata.algorithm.algorithm.join('.')
+ switch (subtype) {
+ case '1.2.840.113549.1.1.1':
+ return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')
+ case '1.2.840.10045.2.1':
+ ndata.subjectPrivateKey = ndata.subjectPublicKey
+ return {
+ type: 'ec',
+ data: ndata
+ }
+ case '1.2.840.10040.4.1':
+ ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')
+ return {
+ type: 'dsa',
+ data: ndata.algorithm.params
+ }
+ default: throw new Error('unknown key id ' + subtype)
+ }
+ throw new Error('unknown key type ' + type)
+ case 'ENCRYPTED PRIVATE KEY':
+ data = asn1.EncryptedPrivateKey.decode(data, 'der')
+ data = decrypt(data, password)
+ // falls through
+ case 'PRIVATE KEY':
+ ndata = asn1.PrivateKey.decode(data, 'der')
+ subtype = ndata.algorithm.algorithm.join('.')
+ switch (subtype) {
+ case '1.2.840.113549.1.1.1':
+ return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')
+ case '1.2.840.10045.2.1':
+ return {
+ curve: ndata.algorithm.curve,
+ privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey
+ }
+ case '1.2.840.10040.4.1':
+ ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')
+ return {
+ type: 'dsa',
+ params: ndata.algorithm.params
+ }
+ default: throw new Error('unknown key id ' + subtype)
+ }
+ throw new Error('unknown key type ' + type)
+ case 'RSA PUBLIC KEY':
+ return asn1.RSAPublicKey.decode(data, 'der')
+ case 'RSA PRIVATE KEY':
+ return asn1.RSAPrivateKey.decode(data, 'der')
+ case 'DSA PRIVATE KEY':
+ return {
+ type: 'dsa',
+ params: asn1.DSAPrivateKey.decode(data, 'der')
+ }
+ case 'EC PRIVATE KEY':
+ data = asn1.ECPrivateKey.decode(data, 'der')
+ return {
+ curve: data.parameters.value,
+ privateKey: data.privateKey
+ }
+ default: throw new Error('unknown key type ' + type)
+ }
+}
+parseKeys.signature = asn1.signature
+function decrypt (data, password) {
+ var salt = data.algorithm.decrypt.kde.kdeparams.salt
+ var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)
+ var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]
+ var iv = data.algorithm.decrypt.cipher.iv
+ var cipherText = data.subjectPrivateKey
+ var keylen = parseInt(algo.split('-')[1], 10) / 8
+ var key = compat.pbkdf2Sync(password, salt, iters, keylen)
+ var cipher = ciphers.createDecipheriv(algo, key, iv)
+ var out = []
+ out.push(cipher.update(cipherText))
+ out.push(cipher.final())
+ return Buffer.concat(out)
+}
diff --git a/node_modules/parse-asn1/package.json b/node_modules/parse-asn1/package.json
new file mode 100644
index 000000000..b1891f62b
--- /dev/null
+++ b/node_modules/parse-asn1/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "parse-asn1",
+ "version": "5.1.0",
+ "description": "utility library for parsing asn1 files for use with browserify-sign.",
+ "main": "index.js",
+ "scripts": {
+ "unit": "node ./test",
+ "standard": "standard",
+ "test": "npm run standard && npm run unit"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/crypto-browserify/parse-asn1.git"
+ },
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "asn1.js": "^4.0.0",
+ "browserify-aes": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3"
+ },
+ "devDependencies": {
+ "tape": "^3.4.0",
+ "standard": "^5.0.0"
+ }
+}
diff --git a/node_modules/parse-asn1/test/1024.priv b/node_modules/parse-asn1/test/1024.priv
new file mode 100644
index 000000000..720621692
--- /dev/null
+++ b/node_modules/parse-asn1/test/1024.priv
@@ -0,0 +1,16 @@
+-----BEGIN PRIVATE KEY-----
+MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKulUTZ8B1qccZ8c
+DXRGSY08gW8KvLlcxxxGC4gZHNT3CBUF8n5R4KE30aZyYZ/rtsQZu05juZJxaJ0q
+mbe75dlQ5d+Xc9BMXeQg/MpTZw5TAN7OIdGYYpFBe+1PLZ6wEfjkYrMqMUcfq2Lq
+hTLdAbvBJnuRcYZLqmBeOQ8FTrKrAgMBAAECgYEAnkHRbEPU3/WISSQrP36iyCb2
+S/SBZwKkzmvCrBxDWhPeDswp9c/2JY76rNWfLzy8iXgUG8WUzvHje61Qh3gmBcKe
+bUaTGl4Vy8Ha1YBADo5RfRrdm0FE4tvgvu/TkqFqpBBZweu54285hk5zlG7n/D7Y
+dnNXUpu5MlNb5x3gW0kCQQDUL//cwcXUxY/evaJP4jSe+ZwEQZo+zXRLiPUulBoV
+aw28CVMuxdgwqAo1X1IKefPeUaf7RQu8gCKaRnpGuEuXAkEAzxZTfMmvmCUDIew4
+5Gk6bK265XQWdhcgiq254lpBGOYmDj9yCE7yA+zmASQwMsXTdQOi1hOCEyrXuSJ5
+c++EDQJAFh3WrnzoEPByuYXMmET8tSFRWMQ5vpgNqh3haHR5b4gUC2hxaiunCBNL
+1RpVY9AoUiDywGcG/SPh93CnKB3niwJBAKP7AtsifZgVXtiizB4aMThTjVYaSZrz
+D0Kg9DuHylpkDChmFu77TGrNUQgAVuYtfhb/bRblVa/F0hJ4eQHT3JUCQBVT68tb
+OgRUk0aP9tC3021VN82X6+klowSQN8oBPX8+TfDWSUilp/+j24Hky+Z29Do7yR/R
+qutnL92CvBlVLV4=
+-----END PRIVATE KEY-----
diff --git a/node_modules/parse-asn1/test/1024.pub b/node_modules/parse-asn1/test/1024.pub
new file mode 100644
index 000000000..2dba785d6
--- /dev/null
+++ b/node_modules/parse-asn1/test/1024.pub
@@ -0,0 +1,6 @@
+-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrpVE2fAdanHGfHA10RkmNPIFv
+Cry5XMccRguIGRzU9wgVBfJ+UeChN9GmcmGf67bEGbtOY7mScWidKpm3u+XZUOXf
+l3PQTF3kIPzKU2cOUwDeziHRmGKRQXvtTy2esBH45GKzKjFHH6ti6oUy3QG7wSZ7
+kXGGS6pgXjkPBU6yqwIDAQAB
+-----END PUBLIC KEY-----
diff --git a/node_modules/parse-asn1/test/dsa.1024.priv b/node_modules/parse-asn1/test/dsa.1024.priv
new file mode 100644
index 000000000..1145b7d70
--- /dev/null
+++ b/node_modules/parse-asn1/test/dsa.1024.priv
@@ -0,0 +1,18 @@
+-----BEGIN DSA PARAMETERS-----
+MIIBHgKBgQDdFg3WQmpOZxObxraIe4rrbUhrBw99fbnz99IvLj60sM/7Uk7eHYvp
+UrPaJBIcjPy68BjV4ekDljuPpFoAorsLzyvVSHuNvN6I/bRGm1TCOjDFVe98Oz6k
+XmI6pRfIF0TiIPXkel/sWIfBYa1lqdoW82h9FIjhbxVHrKGfvMEc9wIVAOzmJHec
+s6yBm+nE3+OmpWFYj0ylAoGAYxO6mFSoIY7PDRyRzKJEnULSzYXd3FoMkPwDCd5I
+ch/piIoAUIIQ542TL54GT9wuiCL+0D48qi9GWKasPZABfPQ008WOzmKzD8ncrUTd
+a7pzvUvdmwldA4Aa5/5xSXwtpK+DDye7KPlu+oi1BF6uj4TgfeGr1uxouxC2WhBE
+qH0=
+-----END DSA PARAMETERS-----
+-----BEGIN PRIVATE KEY-----
+MIIBSwIBADCCASwGByqGSM44BAEwggEfAoGBAOY0KsTt5EpJ4LtlD3xRS5mDiGE1
+CMNp0S9X0sK8kP8Aps8iYwMLbZYglk18GCNnCk4SjbAnZHSB3kaIv6AKQc2J8W2Y
+V5se3VhpKOFst7bqRtkGsl8uJtGlKTiXNclkv2jsKOrsBokSD1USGCECTNeMt3Og
+ziRcZ1dS+djSOZ2nAhUAzB96SpxlAak+K/QLVJ+lDe5DcY0CgYEAtxX1/Hckvhlh
+HQyKZWLQsDfZBILbhc+OLDpOyT6cJS/sJzfFIYZgK5M3rOS4OmzdYfJccQAuGq+T
+VJQ3VcYOdbrIANJV8CDrn4jkkejTzJI6fCwAkPWOyxw8kbV1Hsoy6WLfSCHKpBUc
+rogAqRGESqBVTawjyF/ECX667y/P49MEFgIUSeRVRgAXsLmeWR/V4Rh9Hex+9+s=
+-----END PRIVATE KEY-----
diff --git a/node_modules/parse-asn1/test/dsa.1024.pub b/node_modules/parse-asn1/test/dsa.1024.pub
new file mode 100644
index 000000000..80a731ea3
--- /dev/null
+++ b/node_modules/parse-asn1/test/dsa.1024.pub
@@ -0,0 +1,12 @@
+-----BEGIN PUBLIC KEY-----
+MIIBtzCCASwGByqGSM44BAEwggEfAoGBAOY0KsTt5EpJ4LtlD3xRS5mDiGE1CMNp
+0S9X0sK8kP8Aps8iYwMLbZYglk18GCNnCk4SjbAnZHSB3kaIv6AKQc2J8W2YV5se
+3VhpKOFst7bqRtkGsl8uJtGlKTiXNclkv2jsKOrsBokSD1USGCECTNeMt3OgziRc
+Z1dS+djSOZ2nAhUAzB96SpxlAak+K/QLVJ+lDe5DcY0CgYEAtxX1/HckvhlhHQyK
+ZWLQsDfZBILbhc+OLDpOyT6cJS/sJzfFIYZgK5M3rOS4OmzdYfJccQAuGq+TVJQ3
+VcYOdbrIANJV8CDrn4jkkejTzJI6fCwAkPWOyxw8kbV1Hsoy6WLfSCHKpBUcrogA
+qRGESqBVTawjyF/ECX667y/P49MDgYQAAoGAXYmxO4+52C1gBzh7GgTwNLJl7bLn
+gOhKTFlKhT36VjMjeFfdXmBVBVbfUottKZby/gVX1IXT38PStB/dswbF45bGDdoS
+zMFjYmHTtLtrU/4hReVtvb5MYmrPDFX58SwcSRRO/cH6WJPvfu4Aq0cJZA9Kb0B9
+5Wo18JxAqvPtTB8=
+-----END PUBLIC KEY-----
diff --git a/node_modules/parse-asn1/test/dsa.2048.priv b/node_modules/parse-asn1/test/dsa.2048.priv
new file mode 100644
index 000000000..2a77c2ee7
--- /dev/null
+++ b/node_modules/parse-asn1/test/dsa.2048.priv
@@ -0,0 +1,20 @@
+-----BEGIN DSA PRIVATE KEY-----
+MIIDVQIBAAKCAQEA0jDs9lLWX//NXYE1kNKw4UiDVMHHEtTF1OzJvBJvUh3/xMlU
+ic8mUpIMU5mt7BTjcijyLLl/TeNBcI/xDvWH3PAfCjP1CmNzOMHwU6wKA4Q20m5v
+zjauVycd7loRm5h+1XyD2JL1KmQTzhIIRAmRTeXMnr8LAHidYfUKmzCOCCrnctlE
+EOh1S6e7BFxQBRrlUxZF0LTjcAz31rrjIH6wKkYR4mnpGuI2vVJ+qHGmEhvq1hAb
+DvP0GN0iofxHlIVqOlfXYCZO388ZabfcBOQG57tTofm8aS4pnXCgbok9wEYPgbU5
+n6fEvDGOOObQyY109hZZaDJmfygr5mmD0TIXrQIhAMVBhV4liqAN2MrT/+ZUH6hY
++DhTazzSNLIZKQ5gfd+1AoIBADqHGUVQa9pbwyjbzooeWdijUM9W5P7UUj1OjrA0
+HIkcx37qHiYOVFqHpbjDs3tbgRBxBX5zBpwuhywC/6OetDiqzDy7zZCV/YMn06d2
+ncW2Ctjp3KPl7of39+HgXXePgTdKcfkjH9upJQTko88rA4NWwZbHYeA3Lv7DcA11
+XY3+TQHcxMtxf/E6aePjANJBsJsQjYLy3WyUiS87jkgi0Bigjg/cD3Nel4LToCTR
+JvQ4m3w3T4W0xL1+8nPjRZ2q0GgmxZzPfwALrwiSYMgGZC/ov43wqOs6WXs0NnpJ
+moU4oxutC/uDvTZmJvRj77FINjK0ZA20jmNvWmTIeEm1Xn4CggEABeRpOymQS5IS
+X+u9ya7C+P3MPIRGm4dcWPWgPpD1QcclNYLGnhRp7JazNsbbPMjnx1qtF+2qjfy9
+JDeWTAR8qfCNVmQHPAhJsJtV0C/V4PUii71FRNPVC3EAYbcBk8deMGoUg99cxSac
+6MCxIIOxuUKWpw8XPlMVpuXc8+lIMTYCPeLGinmT4DQ573t0MS6U3Ck/987xjkH9
+sos7zcYn3vnjywDCxXMidC0eUK1rxAAuY7PL4vQiKwXq8kFtWiKAnns/Zm5LTjiZ
+NrwlhNlU2wQVvyIcKaGfSRPheb69IbP+9qp5b7Xe7DNWdo48S0jl2KAFeZ91BnhM
+TH6WPtMpjQIgOaTTn6xYK0kZvvH3lZXrzkjp4aNlNY65R0JAKKNsx3s=
+-----END DSA PRIVATE KEY-----
diff --git a/node_modules/parse-asn1/test/dsa.2048.pub b/node_modules/parse-asn1/test/dsa.2048.pub
new file mode 100644
index 000000000..9f6cac1cc
--- /dev/null
+++ b/node_modules/parse-asn1/test/dsa.2048.pub
@@ -0,0 +1,20 @@
+-----BEGIN PUBLIC KEY-----
+MIIDRjCCAjkGByqGSM44BAEwggIsAoIBAQDSMOz2UtZf/81dgTWQ0rDhSINUwccS
+1MXU7Mm8Em9SHf/EyVSJzyZSkgxTma3sFONyKPIsuX9N40Fwj/EO9Yfc8B8KM/UK
+Y3M4wfBTrAoDhDbSbm/ONq5XJx3uWhGbmH7VfIPYkvUqZBPOEghECZFN5cyevwsA
+eJ1h9QqbMI4IKudy2UQQ6HVLp7sEXFAFGuVTFkXQtONwDPfWuuMgfrAqRhHiaeka
+4ja9Un6ocaYSG+rWEBsO8/QY3SKh/EeUhWo6V9dgJk7fzxlpt9wE5Abnu1Oh+bxp
+LimdcKBuiT3ARg+BtTmfp8S8MY445tDJjXT2FlloMmZ/KCvmaYPRMhetAiEAxUGF
+XiWKoA3YytP/5lQfqFj4OFNrPNI0shkpDmB937UCggEAOocZRVBr2lvDKNvOih5Z
+2KNQz1bk/tRSPU6OsDQciRzHfuoeJg5UWoeluMOze1uBEHEFfnMGnC6HLAL/o560
+OKrMPLvNkJX9gyfTp3adxbYK2Onco+Xuh/f34eBdd4+BN0px+SMf26klBOSjzysD
+g1bBlsdh4Dcu/sNwDXVdjf5NAdzEy3F/8Tpp4+MA0kGwmxCNgvLdbJSJLzuOSCLQ
+GKCOD9wPc16XgtOgJNEm9DibfDdPhbTEvX7yc+NFnarQaCbFnM9/AAuvCJJgyAZk
+L+i/jfCo6zpZezQ2ekmahTijG60L+4O9NmYm9GPvsUg2MrRkDbSOY29aZMh4SbVe
+fgOCAQUAAoIBAAXkaTspkEuSEl/rvcmuwvj9zDyERpuHXFj1oD6Q9UHHJTWCxp4U
+aeyWszbG2zzI58darRftqo38vSQ3lkwEfKnwjVZkBzwISbCbVdAv1eD1Iou9RUTT
+1QtxAGG3AZPHXjBqFIPfXMUmnOjAsSCDsblClqcPFz5TFabl3PPpSDE2Aj3ixop5
+k+A0Oe97dDEulNwpP/fO8Y5B/bKLO83GJ97548sAwsVzInQtHlCta8QALmOzy+L0
+IisF6vJBbVoigJ57P2ZuS044mTa8JYTZVNsEFb8iHCmhn0kT4Xm+vSGz/vaqeW+1
+3uwzVnaOPEtI5digBXmfdQZ4TEx+lj7TKY0=
+-----END PUBLIC KEY-----
diff --git a/node_modules/parse-asn1/test/ec.pass.priv b/node_modules/parse-asn1/test/ec.pass.priv
new file mode 100644
index 000000000..bf1836d55
--- /dev/null
+++ b/node_modules/parse-asn1/test/ec.pass.priv
@@ -0,0 +1,7 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIHeMEkGCSqGSIb3DQEFDTA8MBsGCSqGSIb3DQEFDDAOBAi9LqZQx4JFXAICCAAw
+HQYJYIZIAWUDBAECBBA+js1fG4Rv/yRN7oZvxbgyBIGQ/D4yj86M1x8lMsnAHQ/K
+7/ryb/baDNHqN9LTZanEGBuyxgrTzt08SiL+h91yFGMoaly029K1VgEI8Lxu5Np/
+A+LK7ewh73ABzsbuxYdcXI+rKnrvLN9Tt6veDs4GlqTTsWwq5wF0C+6gaYRBXA74
+T1b6NykGh2UNL5U5pHZEYdOVLz+lRJL7gYqlweNHP/S3
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/node_modules/parse-asn1/test/ec.priv b/node_modules/parse-asn1/test/ec.priv
new file mode 100644
index 000000000..25fffbd87
--- /dev/null
+++ b/node_modules/parse-asn1/test/ec.priv
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MHQCAQEEIDF6Xv8Sv//wGUWD+c780ppGrU0QdZWCAzxAQPQX8r/uoAcGBSuBBAAK
+oUQDQgAEIZeowDylls4K/wfBjO18bYo7gGx8nYQRija4e/qEMikOHJai7geeUreU
+r5Xky/Ax7s2dGtegsPNsPgGe5MpQvg==
+-----END EC PRIVATE KEY-----
diff --git a/node_modules/parse-asn1/test/ec.pub b/node_modules/parse-asn1/test/ec.pub
new file mode 100644
index 000000000..2e39e5bb6
--- /dev/null
+++ b/node_modules/parse-asn1/test/ec.pub
@@ -0,0 +1,4 @@
+-----BEGIN PUBLIC KEY-----
+MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEIZeowDylls4K/wfBjO18bYo7gGx8nYQR
+ija4e/qEMikOHJai7geeUreUr5Xky/Ax7s2dGtegsPNsPgGe5MpQvg==
+-----END PUBLIC KEY-----
diff --git a/node_modules/parse-asn1/test/index.js b/node_modules/parse-asn1/test/index.js
new file mode 100644
index 000000000..d8bf70d47
--- /dev/null
+++ b/node_modules/parse-asn1/test/index.js
@@ -0,0 +1,96 @@
+var test = require('tape')
+var fs = require('fs')
+var parseKey = require('../')
+var rsa1024 = {
+ private: fs.readFileSync(__dirname + '/rsa.1024.priv'),
+ public: fs.readFileSync(__dirname + '/rsa.1024.pub')
+}
+var rsa2028 = {
+ private: fs.readFileSync(__dirname + '/rsa.2028.priv'),
+ public: fs.readFileSync(__dirname + '/rsa.2028.pub')
+}
+var nonrsa1024 = {
+ private: fs.readFileSync(__dirname + '/1024.priv'),
+ public: fs.readFileSync(__dirname + '/1024.pub')
+}
+var pass1024 = {
+ private: {
+ passphrase: 'fooo',
+ key: fs.readFileSync(__dirname + '/pass.1024.priv')
+ },
+ public: fs.readFileSync(__dirname + '/pass.1024.pub')
+}
+var ec = {
+ private: fs.readFileSync(__dirname + '/ec.priv'),
+ public: fs.readFileSync(__dirname + '/ec.pub')
+}
+var ecpass = {
+ private: {
+ key: fs.readFileSync(__dirname + '/ec.pass.priv'),
+ passphrase: 'bard'
+ },
+ public: fs.readFileSync(__dirname + '/ec.pub')
+}
+var dsa = {
+ private: fs.readFileSync(__dirname + '/dsa.1024.priv'),
+ public: fs.readFileSync(__dirname + '/dsa.1024.pub')
+}
+var dsa2 = {
+ private: fs.readFileSync(__dirname + '/dsa.2048.priv'),
+ public: fs.readFileSync(__dirname + '/dsa.2048.pub')
+}
+var dsapass = {
+ private: {
+ key: fs.readFileSync(__dirname + '/pass.dsa.1024.priv'),
+ passphrase: 'password'
+ },
+ public: fs.readFileSync(__dirname + '/pass.dsa.1024.pub')
+}
+var dsapass2 = {
+ private: {
+ key: fs.readFileSync(__dirname + '/pass2.dsa.1024.priv'),
+ passphrase: 'password'
+ },
+ public: fs.readFileSync(__dirname + '/pass2.dsa.1024.pub')
+}
+var rsapass = {
+ private: {
+ key: fs.readFileSync(__dirname + '/pass.rsa.1024.priv'),
+ passphrase: 'password'
+ },
+ public: fs.readFileSync(__dirname + '/pass.rsa.1024.pub')
+}
+var rsapass2 = {
+ private: {
+ key: fs.readFileSync(__dirname + '/pass.rsa.2028.priv'),
+ passphrase: 'password'
+ },
+ public: fs.readFileSync(__dirname + '/pass.rsa.2028.pub')
+}
+var cert = {
+ private: fs.readFileSync(__dirname + '/rsa.1024.priv'),
+ public: fs.readFileSync(__dirname + '/node.cert')
+}
+var i = 0
+function testIt (keys) {
+ test('key ' + (++i), function (t) {
+ t.plan(2)
+ t.ok(parseKey(keys.public), 'public key')
+ t.ok(parseKey(keys.private), 'private key')
+ })
+}
+
+testIt(dsa)
+testIt(dsa2)
+testIt(rsa1024)
+testIt(ec)
+testIt(rsa2028)
+testIt(nonrsa1024)
+testIt(ecpass)
+testIt(dsapass)
+testIt(dsapass2)
+testIt(rsapass)
+testIt(rsapass2)
+testIt(pass1024)
+testIt(pass1024)
+testIt(cert)
diff --git a/node_modules/parse-asn1/test/node.cert b/node_modules/parse-asn1/test/node.cert
new file mode 100644
index 000000000..a3c1e4a0a
--- /dev/null
+++ b/node_modules/parse-asn1/test/node.cert
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDXDCCAsWgAwIBAgIJAKL0UG+mRkSPMA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNV
+BAYTAlVLMRQwEgYDVQQIEwtBY2tuYWNrIEx0ZDETMBEGA1UEBxMKUmh5cyBKb25l
+czEQMA4GA1UEChMHbm9kZS5qczEdMBsGA1UECxMUVGVzdCBUTFMgQ2VydGlmaWNh
+dGUxEjAQBgNVBAMTCWxvY2FsaG9zdDAeFw0wOTExMTEwOTUyMjJaFw0yOTExMDYw
+OTUyMjJaMH0xCzAJBgNVBAYTAlVLMRQwEgYDVQQIEwtBY2tuYWNrIEx0ZDETMBEG
+A1UEBxMKUmh5cyBKb25lczEQMA4GA1UEChMHbm9kZS5qczEdMBsGA1UECxMUVGVz
+dCBUTFMgQ2VydGlmaWNhdGUxEjAQBgNVBAMTCWxvY2FsaG9zdDCBnzANBgkqhkiG
+9w0BAQEFAAOBjQAwgYkCgYEA8d8Hc6atq78Jt1HLp9agA/wpQfsFvkYUdZ1YsdvO
+kL2janjwHQgMMCy/Njal3FUEW0OLPebKZUJ8L44JBXSlVxU4zyiiSOWld8EkTetR
+AVT3WKQq3ud+cnxv7g8rGRQp1UHZwmdbZ1wEfAYq8QjYx6m1ciMgRo7DaDQhD29k
+d+UCAwEAAaOB4zCB4DAdBgNVHQ4EFgQUL9miTJn+HKNuTmx/oMWlZP9cd4QwgbAG
+A1UdIwSBqDCBpYAUL9miTJn+HKNuTmx/oMWlZP9cd4ShgYGkfzB9MQswCQYDVQQG
+EwJVSzEUMBIGA1UECBMLQWNrbmFjayBMdGQxEzARBgNVBAcTClJoeXMgSm9uZXMx
+EDAOBgNVBAoTB25vZGUuanMxHTAbBgNVBAsTFFRlc3QgVExTIENlcnRpZmljYXRl
+MRIwEAYDVQQDEwlsb2NhbGhvc3SCCQCi9FBvpkZEjzAMBgNVHRMEBTADAQH/MA0G
+CSqGSIb3DQEBBQUAA4GBADRXXA2xSUK5W1i3oLYWW6NEDVWkTQ9RveplyeS9MOkP
+e7yPcpz0+O0ZDDrxR9chAiZ7fmdBBX1Tr+pIuCrG/Ud49SBqeS5aMJGVwiSd7o1n
+dhU2Sz3Q60DwJEL1VenQHiVYlWWtqXBThe9ggqRPnCfsCRTP8qifKkjk45zWPcpN
+-----END CERTIFICATE-----
diff --git a/node_modules/parse-asn1/test/pass.1024.priv b/node_modules/parse-asn1/test/pass.1024.priv
new file mode 100644
index 000000000..b9f388450
--- /dev/null
+++ b/node_modules/parse-asn1/test/pass.1024.priv
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIICzzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQIji3ZZ6JbsA4CAggA
+MB0GCWCGSAFlAwQBFgQQC6MKblq8zyX90/KmgotsMQSCAoDghNf+yxPC/KRh7F3O
+k0lMgtDkV+wCLDv7aBvUqy8Ry2zqFPIlfLb8XtSW943XEu6KUI13IZPEr8p9h1ve
+Iye6L0g6uAgbFxBE2DwBBSI7mYr7lokr4v0k+inMKf4JeRdI9XWgwOILKTGf1vH7
+PhvBnqLhOg6BIOuF426qpiyYlmRda74d0Th4o6ZyhyMSzPI1XbWSg719Ew3N/tLe
+OHdYl0eFrgNjq+xO4Ev+W7eNIh/XBMQtk9wo+mxeNdldRnX822HxTsL8fSSPs+9T
+W5M/2EBTJMSsswSjZyFkq8ehtxovI2u0IBX1IiPulyUZLnSNPDV1eUVClK6rk+q1
+kVsfJhUr2qvIjNlQWlbEXQj4VwGtgl0++l8vdpj59MuN2J3Nx5TNMLjA6BYAa/tr
+Bu928QoT7ET+SGx5XKCwKb5fwXmDlV5zZC4kZWTaF/d/Icvj5F+fDZuYFg1JOXNZ
++q2oA1qMYaHGX6lF3pbO84ebg1iwQTDM8iIqFeSMGUJTnk/3a7sqfaWQbEQwGb+X
+fXnSTwkF+wO2rriPbFvWyzecWu67zDCP0ZWUgGb86sSJCM7xRGShESwCjOrb88F1
+5SZjyIqogrkc3IWiLH9gc5U8d86qoFjJnP6BfwYks1UIyXNGKfZTCqICpMphV+IS
+b0N2jprjLTkWR6nxYGSH1bkKMs7x1M0FBLWWLAZqPn9X3pe6JwIBds04O6XjF0un
+oxwDjcJdoxVs7PgRiM5d1Tubqu2zmpCCmXNiqi9B0+rV9/jHg9IA5gUfvYdCcEv+
+oAr90I+2+PuBFa9lgdbDV6DtZk4bSYluqamxVeLPg/vrewYfVfDv6jftfY1D0DEy
+69H0
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/node_modules/parse-asn1/test/pass.1024.pub b/node_modules/parse-asn1/test/pass.1024.pub
new file mode 100644
index 000000000..617e7fb10
--- /dev/null
+++ b/node_modules/parse-asn1/test/pass.1024.pub
@@ -0,0 +1,6 @@
+-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSK/7i5BV0x+gmX16Wrm7kRkCZ
+y1QUt6wiM2g+SAZTYR0381VnSMX2cv7CpN3499lZj1rL5S7YTaZZwX3RvU5fz56/
+eDX6ciL/PZsbclN2KdkMWYgmcb9J1zUeoMQ3cjfFUCdQZ/ZvDWa+wY2Zg8os2Bow
+AoufHtYHm3eOly/cWwIDAQAB
+-----END PUBLIC KEY-----
diff --git a/node_modules/parse-asn1/test/pass.dsa.1024.priv b/node_modules/parse-asn1/test/pass.dsa.1024.priv
new file mode 100644
index 000000000..aab5fc2f1
--- /dev/null
+++ b/node_modules/parse-asn1/test/pass.dsa.1024.priv
@@ -0,0 +1,11 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBnzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQI1z4IJORFws4CAggA
+MB0GCWCGSAFlAwQBAgQQq7f0CuKCTITfPS5Xax1H4wSCAVDFyIjYVXfBNe+BARqz
+Tfo09y4vKkErOb7Sz4bQkAjRLjOXiUjM4eTNtivml8NqVrQTKAghN+ggxj416OD4
+oq6Ns7Ncbd4Xm5Ni8wrrWbJxVog6rAa/ioU0sfgRExYy/xE2Q9KkW+VE7SUwanwY
+e81Od9qNM5KhZGM1yUSKa0JA6Xqb8dAqBo9rVt8DceumB9OP83xV3fLEimSZfR6p
+slA1P/dTvKxwhpguQe4Z3OkzTzGCxyboqeRW1woNHKbxjzzSHcaki9SHQm3xpUW8
+hRAJd6OtDnLbkE9MnC+UcI3mjru1xfnR5MU7qG7e9nvOhEDVaDkiK3DbrSf0B0Bi
+p1hyX1XsSXDewSEd/mlfMLdD8WecgUtl9ea7JzxY3/6R78yB951I5TmY45mp/v+N
+tbxEv29B65UKf0ac7gVw4LNy8JF2ef/L/meEmBoIAE71f+8=
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/node_modules/parse-asn1/test/pass.dsa.1024.pub b/node_modules/parse-asn1/test/pass.dsa.1024.pub
new file mode 100644
index 000000000..80a731ea3
--- /dev/null
+++ b/node_modules/parse-asn1/test/pass.dsa.1024.pub
@@ -0,0 +1,12 @@
+-----BEGIN PUBLIC KEY-----
+MIIBtzCCASwGByqGSM44BAEwggEfAoGBAOY0KsTt5EpJ4LtlD3xRS5mDiGE1CMNp
+0S9X0sK8kP8Aps8iYwMLbZYglk18GCNnCk4SjbAnZHSB3kaIv6AKQc2J8W2YV5se
+3VhpKOFst7bqRtkGsl8uJtGlKTiXNclkv2jsKOrsBokSD1USGCECTNeMt3OgziRc
+Z1dS+djSOZ2nAhUAzB96SpxlAak+K/QLVJ+lDe5DcY0CgYEAtxX1/HckvhlhHQyK
+ZWLQsDfZBILbhc+OLDpOyT6cJS/sJzfFIYZgK5M3rOS4OmzdYfJccQAuGq+TVJQ3
+VcYOdbrIANJV8CDrn4jkkejTzJI6fCwAkPWOyxw8kbV1Hsoy6WLfSCHKpBUcrogA
+qRGESqBVTawjyF/ECX667y/P49MDgYQAAoGAXYmxO4+52C1gBzh7GgTwNLJl7bLn
+gOhKTFlKhT36VjMjeFfdXmBVBVbfUottKZby/gVX1IXT38PStB/dswbF45bGDdoS
+zMFjYmHTtLtrU/4hReVtvb5MYmrPDFX58SwcSRRO/cH6WJPvfu4Aq0cJZA9Kb0B9
+5Wo18JxAqvPtTB8=
+-----END PUBLIC KEY-----
diff --git a/node_modules/parse-asn1/test/pass.rsa.1024.priv b/node_modules/parse-asn1/test/pass.rsa.1024.priv
new file mode 100644
index 000000000..b67bd8043
--- /dev/null
+++ b/node_modules/parse-asn1/test/pass.rsa.1024.priv
@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-192-CBC,04D2D7882E0C474E07E542FE997D2A49
+
+vfB5Gtm34n3SeI6JELjWiGw6O+j+tGR6Wbi3SNeAZkfSA8PTjei6PVHr+dGK5zMd
+nTckd0EpxItqxEdtLK6GtBIa9KRd3cEbayHmyyybH2FC4STXJCUFBe2eb7ZKmnCl
+RB5FcmAqExif+QOJwHnZw6DTzq+oGSwi9cSoy2qE62FgXkj8uKAYcBLONmsP1YQA
+4zIub4bnEbIghL/swEB/HVS86FyMCsMXrHEOnSuUUBf/UfZFNypI6kVUNXlItnN1
+14eeRsBD37VkL7dAQPMx+Dwm7DbU07QWrVvzgmWlu3KqR0tRNA9e4a5f14XOYxgS
+HZ+XVZK8iAd+76OnprlFtGDowDXGM0wUXPYq5j8WpKxNsVs2RV+S6U0gQLoSqNxt
+We7UPWZufzEdjTUO8q9KhdGqFmJ53XIYClZf0bp148b+Bk3P+dN5TbmKQEfulScn
+rTLTRo34fdTIAJr5BJh0OXGNs9rFlMJ9Nz4FwVTEB1DMerXtt9ICdhud9BktRhvq
+axgoz+XA3LrBrlPPcrSCZyIYjZFydGSkzg439OyDEZ6+uRmc0qhWA4j6AgXx6gGR
+NvvypoFVKvXqEq/2F+SVyyMGrm4xPmsr/HUBeE9SmuTzNzDfVAM/xerqIoR2szR0
+O0hwtOj4fk7//cd1CjFzd0JiF/SqMkHxkdbmIC9qlhshkWlQbvvhbefodYPuGxmj
+L1TaPgX36OcrQSodzyWBN5tSmmX1Nmftcz7iwc4AKrqkdnM3sPS3SczsAjMWrjRr
+7iYhdPQSZtxVCTjACU3h7scNAg9AU6l4YZrowR//J6U=
+-----END RSA PRIVATE KEY-----
diff --git a/node_modules/parse-asn1/test/pass.rsa.1024.pub b/node_modules/parse-asn1/test/pass.rsa.1024.pub
new file mode 100644
index 000000000..3506c331c
--- /dev/null
+++ b/node_modules/parse-asn1/test/pass.rsa.1024.pub
@@ -0,0 +1,6 @@
+-----BEGIN PUBLIC KEY-----
+MIGcMA0GCSqGSIb3DQEBAQUAA4GKADCBhgJ/OwswbFo/uyC8ltGf/yA1A+gV5IGd
+nAgPbUSI3GzbHCA+x+TLG/tLvbRw3r1smppY/jkkpiVW1ErSMuN0uixp5gb78Z9r
+H1XpWb5WWgp3WaY/9EHMjMdOkQ/9LVZvRvl/M/Fi6owP+q+amJI1BEjECYfbhGL3
+rmlVdq4qXc40QwIDAQAB
+-----END PUBLIC KEY-----
diff --git a/node_modules/parse-asn1/test/pass.rsa.2028.priv b/node_modules/parse-asn1/test/pass.rsa.2028.priv
new file mode 100644
index 000000000..99e821352
--- /dev/null
+++ b/node_modules/parse-asn1/test/pass.rsa.2028.priv
@@ -0,0 +1,30 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-256-CBC,7A6A055AD675947A657041422F06D439
+
+HQdjzAKUuqqKhZHmpzzY/monfqFhiHnZ5c24jtR9fM4aQJXf/e1fz6MEhyIz6XON
+sb4CnXZstnxUuVWDkHEu6KWQ/dKALgiDUuT+UdMawVoVPGdgyWZp35pQPWi3fT2V
+XZn58YkG8bO3Y403eZPyhadOefD1VtuFuK6/f90jjzx6ZDnwveXpYgFV7Jy1/pFd
+cLLMf07C+hbk416nX6UVipWe4GH+ADFom5ZCfAaUotM7n8i149dULNF4YYi2wP31
+1YaDH5vf1CqiaieDY7xLzpEixwJz6ZEg3gLXaUvz2MpF8owiGI3eP0g7voWp3xt4
+TQx/qDURlaXiaRriWdWtpKyW1MFuJ5+KdNtR1/kXr2BLPB/ZLwyqtynUy8ZYpb4+
+WIRYpUGeb//ZHGhlCH7CRMdABsal4wTwnzi9fW4Ax96ecJ2SlwCuKxwS7iEq2y1/
+FAfGwsE+XufHhme5p6XjKfiHx+zJMIB2NMkrm+wm4PbMTrGVnw5/41/r6XxOB8fe
+iKi12Jth4dusc1vYGYfzKop9uEM6CZ6+Chqzb+Zyh/xUiZVlCX/BYnxr7yXUm9aR
+PHQgxkn2Act8FgQB3Kgs3jCiCRIJrlsnybeWzQ3YO9TjC4MxygmmwODDBpsOKnEi
+kXXS54+cZFjcsva4uJVwhAywRPVUkLzmTkH0tGiwCHjeQNECm+TLahkkEIXrVTb9
+c9creNXMgE6jVVz+R43HXsGvTcgMcBLyFRQJe2nVaj/dQ5JbF4uqNnQzRjAbD34K
+uTpFaJ/kmlgcmeScRLnwaoYwFlmhSC+bK0dfY1Jr6AQRA6IDP7nIjqWNDCHNBB8r
+Qj1v2KWoVQe3xNHaXhkbJPbA2DKlUIqffkBVtMKtt9KuG3Rccf3bVYAW6oid73/D
+z7DMAF5G/OpVR8VbGh1WxXuR7zEVDUwpwsp9ek5dqN8BnBz1ppdZNIKqzszneckU
+s2l/6mZBmgV1Nfy/cQU6U5s3S1Xc75UDQVLms3CIOpFTRIpecNTdfa31fYy/svy0
+M2lWTbCva0dOyuvMUhTgBL4I7Qa2dUMPXHMZatV5ooHYq/BZJA1r84C5cM5r+umE
+2LLv/BlUr7RaQHhaKGn4Qhpzo5yRDE9mEqDpLVkbg8SxMsdf/pEF5/VyUwA9t8RT
+fKVsInRd386tDqJSDbSFqKTvLztr/5YCyzZzvC2YB1voko/caOGd2d/G51Ij+bXU
+xEN8U4fHDBsHwPUGb31uZUhTXpL37KiOqZmXFoH2usmuvx882XvyGcV0F4tstMaR
+KLKzl2PwqzAYGFexLkYKMz0TYIeN6h3b86ETazPPU49nkaEU23Dx21J2Rb3UlH+I
+lDQF3wuH1QlYiTnlcVa/Zu4QQg0/iP8ALkZ06mvn9e9mOtnA8gsh4B2oLqc19VLU
+bcpv40dV1H3W9Lcx9B8JYUp0c/Oyno1D7Yj3tjGcwMKECmUpHi4kksehVo0/P933
+xmFmC6eyWYVdO9upvY/vKSB7b1dMt85iWr3gnMsSfRYc6jsbSxdjOPST46UsIzjx
+wa1DS6+Bv5tiaC4uC6X+0tCAZo+UOQMYUbTGRR/7g/c=
+-----END RSA PRIVATE KEY-----
diff --git a/node_modules/parse-asn1/test/pass.rsa.2028.pub b/node_modules/parse-asn1/test/pass.rsa.2028.pub
new file mode 100644
index 000000000..655cc3a4d
--- /dev/null
+++ b/node_modules/parse-asn1/test/pass.rsa.2028.pub
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBHjANBgkqhkiG9w0BAQEFAAOCAQsAMIIBBgKB/gy7mjaWgPeFdVYDZWRCA9BN
+iv3pPb0es27+FKY0hszLaOw47ExCtAWpDsH48TXAfyHBYwBLguayfk4LGIupxb+C
+GMbRo3xEp0CbfY1Jby26T9vGjRC1foHDDUJG84uaRbyHqaf4i6zt4gVR+xlAEIjk
+aFAAK8cOoXAT1CVqGLLljUCchL8PjaHj/yriZ/S7rdwlI3LnABxwwmLrmR/v71Wt
+pmO/aNG8N+1po+QwaghTkyQ59E/ZvAuOkFWHok2q/R6PYAa2jdZ9zim0FqOP+nkQ
+aEDRbBFBmBqTv5fFGfk2WsAfKf/RG0/VFd+ZeM5251TeTvXH695nlSGauVl9AgMB
+AAE=
+-----END PUBLIC KEY-----
diff --git a/node_modules/parse-asn1/test/pass2.dsa.1024.priv b/node_modules/parse-asn1/test/pass2.dsa.1024.priv
new file mode 100644
index 000000000..29e367344
--- /dev/null
+++ b/node_modules/parse-asn1/test/pass2.dsa.1024.priv
@@ -0,0 +1,15 @@
+-----BEGIN DSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-128-CBC,DC173C6DFD455EBE462A35D6AB9A603A
+
+FoC3sxbdUFJTaNtRpooMxaX2lcQRLUz8qcRhzDBn5a1kaMHp2JM3KlHK5aauybT4
+ilmlKJ9sSm8pFLAWPKbkczSgZ+X6p/51v4zaEJSebZ98p32kQk87XJQE7aYroxYV
+UfM5PSOoKWilj+LZQQEXV10qDoYGrnbSdoNSxYW5V1a1aP+ua0EO7m9MUYkoLxi3
+SJ/s2h/5KM3TOz7d7DOZuSoNm+0n6YC4aqQnR3lmEtAXEYLQqLhH2Q3FTKTHwBQw
+HgMBAzcXOS1YSw6Ekwh1eZamizrOEC4I6oZEHoUBqRfbsQ8tu77kDq2ovQSyn8Fp
+SeE64m3GgZOYdfcDuNZ0ccmm3shBBfTfD9AwR+1thklKO3oaaLEHb6TmnkD79rEz
+9WsiVxoN7vqqWdgoeyl7REOB6WLQp8kYS4FoRG0QB/ZS8Hs/Tf17QPnrQNiMkvP7
+sJSHmlaMKXjWXK0VoN94kfZKUXwkzLD1VXuXFCnUkznWU0tahYi06b8/SVXc6EG+
+0mzylckH7UnjOQfxSFAlZ+e/PiX80tcPakxYbk+f1Nv7L0NOyhrDv18KUbv9mEpV
+Ysild1m7/QSF0u1qmjmGNQ==
+-----END DSA PRIVATE KEY-----
diff --git a/node_modules/parse-asn1/test/pass2.dsa.1024.pub b/node_modules/parse-asn1/test/pass2.dsa.1024.pub
new file mode 100644
index 000000000..80a731ea3
--- /dev/null
+++ b/node_modules/parse-asn1/test/pass2.dsa.1024.pub
@@ -0,0 +1,12 @@
+-----BEGIN PUBLIC KEY-----
+MIIBtzCCASwGByqGSM44BAEwggEfAoGBAOY0KsTt5EpJ4LtlD3xRS5mDiGE1CMNp
+0S9X0sK8kP8Aps8iYwMLbZYglk18GCNnCk4SjbAnZHSB3kaIv6AKQc2J8W2YV5se
+3VhpKOFst7bqRtkGsl8uJtGlKTiXNclkv2jsKOrsBokSD1USGCECTNeMt3OgziRc
+Z1dS+djSOZ2nAhUAzB96SpxlAak+K/QLVJ+lDe5DcY0CgYEAtxX1/HckvhlhHQyK
+ZWLQsDfZBILbhc+OLDpOyT6cJS/sJzfFIYZgK5M3rOS4OmzdYfJccQAuGq+TVJQ3
+VcYOdbrIANJV8CDrn4jkkejTzJI6fCwAkPWOyxw8kbV1Hsoy6WLfSCHKpBUcrogA
+qRGESqBVTawjyF/ECX667y/P49MDgYQAAoGAXYmxO4+52C1gBzh7GgTwNLJl7bLn
+gOhKTFlKhT36VjMjeFfdXmBVBVbfUottKZby/gVX1IXT38PStB/dswbF45bGDdoS
+zMFjYmHTtLtrU/4hReVtvb5MYmrPDFX58SwcSRRO/cH6WJPvfu4Aq0cJZA9Kb0B9
+5Wo18JxAqvPtTB8=
+-----END PUBLIC KEY-----
diff --git a/node_modules/parse-asn1/test/rsa.1024.priv b/node_modules/parse-asn1/test/rsa.1024.priv
new file mode 100644
index 000000000..d3b5fdab6
--- /dev/null
+++ b/node_modules/parse-asn1/test/rsa.1024.priv
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICVAIBAAJ/OwswbFo/uyC8ltGf/yA1A+gV5IGdnAgPbUSI3GzbHCA+x+TLG/tL
+vbRw3r1smppY/jkkpiVW1ErSMuN0uixp5gb78Z9rH1XpWb5WWgp3WaY/9EHMjMdO
+kQ/9LVZvRvl/M/Fi6owP+q+amJI1BEjECYfbhGL3rmlVdq4qXc40QwIDAQABAn8I
+VZ0BPoAOhyF33KFMHxy8r28fsVgxJUYgM3NqQgdv4fFawCYXjhJz9duU5YJGFJGJ
+WUGeHlkyYFlpi4f3m7tY7JawmQUWB0MNSoKHI3cgDX4/tfBN8ni+cO0eSoR5czBY
+EsAHBU47p1awNFAHwd+ZEuv9H4RmMn7p279rQTtpAkAH3Nqs2/vrRF2cZUN4fIXf
+4xHsQBByUayGq8a3J0UGaSFWv68zTUKFherr9uZotNp7NJ4jBXiARw0q8docXUG1
+AkAHgmOKHoORtAmikqpmFEJZOtsXMaLCIm4EszPo5ciYoLMBcVit09AdiQlt7ZJL
+DY02svU1b0agCZ97kDkmHDkXAkACa8M9JELuDs/P/vIGYDkMVatIFfW6bWF02eFG
+taWwMqCcSEsWvbw0xqYt34jURpNbCjmCyQVwYfAw/+TLhP9dAkAFwRjdwjw37qpj
+ddg1mNiu37b7swFxmkiMOXZRxaNNsfb56A14RpN3zob3QdGUybGodMIKTFbmU/lu
+CjqAxafJAkAG2yf6RWbwFIWfMyt7WYCh0VaGBCcgy574AinVieEo3ZZyFfC63+xm
+3uoaNy4iLoJv4GCjqUBz3ZfcVaO/DDWG
+-----END RSA PRIVATE KEY-----
diff --git a/node_modules/parse-asn1/test/rsa.1024.pub b/node_modules/parse-asn1/test/rsa.1024.pub
new file mode 100644
index 000000000..7ba06369b
--- /dev/null
+++ b/node_modules/parse-asn1/test/rsa.1024.pub
@@ -0,0 +1,5 @@
+-----BEGIN RSA PUBLIC KEY-----
+MIGGAn87CzBsWj+7ILyW0Z//IDUD6BXkgZ2cCA9tRIjcbNscID7H5Msb+0u9tHDe
+vWyamlj+OSSmJVbUStIy43S6LGnmBvvxn2sfVelZvlZaCndZpj/0QcyMx06RD/0t
+Vm9G+X8z8WLqjA/6r5qYkjUESMQJh9uEYveuaVV2ripdzjRDAgMBAAE=
+-----END RSA PUBLIC KEY-----
diff --git a/node_modules/parse-asn1/test/rsa.2028.priv b/node_modules/parse-asn1/test/rsa.2028.priv
new file mode 100644
index 000000000..10e651d86
--- /dev/null
+++ b/node_modules/parse-asn1/test/rsa.2028.priv
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEjwIBAAKB/gy7mjaWgPeFdVYDZWRCA9BNiv3pPb0es27+FKY0hszLaOw47ExC
+tAWpDsH48TXAfyHBYwBLguayfk4LGIupxb+CGMbRo3xEp0CbfY1Jby26T9vGjRC1
+foHDDUJG84uaRbyHqaf4i6zt4gVR+xlAEIjkaFAAK8cOoXAT1CVqGLLljUCchL8P
+jaHj/yriZ/S7rdwlI3LnABxwwmLrmR/v71WtpmO/aNG8N+1po+QwaghTkyQ59E/Z
+vAuOkFWHok2q/R6PYAa2jdZ9zim0FqOP+nkQaEDRbBFBmBqTv5fFGfk2WsAfKf/R
+G0/VFd+ZeM5251TeTvXH695nlSGauVl9AgMBAAECgf4LrWHY/l54ouThZWvvbrug
+pfz6sJX2g9l7yXmWlEWsPECVo/7SUbpYFpt6OZy99zSg+IKbGqWKfdhoKrTwIVtC
+L0YZ0NlmdnANSIz0roxQG7ZxkL5+vHSw/PmD9x4Uwf+Cz8hATCmNBv1qc60dkyuW
+4CLqe72qaTiVWRoO1iagQghNcLoo6vSy65ExLaCDTPha7yu2vw4hFZpWiEjW4dxf
+rFdLiix52BC86YlAlxME/rLg8IJVvilbyo9aWdXmxOaUTLRv6PkFD1/gVdw8V9Qr
+SLN9FlK2kkjiX0dzoibvZw3tMnt3yydAx0X87+sMRVahC1bp3kVPz4Hy0EWX4QJ/
+PM31vGiuITk2NCd51DXt1Ltn2OP5FaJSmCaEjh0XkU4qouYyjXWt8Bu6BTCl2vua
+Fg0Uji9C+IkPLmaUMbMIOwaTk8cWqLthSxsLe70J5OkGrgfKUM/w+BHH1Pt/Pjzj
+C++l0kiFaOVDVaAV9GpLPLCBoK/PC9Rb/rxMMoCCNwJ/NZuedIny2w3LMii77h/T
+zSvergNGhjY6Rnva8lLXJ6dlrkcPAyps3gWwxqj4NR0T+GM0bDUPVLb7M07XV7SX
+v7VJGm52JbRGwM1ss+r8XTTNemeGk+WRxG7TgtsMqYGXLfB8Qxk/f5/Mcc00Tl8u
+wXFNsfxJxmt6AbsTr3g36wJ/IhOnibz9Ad+nchlBnN3QeW3CKHqzaR18voqvtVm2
+kJfHK15prH/sSGmxmiEGgrCJTZxtDbaNCO7/VBjnKudUUIhCAwsLtuq0/zub9vAd
+8G1scfIpv5qaSNzmKoX8bOwArvrS6wP7yKrcTsuWIlHD8rJVI7IEDnQoTp5G8fK1
+hwJ/MIh8M5v0r5dUYEv6oIJWGcle6AH1JmsP5WIafgq72Z2288pHcCFHwNY8Dg9J
+76QswVLnUhPTlmm3EOOPGEtam2iAD5r0Afytlb4lbNoQsj2szeXONDXB+6oueajh
+VNELUr8HcSP5lgzRZjJW6aFIzj9LDRmQnUAOjGSXVOQtEwJ/MCQZ7N/v4dIKeDRA
+8d8UExZ3+gGHumziztGRJ0tQryZH2PakP5I7V+1l7qEUnJ2c3mF+e1v41Ep9LCvh
+bzrPKw9dxh18g4b+7bMpsWPnsraKh6ipxc7aaOaZV0Dxgez4zcZu0P1olO0cN3KM
+nxJ0Pds3R8bAhNCDdS2JZaRp5Q==
+-----END RSA PRIVATE KEY-----
diff --git a/node_modules/parse-asn1/test/rsa.2028.pub b/node_modules/parse-asn1/test/rsa.2028.pub
new file mode 100644
index 000000000..b36dca4d6
--- /dev/null
+++ b/node_modules/parse-asn1/test/rsa.2028.pub
@@ -0,0 +1,8 @@
+-----BEGIN RSA PUBLIC KEY-----
+MIIBBgKB/gy7mjaWgPeFdVYDZWRCA9BNiv3pPb0es27+FKY0hszLaOw47ExCtAWp
+DsH48TXAfyHBYwBLguayfk4LGIupxb+CGMbRo3xEp0CbfY1Jby26T9vGjRC1foHD
+DUJG84uaRbyHqaf4i6zt4gVR+xlAEIjkaFAAK8cOoXAT1CVqGLLljUCchL8PjaHj
+/yriZ/S7rdwlI3LnABxwwmLrmR/v71WtpmO/aNG8N+1po+QwaghTkyQ59E/ZvAuO
+kFWHok2q/R6PYAa2jdZ9zim0FqOP+nkQaEDRbBFBmBqTv5fFGfk2WsAfKf/RG0/V
+Fd+ZeM5251TeTvXH695nlSGauVl9AgMBAAE=
+-----END RSA PUBLIC KEY-----
diff --git a/node_modules/parse-asn1/test/vector.js b/node_modules/parse-asn1/test/vector.js
new file mode 100644
index 000000000..4b8d8cf53
--- /dev/null
+++ b/node_modules/parse-asn1/test/vector.js
@@ -0,0 +1,7 @@
+module.exports = {
+ p: new Buffer('86F5CA03DCFEB225063FF830A0C769B9DD9D6153AD91D7CE27F787C43278B447E6533B86B18BED6E8A48B784A14C252C5BE0DBF60B86D6385BD2F12FB763ED8873ABFD3F5BA2E0A8C0A59082EAC056935E529DAF7C610467899C77ADEDFC846C881870B7B19B2B58F9BE0521A17002E3BDD6B86685EE90B3D9A1B02B782B1779', 'hex'),
+ q: new Buffer('996F967F6C8E388D9E28D01E205FBA957A5698B1', 'hex'),
+ g: new Buffer('07B0F92546150B62514BB771E2A0C0CE387F03BDA6C56B505209FF25FD3C133D89BBCD97E904E09114D9A7DEFDEADFC9078EA544D2E401AEECC40BB9FBBF78FD87995A10A1C27CB7789B594BA7EFB5C4326A9FE59A070E136DB77175464ADCA417BE5DCE2F40D10A46A3A3943F26AB7FD9C0398FF8C76EE0A56826A8A88F1DBD', 'hex'),
+ x: new Buffer('411602CB19A6CCC34494D79D98EF1E7ED5AF25F7', 'hex'),
+ y: new Buffer('5DF5E01DED31D0297E274E1691C192FE5868FEF9E19A84776454B100CF16F65392195A38B90523E2542EE61871C0440CB87C322FC4B4D2EC5E1E7EC766E1BE8D4CE935437DC11C3C8FD426338933EBFE739CB3465F4D3668C5E473508253B1E682F65CBDC4FAE93C2EA212390E54905A86E2223170B44EAA7DA5DD9FFCFB7F3B', 'hex')
+}
diff --git a/node_modules/parse-asn1/test/vector.priv b/node_modules/parse-asn1/test/vector.priv
new file mode 100644
index 000000000..178bd1e68
--- /dev/null
+++ b/node_modules/parse-asn1/test/vector.priv
@@ -0,0 +1,12 @@
+-----BEGIN DSA PRIVATE KEY-----
+MIIBugIBAAKBgQCG9coD3P6yJQY/+DCgx2m53Z1hU62R184n94fEMni0R+ZTO4ax
+i+1uiki3hKFMJSxb4Nv2C4bWOFvS8S+3Y+2Ic6v9P1ui4KjApZCC6sBWk15Sna98
+YQRniZx3re38hGyIGHC3sZsrWPm+BSGhcALjvda4ZoXukLPZobAreCsXeQIVAJlv
+ln9sjjiNnijQHiBfupV6VpixAoGAB7D5JUYVC2JRS7dx4qDAzjh/A72mxWtQUgn/
+Jf08Ez2Ju82X6QTgkRTZp9796t/JB46lRNLkAa7sxAu5+794/YeZWhChwny3eJtZ
+S6fvtcQyap/lmgcOE223cXVGStykF75dzi9A0QpGo6OUPyarf9nAOY/4x27gpWgm
+qKiPHb0CgYBd9eAd7THQKX4nThaRwZL+WGj++eGahHdkVLEAzxb2U5IZWji5BSPi
+VC7mGHHARAy4fDIvxLTS7F4efsdm4b6NTOk1Q33BHDyP1CYziTPr/nOcs0ZfTTZo
+xeRzUIJTseaC9ly9xPrpPC6iEjkOVJBahuIiMXC0Tqp9pd2f/Pt/OwIUQRYCyxmm
+zMNElNedmO8eftWvJfc=
+-----END DSA PRIVATE KEY-----
diff --git a/node_modules/parse-asn1/test/vector2.priv b/node_modules/parse-asn1/test/vector2.priv
new file mode 100644
index 000000000..ef53f6146
--- /dev/null
+++ b/node_modules/parse-asn1/test/vector2.priv
@@ -0,0 +1,19 @@
+-----BEGIN DSA PRIVATE KEY-----
+MIIDVQIBAAKCAQEAnbb7WVG2a7b+HhQPHSzlUCN0Fh/WU43xZIIYZC8LXEjI96Qa
+rfoYcyS4dnT6GCKwDx7PgTaUPXxVdXJk5aGkT/4BLpk24AwdPpMQsBx9F5gF0wWL
+Kp9Ltvlxa/5hF8a1s8xNm+NBEErUqArWyU4AX0uZPhTwketRdDvzMFDDjeI1Vn4b
+NMPWpcDOqhoPNoITw9GYQ9C0sJ3Ln8ctOcjeQfG/FNS7RWPKKDcWIcrTMktqLTkh
+Rb6/rHSIBSNvXKL+krhxzY+cNtMpK1UJyoyqd6Kt/Hv9d92m9xElp0Vv6hU+QzJW
+oiYcagbtNpN5fnmV+tWqu8++PtonQeN1QEriWwIhAPLDEZN0znbJNWmQtGU3Shfy
+P57TUIm9lp9hxt3pmYwfAoIBAFx/9rBvjxQ/6CiEM0k+R2nE2Yis5b4loOJICWcH
+FsYT17DO5pMvj6p8RNLLJFI9pT++T27DWViS0apYxDKKBsRqFWYufqpwOh3s+Luy
+0F2+LrlWwUKjOGYdEEYcDRNUcghQV/NJQwn/pzxhH3izKtu1dAw2HJ81vpCZfbIB
+Ti71qmF4L1Kr64vWQyxN0Je8VCOyhdr7YNw2ToFh9KKjWso6ELHE0gPMdqRwozr9
+y92SlZhZq9i1bhclJS146sZucbqa4/HdJIcZmHQ5PNTYMhhoAGVHYOHjTAnk0VUX
+n57A3ERz+Za9zm7tHKvti28Rb3rZz1Bd8PmY40qydRSw/+cCggEAZnCYxlRCbHjX
++CAerGwgPvAw1DYFAywvH6k35SN9vZSfNKCiVk/hJtyLcVxRQYAs4JecgkZGPEDm
+tr2qJRP6YRcocWwuT9U7yVuJ5plJ2WUS6HO5yPjf1JnMMSiCVhreyzH2WOk0wMGX
+8sTZawXLrWc4Hnt2iJHk2jhD0k2UzftRJum4vyHoNY7g4KMO8T/WpmTA3ONzH3+0
+mkhFpP2CVGh5cqLTglmcm6xODteZgZMHiRMDJVgTSXZBC4nSwXHRI6w1/ZdyGVl6p9FcGppCjlkZT3XHIevLz65EaWpJmvp04EKZ8TICZgFjjLh6t5GQ1KCYY
+xXajuxlYck4mWvq3wIgacdUjCHQ3+prmlHJ6tTifDPTs/GAMW5byrkskz8OTbw=
+-----END DSA PRIVATE KEY-----