{"version":3,"sources":["../node_modules/asn1.js/lib/asn1.js","../node_modules/asn1.js/lib/asn1/base/index.js","../node_modules/asn1.js/lib/asn1/base/buffer.js","../node_modules/asn1.js/lib/asn1/constants/index.js","../node_modules/asn1.js/lib/asn1/decoders/der.js","../node_modules/asn1.js/lib/asn1/encoders/der.js","../node_modules/asn1.js/lib/asn1/api.js","../node_modules/asn1.js/lib/asn1/base/reporter.js","../node_modules/asn1.js/lib/asn1/base/node.js","../node_modules/asn1.js/lib/asn1/constants/der.js","../node_modules/asn1.js/lib/asn1/decoders/index.js","../node_modules/asn1.js/lib/asn1/decoders/pem.js","../node_modules/asn1.js/lib/asn1/encoders/index.js","../node_modules/asn1.js/lib/asn1/encoders/pem.js"],"names":["asn1","exports","bignum","require","define","base","constants","decoders","encoders","Reporter","DecoderBuffer","EncoderBuffer","Node","inherits","Buffer","options","call","this","isBuffer","offset","length","error","value","reporter","Array","isArray","map","item","byteLength","prototype","save","restore","res","isEmpty","readUInt8","fail","skip","bytes","_reporterState","raw","slice","join","out","forEach","write","copy","_reverse","Object","keys","key","der","DERDecoder","entity","enc","name","tree","DERNode","_init","body","parent","derDecodeTag","buf","tag","isError","cls","tagClass","primitive","oct","tagStr","derDecodeLen","len","num","i","j","module","decode","data","_decode","_peekTag","buffer","any","state","decodedTag","_decodeTag","_skipUntilEnd","_decodeList","decoder","result","possibleEnd","push","_decodeStr","unused","str","String","fromCharCode","readUInt16BE","numstr","toString","_isNumstr","printstr","_isPrintstr","test","_decodeObjid","values","relative","identifiers","ident","subident","first","second","concat","tmp","undefined","_decodeTime","year","mon","day","hour","min","sec","Date","UTC","_decodeNull","_decodeBool","_decodeInt","_use","obj","_getDecoder","DEREncoder","two","encode","_encode","_encodeComposite","content","header","encodedTag","tagByName","hasOwnProperty","tagClassByName","encodeTag","_createEncoderBuffer","lenOctets","_encodeStr","writeUInt16BE","charCodeAt","_encodeObjid","id","split","JSON","stringify","splice","size","objid","_encodeTime","time","date","getFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","_encodeNull","_encodeInt","numArray","toArray","sign","unshift","_encodeBool","_getEncoder","_skipDefault","dataBuffer","_baseState","defaultBuffer","_encodeValue","Entity","_createNamed","named","runInThisContext","e","_initNamed","path","errors","ReporterError","msg","rethrow","pathLen","enterKey","exitKey","index","leaveKey","enterObject","prev","leaveObject","now","err","inherited","elem","message","stack","partial","wrapResult","Error","captureStackTrace","assert","tags","methods","children","args","reverseArgs","choice","optional","use","useDecoder","explicit","implicit","contains","_wrap","stateProps","clone","cstate","prop","constructor","method","apply","arguments","filter","child","equal","_useArgs","arg","def","val","newKey","input","prevObj","present","prevKey","_decodeGeneric","_decodeChoice","start","track","_getUse","match","some","node","type","_encodeChoice","_encodePrimitive","pem","PEMDecoder","lines","label","toUpperCase","re","end","base64","replace","PEMEncoder","p"],"mappings":"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","file":"static/js/main~e811fd70.55bebc08.chunk.js","sourcesContent":["var asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","var base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","var inherits = require('inherits');\nvar Reporter = require('../base').Reporter;\nvar Buffer = require('buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n var res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n}\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n var res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n}\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n}\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!(item instanceof EncoderBuffer))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = new Buffer(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","var constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n var res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n var value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","var inherits = require('inherits');\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\nvar bignum = asn1.bignum;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!(data instanceof base.DecoderBuffer))\n data = new base.DecoderBuffer(data, options);\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n var state = buffer.save();\n var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n var decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n var len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n var state = buffer.save();\n var res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n while (true) {\n var tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n var len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n var res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len)\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n var result = [];\n while (!buffer.isEmpty()) {\n var possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n var res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n var unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n var raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n var str = '';\n for (var i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n var numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n var printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n var result;\n var identifiers = [];\n var ident = 0;\n while (!buffer.isEmpty()) {\n var subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n var first = (identifiers[0] / 40) | 0;\n var second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n var tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n var str = buffer.raw().toString();\n if (tag === 'gentime') {\n var year = str.slice(0, 4) | 0;\n var mon = str.slice(4, 6) | 0;\n var day = str.slice(6, 8) | 0;\n var hour = str.slice(8, 10) | 0;\n var min = str.slice(10, 12) | 0;\n var sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n var year = str.slice(0, 2) | 0;\n var mon = str.slice(2, 4) | 0;\n var day = str.slice(4, 6) | 0;\n var hour = str.slice(6, 8) | 0;\n var min = str.slice(8, 10) | 0;\n var sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull(buffer) {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n var res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n var raw = buffer.raw();\n var res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n var tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n var cls = der.tagClass[tag >> 6];\n var primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n var oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n var tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n var len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n var num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (var i = 0; i < num; i++) {\n len <<= 8;\n var j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n var header = new Buffer(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n var lenOctets = 1;\n for (var i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n var header = new Buffer(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n var buf = new Buffer(str.length * 2);\n for (var i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s\\.]+/g);\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n var size = 0;\n for (var i = 0; i < id.length; i++) {\n var ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n var objid = new Buffer(size);\n var offset = objid.length - 1;\n for (var i = id.length - 1; i >= 0; i--) {\n var ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n var numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = new Buffer(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n var size = num.length;\n if (num.length === 0)\n size++;\n\n var out = new Buffer(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n var size = 1;\n for (var i = num; i >= 0x100; i >>= 8)\n size++;\n\n var out = new Array(size);\n for (var i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(new Buffer(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n var state = this._baseState;\n var i;\n if (state['default'] === null)\n return false;\n\n var data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n var res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","var asn1 = require('../asn1');\nvar inherits = require('inherits');\n\nvar api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n};\n\nEntity.prototype._createNamed = function createNamed(base) {\n var named;\n try {\n named = require('vm').runInThisContext(\n '(function ' + this.name + '(entity) {\\n' +\n ' this._initNamed(entity);\\n' +\n '})'\n );\n } catch (e) {\n named = function (entity) {\n this._initNamed(entity);\n };\n }\n inherits(named, base);\n named.prototype._initNamed = function initnamed(entity) {\n base.call(this, entity);\n };\n\n return new named(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(asn1.decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(asn1.encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","var inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n var state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n var state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n var state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n var state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n var state = this._reporterState;\n\n var prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n var state = this._reporterState;\n\n var now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n var err;\n var state = this._reporterState;\n\n var inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n var state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n};\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","var Reporter = require('../base').Reporter;\nvar EncoderBuffer = require('../base').EncoderBuffer;\nvar DecoderBuffer = require('../base').DecoderBuffer;\nvar assert = require('minimalistic-assert');\n\n// Supported tags\nvar tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nvar methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nvar overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent) {\n var state = {};\n this._baseState = state;\n\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nvar stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n var state = this._baseState;\n var cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n var res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n var state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n var clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n var state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n var state = this._baseState;\n\n // Filter children and args\n var children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n var res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n var value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n var state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n var state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n var state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n var state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n var state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n var state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n var state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n var state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n var state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n var state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n var result = state['default'];\n var present = true;\n\n var prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n var tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n var save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n var prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n var explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n var start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n if (state.any)\n var save = input.save();\n var body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any)\n result = result;\n else if (state.choice === null)\n result = this._decodeGeneric(state.tag, input, options);\n else\n result = this._decodeChoice(input, options);\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n var data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n var state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n var state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n var state = this._baseState;\n var result = null;\n var match = false;\n\n Object.keys(state.choice).some(function(key) {\n var save = input.save();\n var node = state.choice[key];\n try {\n var value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n var state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n var result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n var result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default']\n else\n return;\n }\n\n // Encode children first\n var content = null;\n var primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n var prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n var res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n var child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n var state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n var result;\n if (!state.any && state.choice === null) {\n var tag = state.implicit !== null ? state.implicit : state.tag;\n var cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n var state = this._baseState;\n\n var node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n var state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(str);\n};\n","var constants = require('../constants');\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = constants._reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = constants._reverse(exports.tag);\n","var decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n};\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n var lines = data.toString().split(/[\\r\\n]+/g);\n\n var label = options.label.toUpperCase();\n\n var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n var start = -1;\n var end = -1;\n for (var i = 0; i < lines.length; i++) {\n var match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n var base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9\\+\\/=]+/gi, '');\n\n var input = new Buffer(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","var encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","var inherits = require('inherits');\n\nvar DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n};\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n var buf = DEREncoder.prototype.encode.call(this, data);\n\n var p = buf.toString('base64');\n var out = [ '-----BEGIN ' + options.label + '-----' ];\n for (var i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n"],"sourceRoot":""}