]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / node_modules / request / node_modules / http-signature / node_modules / sshpk / lib / formats / x509-pem.js
diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem.js
new file mode 100644 (file)
index 0000000..c59c7d5
--- /dev/null
@@ -0,0 +1,77 @@
+// Copyright 2016 Joyent, Inc.
+
+var x509 = require('./x509');
+
+module.exports = {
+       read: read,
+       verify: x509.verify,
+       sign: x509.sign,
+       write: write
+};
+
+var assert = require('assert-plus');
+var asn1 = require('asn1');
+var algs = require('../algs');
+var utils = require('../utils');
+var Key = require('../key');
+var PrivateKey = require('../private-key');
+var pem = require('./pem');
+var Identity = require('../identity');
+var Signature = require('../signature');
+var Certificate = require('../certificate');
+
+function read(buf, options) {
+       if (typeof (buf) !== 'string') {
+               assert.buffer(buf, 'buf');
+               buf = buf.toString('ascii');
+       }
+
+       var lines = buf.trim().split(/[\r\n]+/g);
+
+       var m = lines[0].match(/*JSSTYLED*/
+           /[-]+[ ]*BEGIN CERTIFICATE[ ]*[-]+/);
+       assert.ok(m, 'invalid PEM header');
+
+       var m2 = lines[lines.length - 1].match(/*JSSTYLED*/
+           /[-]+[ ]*END CERTIFICATE[ ]*[-]+/);
+       assert.ok(m2, 'invalid PEM footer');
+
+       var headers = {};
+       while (true) {
+               lines = lines.slice(1);
+               m = lines[0].match(/*JSSTYLED*/
+                   /^([A-Za-z0-9-]+): (.+)$/);
+               if (!m)
+                       break;
+               headers[m[1].toLowerCase()] = m[2];
+       }
+
+       /* Chop off the first and last lines */
+       lines = lines.slice(0, -1).join('');
+       buf = new Buffer(lines, 'base64');
+
+       return (x509.read(buf, options));
+}
+
+function write(cert, options) {
+       var dbuf = x509.write(cert, options);
+
+       var header = 'CERTIFICATE';
+       var tmp = dbuf.toString('base64');
+       var len = tmp.length + (tmp.length / 64) +
+           18 + 16 + header.length*2 + 10;
+       var buf = new Buffer(len);
+       var o = 0;
+       o += buf.write('-----BEGIN ' + header + '-----\n', o);
+       for (var i = 0; i < tmp.length; ) {
+               var limit = i + 64;
+               if (limit > tmp.length)
+                       limit = tmp.length;
+               o += buf.write(tmp.slice(i, limit), o);
+               buf[o++] = 10;
+               i = limit;
+       }
+       o += buf.write('-----END ' + header + '-----\n', o);
+
+       return (buf.slice(0, o));
+}