function verifySignApplicationAsync (opts) {
  // Verify with codesign
  var compareVersion = require('compare-version')
  var osRelease = require('os').release()
  debuglog('Verifying application bundle with codesign...')
  var promise = execFileAsync('codesign', [
    '--verify',
    '--deep',
    '--verbose=2'
  ]
    .concat(compareVersion(osRelease, '15.0.0') >= 0 ? ['--strict'] : [], // Only pass strict flag in El Capitan and later
      [opts.app]))

  // Additionally test Gatekeeper acceptance for darwin platform
  if (opts.platform === 'darwin' && opts['gatekeeper-assess'] !== false) {
    promise = promise
      .then(function () {
        debuglog('Verifying Gatekeeper acceptance for darwin platform...')
        return execFileAsync('spctl', [
          '--assess',
          '--type', 'execute',
          '--verbose',
          '--ignore-cache',
          '--no-cache',
          opts.app
        ])
      })
  }

  return promise
    .thenReturn()
}
This function returns a promise verifying the code sign of application bundle.
@function
@param {Object} opts - Options.
@returns {Promise} Promise resolving output.