summaryrefslogtreecommitdiffstats
path: root/node_modules/parse-asn1/fixProc.js
diff options
context:
space:
mode:
authorGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
committerGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
commite06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (patch)
tree55713f725f77b44ebfec86e4eec3ce33e71458ca /node_modules/parse-asn1/fixProc.js
downloadwebsite_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.gz
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.bz2
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.zip
api, login, auth
Diffstat (limited to 'node_modules/parse-asn1/fixProc.js')
-rw-r--r--node_modules/parse-asn1/fixProc.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/node_modules/parse-asn1/fixProc.js b/node_modules/parse-asn1/fixProc.js
new file mode 100644
index 0000000..4684971
--- /dev/null
+++ b/node_modules/parse-asn1/fixProc.js
@@ -0,0 +1,31 @@
+// 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]+([0-9A-z\n\r+/=]+)[\n\r]+/m
+var startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m
+var fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m
+var evp = require('evp_bytestokey')
+var ciphers = require('browserify-aes')
+var Buffer = require('safe-buffer').Buffer
+module.exports = function (okey, password) {
+ var key = okey.toString()
+ var match = key.match(findProc)
+ var decrypted
+ if (!match) {
+ var match2 = key.match(fullRegex)
+ decrypted = Buffer.from(match2[2].replace(/[\r\n]/g, ''), 'base64')
+ } else {
+ var suite = 'aes' + match[1]
+ var iv = Buffer.from(match[2], 'hex')
+ var cipherText = Buffer.from(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
+ }
+}