From 7ac5abe048704f1bcf50afc0ed95c7abe0f3497c Mon Sep 17 00:00:00 2001 From: Dan Lorenc <dlorenc@google.com> Date: Wed, 13 Jan 2021 13:16:42 -0600 Subject: [PATCH] Add a flag for signature format. This supports pgp and minisign right now. We can add logic to try to detect these later. --- cmd/cli/app/pflags.go | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/cmd/cli/app/pflags.go b/cmd/cli/app/pflags.go index a22b530..304f68d 100644 --- a/cmd/cli/app/pflags.go +++ b/cmd/cli/app/pflags.go @@ -38,6 +38,7 @@ import ( func addArtifactPFlags(cmd *cobra.Command) error { cmd.Flags().Var(&fileOrURLFlag{}, "signature", "path or URL to detached signature file") + cmd.Flags().Var(&sigFormatFlag{value: "pgp"}, "signature-format", "format of the signature") cmd.Flags().Var(&fileOrURLFlag{}, "public-key", "path or URL to public key file") @@ -160,7 +161,13 @@ func CreateRekordFromPFlags() (models.ProposedEntry, error) { } re.RekordObj.Signature = &models.RekordV001SchemaSignature{} - re.RekordObj.Signature.Format = models.RekordV001SchemaSignatureFormatPgp + sigFormat := viper.GetString("signature-format") + switch sigFormat { + case "pgp": + re.RekordObj.Signature.Format = models.RekordV001SchemaSignatureFormatPgp + case "minisign": + re.RekordObj.Signature.Format = models.RekordV001SchemaSignatureFormatMinisign + } signature := viper.GetString("signature") sigURL, err := url.Parse(signature) if err == nil && sigURL.IsAbs() { @@ -231,6 +238,30 @@ func (f *fileOrURLFlag) Type() string { return "fileOrURLFlag" } +type sigFormatFlag struct { + value string +} + +func (f *sigFormatFlag) Type() string { + return "sigFormat" +} + +func (f *sigFormatFlag) String() string { + return f.value +} + +func (f *sigFormatFlag) Set(s string) error { + set := map[string]struct{}{ + "pgp": {}, + "minisign": {}, + } + if _, ok := set[s]; ok { + f.value = s + return nil + } + return fmt.Errorf("value specified is invalid: [%s] supported values are: [pgp, minisign]", s) +} + type shaFlag struct { hash string } -- GitLab