{"ast":null,"code":"// Copyright 2016 Joyent, Inc.\nvar x509 = require('./x509');\n\nmodule.exports = {\n read: read,\n verify: x509.verify,\n sign: x509.sign,\n write: write\n};\n\nvar assert = require('assert-plus');\n\nvar asn1 = require('asn1');\n\nvar Buffer = require('safer-buffer').Buffer;\n\nvar algs = require('../algs');\n\nvar utils = require('../utils');\n\nvar Key = require('../key');\n\nvar PrivateKey = require('../private-key');\n\nvar pem = require('./pem');\n\nvar Identity = require('../identity');\n\nvar Signature = require('../signature');\n\nvar Certificate = require('../certificate');\n\nfunction read(buf, options) {\n if (typeof buf !== 'string') {\n assert.buffer(buf, 'buf');\n buf = buf.toString('ascii');\n }\n\n var lines = buf.trim().split(/[\\r\\n]+/g);\n var m;\n var si = -1;\n\n while (!m && si < lines.length) {\n m = lines[++si].match(\n /*JSSTYLED*/\n /[-]+[ ]*BEGIN CERTIFICATE[ ]*[-]+/);\n }\n\n assert.ok(m, 'invalid PEM header');\n var m2;\n var ei = lines.length;\n\n while (!m2 && ei > 0) {\n m2 = lines[--ei].match(\n /*JSSTYLED*/\n /[-]+[ ]*END CERTIFICATE[ ]*[-]+/);\n }\n\n assert.ok(m2, 'invalid PEM footer');\n lines = lines.slice(si, ei + 1);\n var headers = {};\n\n while (true) {\n lines = lines.slice(1);\n m = lines[0].match(\n /*JSSTYLED*/\n /^([A-Za-z0-9-]+): (.+)$/);\n if (!m) break;\n headers[m[1].toLowerCase()] = m[2];\n }\n /* Chop off the first and last lines */\n\n\n lines = lines.slice(0, -1).join('');\n buf = Buffer.from(lines, 'base64');\n return x509.read(buf, options);\n}\n\nfunction write(cert, options) {\n var dbuf = x509.write(cert, options);\n var header = 'CERTIFICATE';\n var tmp = dbuf.toString('base64');\n var len = tmp.length + tmp.length / 64 + 18 + 16 + header.length * 2 + 10;\n var buf = Buffer.alloc(len);\n var o = 0;\n o += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\n for (var i = 0; i < tmp.length;) {\n var limit = i + 64;\n if (limit > tmp.length) limit = tmp.length;\n o += buf.write(tmp.slice(i, limit), o);\n buf[o++] = 10;\n i = limit;\n }\n\n o += buf.write('-----END ' + header + '-----\\n', o);\n return buf.slice(0, o);\n}","map":{"version":3,"sources":["/Users/tylerkoenig/Code/personal/react-scss2/node_modules/sshpk/lib/formats/x509-pem.js"],"names":["x509","require","module","exports","read","verify","sign","write","assert","asn1","Buffer","algs","utils","Key","PrivateKey","pem","Identity","Signature","Certificate","buf","options","buffer","toString","lines","trim","split","m","si","length","match","ok","m2","ei","slice","headers","toLowerCase","join","from","cert","dbuf","header","tmp","len","alloc","o","i","limit"],"mappings":"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","sourcesContent":["// Copyright 2016 Joyent, Inc.\n\nvar x509 = require('./x509');\n\nmodule.exports = {\n\tread: read,\n\tverify: x509.verify,\n\tsign: x509.sign,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\nvar Identity = require('../identity');\nvar Signature = require('../signature');\nvar Certificate = require('../certificate');\n\nfunction read(buf, options) {\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\n\tvar lines = buf.trim().split(/[\\r\\n]+/g);\n\n\tvar m;\n\tvar si = -1;\n\twhile (!m && si < lines.length) {\n\t\tm = lines[++si].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*BEGIN CERTIFICATE[ ]*[-]+/);\n\t}\n\tassert.ok(m, 'invalid PEM header');\n\n\tvar m2;\n\tvar ei = lines.length;\n\twhile (!m2 && ei > 0) {\n\t\tm2 = lines[--ei].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*END CERTIFICATE[ ]*[-]+/);\n\t}\n\tassert.ok(m2, 'invalid PEM footer');\n\n\tlines = lines.slice(si, ei + 1);\n\n\tvar headers = {};\n\twhile (true) {\n\t\tlines = lines.slice(1);\n\t\tm = lines[0].match(/*JSSTYLED*/\n\t\t /^([A-Za-z0-9-]+): (.+)$/);\n\t\tif (!m)\n\t\t\tbreak;\n\t\theaders[m[1].toLowerCase()] = m[2];\n\t}\n\n\t/* Chop off the first and last lines */\n\tlines = lines.slice(0, -1).join('');\n\tbuf = Buffer.from(lines, 'base64');\n\n\treturn (x509.read(buf, options));\n}\n\nfunction write(cert, options) {\n\tvar dbuf = x509.write(cert, options);\n\n\tvar header = 'CERTIFICATE';\n\tvar tmp = dbuf.toString('base64');\n\tvar len = tmp.length + (tmp.length / 64) +\n\t 18 + 16 + header.length*2 + 10;\n\tvar buf = Buffer.alloc(len);\n\tvar o = 0;\n\to += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\tfor (var i = 0; i < tmp.length; ) {\n\t\tvar limit = i + 64;\n\t\tif (limit > tmp.length)\n\t\t\tlimit = tmp.length;\n\t\to += buf.write(tmp.slice(i, limit), o);\n\t\tbuf[o++] = 10;\n\t\ti = limit;\n\t}\n\to += buf.write('-----END ' + header + '-----\\n', o);\n\n\treturn (buf.slice(0, o));\n}\n"]},"metadata":{},"sourceType":"script"}