Go 39 lines
package selfupdate
import "fmt"
func verifyCosign(run func(name string, args ...string) (string, error), sumsPath, sigPath, certPath string) error {
args := []string{
"verify-blob",
"--signature", sigPath,
"--certificate", certPath,
"--certificate-identity-regexp", CosignIdentityRegexp,
"--certificate-oidc-issuer", CosignOIDCIssuer,
sumsPath,
}
out, err := run("cosign", args...)
if err != nil {
return fmt.Errorf("%w (%s)", err, trimOutput(out))
}
return nil
}
func verifyAttestation(run func(name string, args ...string) (string, error), archivePath string) error {
args := []string{
"attestation", "verify", archivePath,
"--repo", ProvenanceRepo,
}
out, err := run("gh", args...)
if err != nil {
return fmt.Errorf("%w (%s)", err, trimOutput(out))
}
return nil
}
func trimOutput(s string) string {
if len(s) > 240 {
return s[:240] + "..."
}
return s
}