thedesk/app/node_modules/app-builder-lib/electron-osx-sign/util-identities.js
2019-09-12 23:38:13 +09:00

56 lines
1.6 KiB
JavaScript

/**
* @module util-identities
*/
'use strict'
const util = require('./util')
const debuglog = util.debuglog
const flatList = util.flatList
const execFileAsync = util.execFileAsync
/**
* @constructor
* @param {string} name - Name of the signing identity.
* @param {String} hash - SHA-1 hash of the identity.
*/
var Identity = module.exports.Identity = function (name, hash) {
this.name = name
this.hash = hash
}
/**
* This function returns a promise checking the indentity proposed and updates the identity option to a exact finding from results.
* @function
* @param {Object} opts - Options.
* @param {string} identity - The proposed identity.
* @returns {Promise} Promise.
*/
module.exports.findIdentitiesAsync = function (opts, identity) {
// Only to look for valid identities, excluding those flagged with
// CSSMERR_TP_CERT_EXPIRED or CSSMERR_TP_NOT_TRUSTED. Fixes #9
var args = [
'find-identity',
'-v'
]
if (opts.keychain) {
args.push(opts.keychain)
}
return execFileAsync('security', args)
.then(function (result) {
return result.split('\n').map(function (line) {
if (line.indexOf(identity) >= 0) {
var identityFound = line.substring(line.indexOf('"') + 1, line.lastIndexOf('"'))
var identityHashFound = line.substring(line.indexOf(')') + 2, line.indexOf('"') - 1)
debuglog('Identity:', '\n',
'> Name:', identityFound, '\n',
'> Hash:', identityHashFound)
return new Identity(identityFound, identityHashFound)
}
})
})
.then(flatList)
}