From b23f0de1952eb4f0b8d36c1c987698986ea30ab4 Mon Sep 17 00:00:00 2001 From: Byron Chien Date: Fri, 27 Jan 2023 16:54:19 -0800 Subject: [PATCH] Add a method for parsing the descriptor from a payload Signed-off-by: Byron Chien --- notation.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/notation.go b/notation.go index 36f853dd..28b81933 100644 --- a/notation.go +++ b/notation.go @@ -393,6 +393,7 @@ func generateAnnotations(signerInfo *signature.SignerInfo) (map[string]string, e func (outcome *VerificationOutcome) GetUserMetadata() (map[string]string, error) { var payload envelope.Payload + err := json.Unmarshal(outcome.EnvelopeContent.Payload.Content, &payload) if err != nil { return nil, errors.New("Failed to unmarshal the payload content in the signature blob to envelope.Payload") @@ -404,3 +405,18 @@ func (outcome *VerificationOutcome) GetUserMetadata() (map[string]string, error) return payload.TargetArtifact.Annotations, nil } + +func GetDescriptorFromPayload(payload *signature.Payload) (*ocispec.Descriptor, error) { + if payload == nil { + return nil, errors.New("Empty payload") + } + + var parsedPayload envelope.Payload + + err := json.Unmarshal(payload.Content, &parsedPayload) + if err != nil { + return nil, errors.New("Failed to unmarshall the payload content to envelope.Payload") + } + + return &parsedPayload.TargetArtifact, nil +}