def certificate_to_use
      certificates = certificates_for_profile_and_platform

      # Filter them
      certificates = certificates.find_all do |c|
        if Sigh.config[:cert_id]
          next unless c.id == Sigh.config[:cert_id].strip
        end

        if Sigh.config[:cert_owner_name]
          next unless c.owner_name.strip == Sigh.config[:cert_owner_name].strip
        end

        true
      end

      # verify certificates
      if Helper.mac?
        unless Sigh.config[:skip_certificate_verification]
          certificates = certificates.find_all do |c|
            file = Tempfile.new('cert')
            file.write(c.download_raw)
            file.close

            FastlaneCore::CertChecker.installed?(file.path)
          end
        end
      end

      if certificates.count > 1 && !Sigh.config[:development]
        UI.important("Found more than one code signing identity. Choosing the first one. Check out `fastlane sigh --help` to see all available options.")
        UI.important("Available Code Signing Identities for current filters:")
        certificates.each do |c|
          str = ["\t- Name:", c.owner_name, "- ID:", c.id + " - Expires", c.expires.strftime("%d/%m/%Y")].join(" ")
          UI.message(str.green)
        end
      end

      if certificates.count == 0
        filters = ""
        filters << "Owner Name: '#{Sigh.config[:cert_owner_name]}' " if Sigh.config[:cert_owner_name]
        filters << "Certificate ID: '#{Sigh.config[:cert_id]}' " if Sigh.config[:cert_id]
        UI.important("No certificates for filter: #{filters}") if filters.length > 0
        message = "Could not find a matching code signing identity for type '#{profile_type.to_s.split(':').last}'. "
        message += "It is recommended to use match to manage code signing for you, more information on https://codesigning.guide. "
        message += "If you don't want to do so, you can also use cert to generate a new one: https://fastlane.tools/cert"
        UI.user_error!(message)
      end

      return certificates if Sigh.config[:development] # development profiles support multiple certificates
      return certificates.first
    end
def certificate_to_use
      certificates = certificates_for_profile_and_platform

      # Filter them
      certificates = certificates.find_all do |c|
        if Sigh.config[:cert_id]
          next unless c.id == Sigh.config[:cert_id].strip
        end

        if Sigh.config[:cert_owner_name]
          next unless c.owner_name.strip == Sigh.config[:cert_owner_name].strip
        end

        true
      end

      # verify certificates
      if Helper.mac?
        unless Sigh.config[:skip_certificate_verification]
          certificates = certificates.find_all do |c|
            file = Tempfile.new('cert')
            file.write(c.download_raw)
            file.close

            FastlaneCore::CertChecker.installed?(file.path)
          end
        end
      end

      if certificates.count > 1 && !Sigh.config[:development]
        UI.important("Found more than one code signing identity. Choosing the first one. Check out `fastlane sigh --help` to see all available options.")
        UI.important("Available Code Signing Identities for current filters:")
        certificates.each do |c|
          str = ["\t- Name:", c.owner_name, "- ID:", c.id + " - Expires", c.expires.strftime("%d/%m/%Y")].join(" ")
          UI.message(str.green)
        end
      end

      if certificates.count == 0
        filters = ""
        filters << "Owner Name: '#{Sigh.config[:cert_owner_name]}' " if Sigh.config[:cert_owner_name]
        filters << "Certificate ID: '#{Sigh.config[:cert_id]}' " if Sigh.config[:cert_id]
        UI.important("No certificates for filter: #{filters}") if filters.length > 0
        message = "Could not find a matching code signing identity for type '#{profile_type.to_s.split(':').last}'. "
        message += "It is recommended to use match to manage code signing for you, more information on https://codesigning.guide. "
        message += "If you don't want to do so, you can also use cert to generate a new one: https://fastlane.tools/cert"
        UI.user_error!(message)
      end

      return certificates if Sigh.config[:development] # development profiles support multiple certificates
      return certificates.first
    end
def certificate_to_use certificates = certificates_for_profile_and_platform # Filter them certificates = certificates . find_all do | c | if Sigh . config [ :cert_id ] next unless c . id == Sigh . config [ :cert_id ] . strip end if Sigh . config [ :cert_owner_name ] next unless c . owner_name . strip == Sigh . config [ :cert_owner_name ] . strip end true end # verify certificates if Helper . mac? unless Sigh . config [ :skip_certificate_verification ] certificates = certificates . find_all do | c | file = Tempfile . new ( 'cert' ) file . write ( c . download_raw ) file . close FastlaneCore :: CertChecker . installed? ( file . path ) end end end if certificates . count > 1 && ! Sigh . config [ :development ] UI . important ( "Found more than one code signing identity. Choosing the first one. Check out `fastlane sigh --help` to see all available options." ) UI . important ( "Available Code Signing Identities for current filters:" ) certificates . each do | c | str = [ "\t- Name:" , c . owner_name , "- ID:" , c . id + " - Expires" , c . expires . strftime ( "%d/%m/%Y" ) ] . join ( " " ) UI . message ( str . green ) end end if certificates . count == 0 filters = "" filters << "Owner Name: '#{Sigh.config[:cert_owner_name]}' " if Sigh . config [ :cert_owner_name ] filters << "Certificate ID: '#{Sigh.config[:cert_id]}' " if Sigh . config [ :cert_id ] UI . important ( "No certificates for filter: #{filters}" ) if filters . length > 0 message = "Could not find a matching code signing identity for type '#{profile_type.to_s.split(':').last}'. " message += "It is recommended to use match to manage code signing for you, more information on https://codesigning.guide. " message += "If you don't want to do so, you can also use cert to generate a new one: https://fastlane.tools/cert" UI . user_error! ( message ) end return certificates if Sigh . config [ :development ] # development profiles support multiple certificates return certificates . first end
Certificate to use based on the current distribution mode
Certificate to use based on the current distribution mode