dotnet / dotnet/arcade

Check GPG public keys into the repo and package them with SignCheck

Open
#16,724 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
729
Forks
397
Avg merge
3d 15m
Merged PRs (30d)
149

Description

Currently, `SignCheck` downloads GPG public keys from remote URLs at runtime during signature verification ([`Utils.DownloadAndConfigurePublicKeys`](https://github.com/dotnet/arcade/blob/main/src/SignCheck/Microsoft.SignCheck/Utils.cs#L195-L220)):

- `https://packages.microsoft.com/keys/microsoft.asc`
- `https://packages.microsoft.com/keys/microsoft-2025.asc`
- `https://packages.microsoft.com/keys/microsoft-rolling.asc`
- `https://raw.githubusercontent.com/microsoft/azurelinux/3.0/SPECS/azurelinux-repos/MICROSOFT-RPM-GPG-KEY`
- `https://dot.net/release-key-2023`

These keys are stable and not expected to change. Checking them into the repo and embedding them as resources in the `SignCheck` package would:

- Remove the runtime network dependency, making SignCheck more reliable in air-gapped or network-restricted environments
- Avoid potential failures if a key URL changes or becomes temporarily unavailable
- Make it explicit which keys are trusted for verification

Raised in https://github.com/dotnet/arcade/pull/16574#discussion_r3101887808.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.