From 965392bd5e800d50b5ea8c647b1dc00ef1f31495 Mon Sep 17 00:00:00 2001 From: John Tendik Date: Tue, 22 Oct 2019 14:07:15 -0400 Subject: [PATCH] fix(macos): added keychain flag to getProvisioningProfileAsync (#4332) --- .../util-provisioning-profiles.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/app-builder-lib/electron-osx-sign/util-provisioning-profiles.js b/packages/app-builder-lib/electron-osx-sign/util-provisioning-profiles.js index 980be4cd154..1281dac4230 100644 --- a/packages/app-builder-lib/electron-osx-sign/util-provisioning-profiles.js +++ b/packages/app-builder-lib/electron-osx-sign/util-provisioning-profiles.js @@ -55,14 +55,21 @@ Object.defineProperty(ProvisioningProfile.prototype, 'type', { * Returns a promise resolving to a ProvisioningProfile instance based on file. * @function * @param {string} filePath - Path to provisioning profile. + * @param {string} keychain - Keychain to use when unlocking provisioning profile. * @returns {Promise} Promise. */ -var getProvisioningProfileAsync = module.exports.getProvisioningProfileAsync = function (filePath) { - return execFileAsync('security', [ +var getProvisioningProfileAsync = module.exports.getProvisioningProfileAsync = function (filePath, keychain = null) { + var securityArgs = [ 'cms', '-D', // Decode a CMS message '-i', filePath // Use infile as source of data - ]) + ]; + + if (keychain) { + securityArgs.push('-k', keychain); + } + + return execFileAsync('security', securityArgs) .then(async function (result) { // todo read directly const tempFile = path.join(os.tmpdir(), `${require('crypto').createHash('sha1').update(filePath).digest("hex")}.plist`) @@ -150,7 +157,7 @@ module.exports.preEmbedProvisioningProfile = function (opts) { if (opts['provisioning-profile'] instanceof ProvisioningProfile) { return embedProvisioningProfile() } else { - return getProvisioningProfileAsync(opts['provisioning-profile']) + return getProvisioningProfileAsync(opts['provisioning-profile'], opts['keychain']) .then(function (provisioningProfile) { opts['provisioning-profile'] = provisioningProfile })