Sprawdź pobrany plik

Dwa pytania: czy to plik, który opublikowało wydanie, i czy wydanie zbudowano z tego repozytorium?

Czy to plik, który opublikowało wydanie

Każde wydanie podaje SHA-256 każdego publikowanego pliku w verify-SHA256SUMS.txt. Pobierz go obok archiwum, a potem na Linuksie albo macOS:

sha256sum -c --ignore-missing verify-SHA256SUMS.txt        # Linux
shasum -a 256 -c --ignore-missing verify-SHA256SUMS.txt    # macOS

Na Windowsie, w PowerShellu, True obok archiwum znaczy, że to plik, który opublikowało wydanie:

$listed = (Get-Content verify-SHA256SUMS.txt) -replace ' .*'
Get-FileHash certdoctor*.zip | ForEach-Object { "$($_.Hash -in $listed)  $(Split-Path -Leaf $_.Path)" }

Czy zbudowano go z tego repozytorium

Plik z sumami z tej samej strony dowodzi tylko, że oba się zgadzają. Skąd pochodzą, dowodzi oświadczenie, które GitHub podpisał przy tworzeniu wydania, a sprawdza je GitHub CLI:

gh attestation verify <the archive> -R donislawdev/certdoctor --predicate-type https://spdx.dev/Document/v2.3

To oświadczenie jest zestawieniem składników - każdy moduł wkompilowany w program, razem z narzędziami Go, z licencją i wersją - i obejmuje każdy plik wydania. Typ predykatu trzeba podać, bo bez niego gh pyta o pochodzenie buildu, a to inne oświadczenie.

Archiwum na Linuksa to dokładnie te bajty, które wytworzył build, więc odpowiada za nie też pochodzenie samego buildu:

gh attestation verify <the archive> -R donislawdev/certdoctor

Podpis

Programy na Windows i macOS są podpisywane po buildzie, więc ich bajty nie są już bajtami buildu, a drugie polecenie celowo nic dla nich nie znajduje. Odpowiada za nie podpis: Windows sprawdza go przy uruchomieniu programu, a na macOS spctl -a -vv certdoctor.app - albo certdoctor-gui.app - pyta Gatekeepera.