Skip to content

Sign executable to get more trust and reduce the likelyness of virus scanners complaining#16

Merged
DaanAcohen merged 1 commit intomainfrom
feature/sign-where-possible
Mar 27, 2026
Merged

Sign executable to get more trust and reduce the likelyness of virus scanners complaining#16
DaanAcohen merged 1 commit intomainfrom
feature/sign-where-possible

Conversation

@DaanAcohen
Copy link
Copy Markdown
Member

No description provided.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the Windows packaging workflow to code-sign the generated kemforge.exe using Azure Trusted Signing, with the goal of improving reputation/trust and reducing antivirus false positives.

Changes:

  • Added Azure authentication (azure/login) to Windows packaging jobs that produce the standalone EXE.
  • Added Azure Trusted Signing steps to sign kemforge.exe in both the Chocolatey build and GitHub Release zip paths.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

files-folder: ${{ github.workspace }}
files-folder-filter: exe
file-digest: SHA256
timestamp-rfc3161: http://timestamp.acs.microsoft.com
Copy link

Copilot AI Mar 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The RFC3161 timestamp URL is using plain HTTP. Use an HTTPS timestamp endpoint to avoid downgrade/MITM risks during timestamping.

Suggested change
timestamp-rfc3161: http://timestamp.acs.microsoft.com
timestamp-rfc3161: https://timestamp.acs.microsoft.com

Copilot uses AI. Check for mistakes.
Comment on lines +182 to +185
- name: Azure Login
uses: azure/login@v2
with:
creds: '{"clientId":"${{ secrets.AZURE_CLIENT_ID }}","clientSecret":"${{ secrets.AZURE_CLIENT_SECRET }}","subscriptionId":"${{ secrets.AZURE_SUBSCRIPTION_ID }}","tenantId":"${{ secrets.AZURE_TENANT_ID }}"}'
Copy link

Copilot AI Mar 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These steps authenticate to Azure using a long-lived client secret. For GitHub Actions, prefer workload identity federation (OIDC) with azure/login (and grant only required permissions) to avoid storing a reusable secret and reduce blast radius if GitHub secrets are exposed.

Copilot uses AI. Check for mistakes.
Comment on lines +94 to +99
- name: Azure Login
uses: azure/login@v2
with:
creds: '{"clientId":"${{ secrets.AZURE_CLIENT_ID }}","clientSecret":"${{ secrets.AZURE_CLIENT_SECRET }}","subscriptionId":"${{ secrets.AZURE_SUBSCRIPTION_ID }}","tenantId":"${{ secrets.AZURE_TENANT_ID }}"}'

- name: Sign executable with Azure Trusted Signing
Copy link

Copilot AI Mar 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Azure Login + signing steps run unconditionally in chocobuild. On pull_request runs from forks, repository secrets are not available, so this will fail the job and block CI. Consider guarding these steps (and/or using a fallback unsigned build) behind a condition such as inputs.publish_enabled == 'true' && github.ref_name == 'main' or checking that the required secrets are non-empty.

Suggested change
- name: Azure Login
uses: azure/login@v2
with:
creds: '{"clientId":"${{ secrets.AZURE_CLIENT_ID }}","clientSecret":"${{ secrets.AZURE_CLIENT_SECRET }}","subscriptionId":"${{ secrets.AZURE_SUBSCRIPTION_ID }}","tenantId":"${{ secrets.AZURE_TENANT_ID }}"}'
- name: Sign executable with Azure Trusted Signing
- name: Azure Login
if: inputs.publish_enabled == 'true' && github.ref_name == 'main'
uses: azure/login@v2
with:
creds: '{"clientId":"${{ secrets.AZURE_CLIENT_ID }}","clientSecret":"${{ secrets.AZURE_CLIENT_SECRET }}","subscriptionId":"${{ secrets.AZURE_SUBSCRIPTION_ID }}","tenantId":"${{ secrets.AZURE_TENANT_ID }}"}'
- name: Sign executable with Azure Trusted Signing
if: inputs.publish_enabled == 'true' && github.ref_name == 'main'

Copilot uses AI. Check for mistakes.
files-folder: ${{ github.workspace }}
files-folder-filter: exe
file-digest: SHA256
timestamp-rfc3161: http://timestamp.acs.microsoft.com
Copy link

Copilot AI Mar 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The RFC3161 timestamp URL is using plain HTTP. Use an HTTPS timestamp endpoint to avoid downgrade/MITM risks during timestamping.

Suggested change
timestamp-rfc3161: http://timestamp.acs.microsoft.com
timestamp-rfc3161: https://timestamp.acs.microsoft.com

Copilot uses AI. Check for mistakes.
Comment on lines +94 to +97
- name: Azure Login
uses: azure/login@v2
with:
creds: '{"clientId":"${{ secrets.AZURE_CLIENT_ID }}","clientSecret":"${{ secrets.AZURE_CLIENT_SECRET }}","subscriptionId":"${{ secrets.AZURE_SUBSCRIPTION_ID }}","tenantId":"${{ secrets.AZURE_TENANT_ID }}"}'
Copy link

Copilot AI Mar 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These steps authenticate to Azure using a long-lived client secret. For GitHub Actions, prefer workload identity federation (OIDC) with azure/login (and grant only required permissions) to avoid storing a reusable secret and reduce blast radius if GitHub secrets are exposed.

Copilot uses AI. Check for mistakes.
@DaanAcohen DaanAcohen merged commit 2fb0896 into main Mar 27, 2026
32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants