diff --git a/pkg/tuf/client.go b/pkg/tuf/client.go index c652a5261..3f21ec0ab 100644 --- a/pkg/tuf/client.go +++ b/pkg/tuf/client.go @@ -116,6 +116,7 @@ type TargetFile struct { type customMetadata struct { Usage UsageKind `json:"usage"` Status StatusKind `json:"status"` + URI string `json:"uri"` } type sigstoreCustomMetadata struct { diff --git a/pkg/tuf/usage_type.go b/pkg/tuf/usage_type.go index 4ea7ad04f..6b0ead667 100644 --- a/pkg/tuf/usage_type.go +++ b/pkg/tuf/usage_type.go @@ -26,6 +26,7 @@ const ( Fulcio Rekor CTFE + TSA ) var toUsageString = map[UsageKind]string{ @@ -33,6 +34,7 @@ var toUsageString = map[UsageKind]string{ Fulcio: "Fulcio", Rekor: "Rekor", CTFE: "CTFE", + TSA: "TSA", } func (u UsageKind) String() string { @@ -57,6 +59,8 @@ func (u *UsageKind) UnmarshalText(text []byte) error { *u = Rekor case "ctfe": *u = CTFE + case "tsa": + *u = TSA default: return fmt.Errorf("error while unmarshalling, UsageKind=%v not valid", string(text)) } diff --git a/pkg/tuf/usage_type_test.go b/pkg/tuf/usage_type_test.go index 9fca0cf73..94fbe756b 100644 --- a/pkg/tuf/usage_type_test.go +++ b/pkg/tuf/usage_type_test.go @@ -23,12 +23,12 @@ import ( ) func TestMarshalUsageType(t *testing.T) { - usages := []UsageKind{UnknownUsage, Fulcio, Rekor, CTFE} + usages := []UsageKind{UnknownUsage, Fulcio, Rekor, CTFE, TSA} bytes, err := json.Marshal(usages) if err != nil { t.Fatalf("expected no error marshalling struct, got: %v", err) } - expected := `["Unknown","Fulcio","Rekor","CTFE"]` + expected := `["Unknown","Fulcio","Rekor","CTFE","TSA"]` if string(bytes) != expected { t.Fatalf("error while marshalling, expected: %s, got: %s", expected, bytes) } @@ -49,26 +49,26 @@ func TestMarshalInvalidUsageType(t *testing.T) { func TestUnmarshalUsageType(t *testing.T) { var usages []UsageKind - j := json.RawMessage(`["fulcio", "rekor", "ctfe", "unknown"]`) + j := json.RawMessage(`["fulcio", "rekor", "ctfe", "tsa", "unknown"]`) err := json.Unmarshal(j, &usages) if err != nil { t.Fatalf("expected no error unmarshalling struct, got: %v", err) } - if !reflect.DeepEqual(usages, []UsageKind{Fulcio, Rekor, CTFE, UnknownUsage}) { - t.Fatalf("expected [Fulcio, Rekor, CTFE, UnknownUsage], got: %v", usages) + if !reflect.DeepEqual(usages, []UsageKind{Fulcio, Rekor, CTFE, TSA, UnknownUsage}) { + t.Fatalf("expected [Fulcio, Rekor, CTFE, ,TSA, UnknownUsage], got: %v", usages) } } func TestUnmarshalUsageTypeCapitalization(t *testing.T) { // Any capitalization is allowed. var usages []UsageKind - j := json.RawMessage(`["fUlCiO", "rEkOr", "cTfE", "uNkNoWn"]`) + j := json.RawMessage(`["fUlCiO", "rEkOr", "cTfE", "tSa", "uNkNoWn"]`) err := json.Unmarshal(j, &usages) if err != nil { t.Fatalf("expected no error unmarshalling struct, got: %v", err) } - if !reflect.DeepEqual(usages, []UsageKind{Fulcio, Rekor, CTFE, UnknownUsage}) { - t.Fatalf("expected [Fulcio, Rekor, CTFE, UnknownUsage], got: %v", usages) + if !reflect.DeepEqual(usages, []UsageKind{Fulcio, Rekor, CTFE, TSA, UnknownUsage}) { + t.Fatalf("expected [Fulcio, Rekor, CTFE, TSA, UnknownUsage], got: %v", usages) } }