diff --git a/README.md b/README.md index ae9a546..834f22d 100644 --- a/README.md +++ b/README.md @@ -78,8 +78,12 @@ verified SLSA provenance produced at "trigger": "workflow_dispatch", "issuer": "https://token.actions.githubusercontent.com" } +{"_type":"https://in-toto.io/Statement/v0.1","predicateType":"https://slsa.dev/provenance/v0.2","subject":[{"name":"binary-linux-amd64","digest":{"sha256":"723ccb85318bc8b1a9dd29340612ce1268cd3418d70f68e775edbdc16d1d9158"}}],"predicate":{...}} successfully verified SLSA provenance ``` + +The verified in-toto statement is written to stdout and can be used to pipe into policy engines. + ## Technical design ### Blog post diff --git a/main.go b/main.go index 3e8d6df..ad89855 100644 --- a/main.go +++ b/main.go @@ -100,7 +100,7 @@ func verify(ctx context.Context, if err != nil { return fmt.Errorf("%w: %s", pkg.ErrorInvalidDssePayload, "decoding payload") } - fmt.Fprintf(os.Stdout, string(pyld)) + fmt.Fprintf(os.Stdout, "%s\n", string(pyld)) return nil } @@ -138,7 +138,7 @@ func main() { os.Exit(2) } - fmt.Fprintf(os.Stderr, "successfully verified SLSA provenance") + fmt.Fprintf(os.Stderr, "successfully verified SLSA provenance\n") } func isFlagPassed(name string) bool { diff --git a/pkg/provenance.go b/pkg/provenance.go index d99c7bf..96f1fa0 100644 --- a/pkg/provenance.go +++ b/pkg/provenance.go @@ -11,6 +11,7 @@ import ( "encoding/json" "errors" "fmt" + "os" "strings" "time" @@ -315,7 +316,6 @@ func FindSigningCertificate(ctx context.Context, uuids []string, dssePayload dss for _, uuid := range uuids { entry, err := verifyTlogEntry(ctx, rClient, uuid) if err != nil { - fmt.Printf(err.Error()) continue } cert, err := extractCert(entry) @@ -340,7 +340,7 @@ func FindSigningCertificate(ctx context.Context, uuids []string, dssePayload dss continue } // success! - fmt.Printf("Verified against tlog entry %d\n", *entry.LogIndex) + fmt.Fprintf(os.Stderr, "Verified against tlog entry %d\n", *entry.LogIndex) return cert, nil }