mirror of https://github.com/certd/certd
				
				
				
			
		
			
				
	
	
		
			39 lines
		
	
	
		
			1009 B
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1009 B
		
	
	
	
		
			JavaScript
		
	
	
/**
 | 
						|
 * Get ACME certificate issuers
 | 
						|
 */
 | 
						|
 | 
						|
const acme = require('./../');
 | 
						|
const util = require('./../src/util');
 | 
						|
 | 
						|
const pebbleManagementUrl = process.env.ACME_PEBBLE_MANAGEMENT_URL || null;
 | 
						|
 | 
						|
/**
 | 
						|
 * Pebble
 | 
						|
 */
 | 
						|
 | 
						|
async function getPebbleCertIssuers() {
 | 
						|
    /* Get intermediate certificate and resolve alternates */
 | 
						|
    const root = await acme.axios.get(`${pebbleManagementUrl}/intermediates/0`);
 | 
						|
    const links = util.parseLinkHeader(root.headers.link || '');
 | 
						|
    const alternates = await Promise.all(links.map(async (link) => acme.axios.get(link)));
 | 
						|
 | 
						|
    /* Get certificate info */
 | 
						|
    const certs = [root].concat(alternates).map((c) => c.data);
 | 
						|
    const info = certs.map((c) => acme.crypto.readCertificateInfo(c));
 | 
						|
 | 
						|
    /* Return issuers */
 | 
						|
    return info.map((i) => i.issuer.commonName);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Get certificate issuers
 | 
						|
 */
 | 
						|
 | 
						|
module.exports = async () => {
 | 
						|
    if (pebbleManagementUrl) {
 | 
						|
        return getPebbleCertIssuers();
 | 
						|
    }
 | 
						|
 | 
						|
    throw new Error('Unable to resolve list of certificate issuers');
 | 
						|
};
 |