51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * Mozilla's root CA store
 | |
|  *
 | |
|  * generated from https://mxr.mozilla.org/nss/source/lib/ckfw/builtins/certdata.txt?raw=1
 | |
|  */
 | |
| 'use strict';
 | |
| 
 | |
| var originalCas = [
 | |
| /*TPL*/
 | |
| ];
 | |
| module.exports = originalCas.slice(0); // backwards compat
 | |
| module.exports.rootCas = module.exports;
 | |
| module.exports.rootCas.inject = function (/*context*/) {
 | |
|   var rootCas = this || module.exports.rootCas;
 | |
|   var opts = /*context ||*/ require('https').globalAgent.options;
 | |
|   if (!opts.ca || !opts.ca.__injected) { opts.ca = (opts.ca||[]).concat(rootCas); }
 | |
|   opts.ca.__injected = true;
 | |
|   return rootCas;
 | |
| };
 | |
| module.exports.rootCas.addFile = function (filepath) {
 | |
|   // BEGIN TODO
 | |
|   // What is this filepath stuff all about?
 | |
|   // (maybe be a leftover MS Windows hack ??)
 | |
|   // Can we get rid of it?
 | |
|   var path = require('path');
 | |
|   var root = (filepath[0] === '/' ? '/' : '');
 | |
|   var filepaths = filepath.split(/\//g);
 | |
|   if (root) { filepaths.unshift(root); }
 | |
|   filepath = path.join.apply(null, filepaths);
 | |
|   // END TODO
 | |
| 
 | |
|   var httpsOpts = require('https').globalAgent.options;
 | |
|   var rootCas = this || module.exports.rootCas;
 | |
|   var buf = require('fs').readFileSync(filepath);
 | |
|   rootCas.push(buf);
 | |
|   // backwards compat
 | |
|   if (rootCas !== httpsOpts.ca) {
 | |
|     httpsOpts.ca = httpsOpts.ca || [];
 | |
|     httpsOpts.ca.push(buf);
 | |
|   }
 | |
|   return rootCas;
 | |
| };
 | |
| module.exports.create = function () {
 | |
|   var rootCas = originalCas.slice(0);
 | |
| 
 | |
|   rootCas.inject = module.exports.inject;
 | |
|   rootCas.addFile = module.exports.addFile;
 | |
| 
 | |
|   return rootCas;
 | |
| };
 |