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.