mirror of
				https://github.com/therootcompany/acme.js
				synced 2025-11-04 07:02:46 +00:00 
			
		
		
		
	remove cruft
This commit is contained in:
		
							parent
							
								
									c89e5b7882
								
							
						
					
					
						commit
						d25fa6756c
					
				
							
								
								
									
										123
									
								
								acme.js
									
									
									
									
									
								
							
							
						
						
									
										123
									
								
								acme.js
									
									
									
									
									
								
							@ -63,7 +63,7 @@ ACME.challengeTests = {
 | 
				
			|||||||
					'See https://git.coolaj86.com/coolaj86/acme-v2.js/issues/4'
 | 
										'See https://git.coolaj86.com/coolaj86/acme-v2.js/issues/4'
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			err.code = 'E_FAIL_DRY_CHALLENGE';
 | 
								err.code = 'E_FAIL_DRY_CHALLENGE';
 | 
				
			||||||
			return Promise.reject(err);
 | 
								throw err;
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	'dns-01': function(me, auth) {
 | 
						'dns-01': function(me, auth) {
 | 
				
			||||||
@ -90,7 +90,7 @@ ACME.challengeTests = {
 | 
				
			|||||||
					'See https://git.coolaj86.com/coolaj86/acme-v2.js/issues/4'
 | 
										'See https://git.coolaj86.com/coolaj86/acme-v2.js/issues/4'
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			err.code = 'E_FAIL_DRY_CHALLENGE';
 | 
								err.code = 'E_FAIL_DRY_CHALLENGE';
 | 
				
			||||||
			return Promise.reject(err);
 | 
								throw err;
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@ -389,7 +389,8 @@ ACME._testChallenges = function(me, options) {
 | 
				
			|||||||
			});
 | 
								});
 | 
				
			||||||
			if (!challenge) {
 | 
								if (!challenge) {
 | 
				
			||||||
				// For example, wildcards require dns-01 and, if we don't have that, we have to bail
 | 
									// For example, wildcards require dns-01 and, if we don't have that, we have to bail
 | 
				
			||||||
				var enabled = options.challengeTypes.join(', ') || 'none';
 | 
									var enabled =
 | 
				
			||||||
 | 
										Object.keys(options.challenges).join(', ') || 'none';
 | 
				
			||||||
				var suitable =
 | 
									var suitable =
 | 
				
			||||||
					challenges
 | 
										challenges
 | 
				
			||||||
						.map(function(r) {
 | 
											.map(function(r) {
 | 
				
			||||||
@ -481,7 +482,7 @@ ACME._testChallenges = function(me, options) {
 | 
				
			|||||||
ACME._chooseChallenge = function(options, results) {
 | 
					ACME._chooseChallenge = function(options, results) {
 | 
				
			||||||
	// For each of the challenge types that we support
 | 
						// For each of the challenge types that we support
 | 
				
			||||||
	var challenge;
 | 
						var challenge;
 | 
				
			||||||
	options.challengeTypes.some(function(chType) {
 | 
						options._challengeTypes.some(function(chType) {
 | 
				
			||||||
		// And for each of the challenge types that are allowed
 | 
							// And for each of the challenge types that are allowed
 | 
				
			||||||
		return results.challenges.some(function(ch) {
 | 
							return results.challenges.some(function(ch) {
 | 
				
			||||||
			// Check to see if there are any matches
 | 
								// Check to see if there are any matches
 | 
				
			||||||
@ -907,63 +908,54 @@ ACME._getCertificate = function(me, options) {
 | 
				
			|||||||
		console.debug('[acme-v2] DEBUG get cert 1');
 | 
							console.debug('[acme-v2] DEBUG get cert 1');
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Lot's of error checking to inform the user of mistakes
 | 
						// Prefer this order for efficiency:
 | 
				
			||||||
	if (!(options.challengeTypes || []).length) {
 | 
						// * http-01 is the fasest
 | 
				
			||||||
		options.challengeTypes = Object.keys(options.challenges || {});
 | 
						// * tls-alpn-01 is for networks that don't allow plain traffic
 | 
				
			||||||
	}
 | 
						// * dns-01 is the slowest (due to DNS propagation), but is required for private networks and wildcards
 | 
				
			||||||
	if (!options.challengeTypes.length) {
 | 
						var challengeTypes = Object.keys(options.challenges);
 | 
				
			||||||
		options.challengeTypes = [options.challengeType].filter(Boolean);
 | 
						options._challengeTypes = ['http-01', 'tls-alpn-01', 'dns-01'].filter(
 | 
				
			||||||
	}
 | 
							function(typ) {
 | 
				
			||||||
	if (options.challengeType) {
 | 
								return -1 !== challengeTypes.indexOf(typ);
 | 
				
			||||||
		options.challengeTypes.sort(function(a, b) {
 | 
					 | 
				
			||||||
			if (a === options.challengeType) {
 | 
					 | 
				
			||||||
				return -1;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			if (b === options.challengeType) {
 | 
					 | 
				
			||||||
				return 1;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			return 0;
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
		if (options.challengeType !== options.challengeTypes[0]) {
 | 
					 | 
				
			||||||
			return Promise.reject(
 | 
					 | 
				
			||||||
				new Error(
 | 
					 | 
				
			||||||
					"options.challengeType is '" +
 | 
					 | 
				
			||||||
						options.challengeType +
 | 
					 | 
				
			||||||
						"'," +
 | 
					 | 
				
			||||||
						" which does not exist in the supplied types '" +
 | 
					 | 
				
			||||||
						options.challengeTypes.join(',') +
 | 
					 | 
				
			||||||
						"'"
 | 
					 | 
				
			||||||
				)
 | 
					 | 
				
			||||||
			);
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// TODO check that all challengeTypes are represented in challenges
 | 
						// TODO check that all challengeTypes are represented in challenges
 | 
				
			||||||
	if (!options.challengeTypes.length) {
 | 
						if (!options._challengeTypes.length) {
 | 
				
			||||||
		return Promise.reject(
 | 
							return Promise.reject(
 | 
				
			||||||
			new Error(
 | 
								new Error('options.challenges must be specified')
 | 
				
			||||||
				'options.challengeTypes (string array) must be specified' +
 | 
					 | 
				
			||||||
					' (and in order of preferential priority).'
 | 
					 | 
				
			||||||
			)
 | 
					 | 
				
			||||||
		);
 | 
							);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (options.csr) {
 | 
					
 | 
				
			||||||
		// TODO validate csr signature
 | 
						if (!options.csr) {
 | 
				
			||||||
		options._csr = me.CSR._info(options.csr);
 | 
							throw new Error(
 | 
				
			||||||
		options.domains = options._csr.altnames;
 | 
								'no `csr` option given (should be in DER or PEM format)'
 | 
				
			||||||
		if (options._csr.subject !== options.domains[0]) {
 | 
							);
 | 
				
			||||||
			return Promise.reject(
 | 
						}
 | 
				
			||||||
				new Error(
 | 
						// TODO validate csr signature?
 | 
				
			||||||
					'certificate subject (commonName) does not match first altname (SAN)'
 | 
						options._csr = CSR._info(options.csr);
 | 
				
			||||||
				)
 | 
						options.domains = options.domains || options._csr.altnames;
 | 
				
			||||||
			);
 | 
						options._csr.altnames = options._csr.altnames || [];
 | 
				
			||||||
		}
 | 
						if (
 | 
				
			||||||
 | 
							options.domains
 | 
				
			||||||
 | 
								.slice(0)
 | 
				
			||||||
 | 
								.sort()
 | 
				
			||||||
 | 
								.join(' ') !==
 | 
				
			||||||
 | 
							options._csr.altnames
 | 
				
			||||||
 | 
								.slice(0)
 | 
				
			||||||
 | 
								.sort()
 | 
				
			||||||
 | 
								.join(' ')
 | 
				
			||||||
 | 
						) {
 | 
				
			||||||
 | 
							throw new Error('certificate altnames do not match requested domains');
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if (options._csr.subject !== options.domains[0]) {
 | 
				
			||||||
 | 
							throw new Error(
 | 
				
			||||||
 | 
								'certificate subject (commonName) does not match first altname (SAN)'
 | 
				
			||||||
 | 
							);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (!(options.domains && options.domains.length)) {
 | 
						if (!(options.domains && options.domains.length)) {
 | 
				
			||||||
		return Promise.reject(
 | 
							throw new Error(
 | 
				
			||||||
			new Error(
 | 
								'options.domains must be a list of string domain names,' +
 | 
				
			||||||
				'options.domains must be a list of string domain names,' +
 | 
									' with the first being the subject of the certificate'
 | 
				
			||||||
					' with the first being the subject of the certificate (or options.subject must specified).'
 | 
					 | 
				
			||||||
			)
 | 
					 | 
				
			||||||
		);
 | 
							);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1296,16 +1288,6 @@ ACME._generateCsrWeb64 = function(me, options, validatedDomains) {
 | 
				
			|||||||
		csr = Enc.base64ToUrlBase64(csr.trim().replace(/\s+/g, ''));
 | 
							csr = Enc.base64ToUrlBase64(csr.trim().replace(/\s+/g, ''));
 | 
				
			||||||
		return Promise.resolve(csr);
 | 
							return Promise.resolve(csr);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	return ACME._importKeypair(me, options.serverKeypair).then(function(pair) {
 | 
					 | 
				
			||||||
		return me.CSR.csr({
 | 
					 | 
				
			||||||
			jwk: pair.private,
 | 
					 | 
				
			||||||
			domains: validatedDomains,
 | 
					 | 
				
			||||||
			encoding: 'der'
 | 
					 | 
				
			||||||
		}).then(function(der) {
 | 
					 | 
				
			||||||
			return Enc.bufToUrlBase64(der);
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
	});
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ACME.create = function create(me) {
 | 
					ACME.create = function create(me) {
 | 
				
			||||||
@ -1315,7 +1297,6 @@ ACME.create = function create(me) {
 | 
				
			|||||||
	// me.debug = true;
 | 
						// me.debug = true;
 | 
				
			||||||
	me.challengePrefixes = ACME.challengePrefixes;
 | 
						me.challengePrefixes = ACME.challengePrefixes;
 | 
				
			||||||
	me.Keypairs = me.Keypairs || Keypairs;
 | 
						me.Keypairs = me.Keypairs || Keypairs;
 | 
				
			||||||
	me.CSR = me.CSR || CSR;
 | 
					 | 
				
			||||||
	me._nonces = [];
 | 
						me._nonces = [];
 | 
				
			||||||
	me._canUse = {};
 | 
						me._canUse = {};
 | 
				
			||||||
	if (!me._baseUrl) {
 | 
						if (!me._baseUrl) {
 | 
				
			||||||
@ -1372,12 +1353,20 @@ ACME.create = function create(me) {
 | 
				
			|||||||
	};
 | 
						};
 | 
				
			||||||
	me.accounts = {
 | 
						me.accounts = {
 | 
				
			||||||
		create: function(options) {
 | 
							create: function(options) {
 | 
				
			||||||
			return ACME._registerAccount(me, options);
 | 
								try {
 | 
				
			||||||
 | 
									return ACME._registerAccount(me, options);
 | 
				
			||||||
 | 
								} catch (e) {
 | 
				
			||||||
 | 
									return Promise.reject(e);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
	me.certificates = {
 | 
						me.certificates = {
 | 
				
			||||||
		create: function(options) {
 | 
							create: function(options) {
 | 
				
			||||||
			return ACME._getCertificate(me, options);
 | 
								try {
 | 
				
			||||||
 | 
									return ACME._getCertificate(me, options);
 | 
				
			||||||
 | 
								} catch (e) {
 | 
				
			||||||
 | 
									return Promise.reject(e);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
	return me;
 | 
						return me;
 | 
				
			||||||
 | 
				
			|||||||
@ -13,6 +13,12 @@ var acme = ACME.create({
 | 
				
			|||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO exec npm install --save-dev CHALLENGE_MODULE
 | 
					// TODO exec npm install --save-dev CHALLENGE_MODULE
 | 
				
			||||||
 | 
					if (!process.env.CHALLENGE_OPTIONS) {
 | 
				
			||||||
 | 
						console.error(
 | 
				
			||||||
 | 
							'Please create a .env in the format of examples/example.env to run the tests'
 | 
				
			||||||
 | 
						);
 | 
				
			||||||
 | 
						process.exit(1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var config = {
 | 
					var config = {
 | 
				
			||||||
	env: process.env.ENV,
 | 
						env: process.env.ENV,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user