GetSignaturesWithFormat returns the image's signatures. It may use a remote (= slow) service. If instanceDigest is not nil, it contains a digest of the specific manifest instance to retrieve signatures for (when the primary manifest is a manifest list); this never happens if the primary manifest is
(ctx context.Context, instanceDigest *digest.Digest)
| 102 | // (when the primary manifest is a manifest list); this never happens if the primary manifest is not a manifest list |
| 103 | // (e.g. if the source never returns manifest lists). |
| 104 | func (s *openshiftImageSource) GetSignaturesWithFormat(ctx context.Context, instanceDigest *digest.Digest) ([]signature.Signature, error) { |
| 105 | var imageStreamImageName string |
| 106 | if instanceDigest == nil { |
| 107 | if err := s.ensureImageIsResolved(ctx); err != nil { |
| 108 | return nil, err |
| 109 | } |
| 110 | imageStreamImageName = s.imageStreamImageName |
| 111 | } else { |
| 112 | if err := instanceDigest.Validate(); err != nil { // Make sure instanceDigest.String() does not contain any unexpected characters |
| 113 | return nil, err |
| 114 | } |
| 115 | imageStreamImageName = instanceDigest.String() |
| 116 | } |
| 117 | image, err := s.client.getImage(ctx, imageStreamImageName) |
| 118 | if err != nil { |
| 119 | return nil, err |
| 120 | } |
| 121 | var sigs []signature.Signature |
| 122 | for _, sig := range image.Signatures { |
| 123 | if sig.Type == imageSignatureTypeAtomic { |
| 124 | sigs = append(sigs, signature.SimpleSigningFromBlob(sig.Content)) |
| 125 | } |
| 126 | } |
| 127 | return sigs, nil |
| 128 | } |
| 129 | |
| 130 | // ensureImageIsResolved sets up s.docker and s.imageStreamImageName |
| 131 | func (s *openshiftImageSource) ensureImageIsResolved(ctx context.Context) error { |
nothing calls this directly
no test coverage detected