From adbaa567fb9e9d271c406f47c76218d301e1cdc9 Mon Sep 17 00:00:00 2001 From: Hank Donnay Date: Tue, 10 Jan 2023 14:38:15 -0600 Subject: [PATCH] client: use signer Previous PR that reworked the client+signing scheme forgot to actually use the signer. Signed-off-by: Hank Donnay --- httptransport/client/httpclient.go | 7 +++++++ httptransport/client/indexer.go | 15 +++++++++++++++ httptransport/client/matcher.go | 18 +++++++++++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/httptransport/client/httpclient.go b/httptransport/client/httpclient.go index 537d2ca070..b2d79a220a 100644 --- a/httptransport/client/httpclient.go +++ b/httptransport/client/httpclient.go @@ -129,3 +129,10 @@ func WithSigner(v Signer) Option { type Signer interface { Sign(context.Context, *http.Request) error } + +func (s *HTTP) sign(ctx context.Context, req *http.Request) error { + if s.signer == nil { + return nil + } + return s.signer.Sign(ctx, req) +} diff --git a/httptransport/client/indexer.go b/httptransport/client/indexer.go index 31f7128af2..bc14b82067 100644 --- a/httptransport/client/indexer.go +++ b/httptransport/client/indexer.go @@ -32,6 +32,9 @@ func (s *HTTP) AffectedManifests(ctx context.Context, v []claircore.Vulnerabilit if err != nil { return nil, fmt.Errorf("failed to create request: %v", err) } + if err := s.sign(ctx, req); err != nil { + return nil, fmt.Errorf("failed to create request: %v", err) + } req.Header.Set("content-type", `application/json`) resp, err := s.c.Do(req) if err != nil { @@ -75,6 +78,9 @@ func (s *HTTP) Index(ctx context.Context, manifest *claircore.Manifest) (*clairc if err != nil { return nil, fmt.Errorf("failed to create request: %v", err) } + if err := s.sign(ctx, req); err != nil { + return nil, fmt.Errorf("failed to create request: %v", err) + } req.Header.Set("content-type", `application/json`) resp, err := s.c.Do(req) if err != nil { @@ -113,6 +119,9 @@ func (s *HTTP) IndexReport(ctx context.Context, manifest claircore.Digest) (*cla if err != nil { return nil, false, fmt.Errorf("failed to create request: %v", err) } + if err := s.sign(ctx, req); err != nil { + return nil, false, fmt.Errorf("failed to create request: %v", err) + } resp, err := s.c.Do(req) if err != nil { return nil, false, fmt.Errorf("failed to do request: %v", err) @@ -149,6 +158,9 @@ func (s *HTTP) State(ctx context.Context) (string, error) { if err != nil { return "", fmt.Errorf("failed to create request: %v", err) } + if err := s.sign(ctx, req); err != nil { + return "", fmt.Errorf("failed to create request: %v", err) + } resp, err := s.c.Do(req) if err != nil { return "", fmt.Errorf("failed to do request: %v", err) @@ -174,6 +186,9 @@ func (s *HTTP) DeleteManifests(ctx context.Context, d ...claircore.Digest) ([]cl if err != nil { return nil, fmt.Errorf("failed to create request: %v", err) } + if err := s.sign(ctx, req); err != nil { + return nil, fmt.Errorf("failed to create request: %v", err) + } resp, err := s.c.Do(req) if err != nil { return nil, fmt.Errorf("failed to do request: %v", err) diff --git a/httptransport/client/matcher.go b/httptransport/client/matcher.go index f356491881..ba57359385 100644 --- a/httptransport/client/matcher.go +++ b/httptransport/client/matcher.go @@ -29,7 +29,10 @@ func (c *HTTP) Scan(ctx context.Context, ir *claircore.IndexReport) (*claircore. } req, err := httputil.NewRequestWithContext(ctx, http.MethodPost, u.String(), codec.JSONReader(ir)) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to create request: %v", err) + } + if err := c.sign(ctx, req); err != nil { + return nil, fmt.Errorf("failed to create request: %v", err) } req.Header.Set("content-type", `application/json`) resp, err := c.c.Do(req) @@ -90,6 +93,10 @@ func (c *HTTP) DeleteUpdateOperations(ctx context.Context, ref ...uuid.UUID) (in errs[i] = err return } + if err := c.sign(ctx, req); err != nil { + errs[i] = fmt.Errorf("failed to create request: %v", err) + return + } res, err := c.c.Do(req) if err != nil { errs[i] = err @@ -147,6 +154,9 @@ func (c *HTTP) UpdateOperations(ctx context.Context, k driver.UpdateKind, update if err != nil { return nil, err } + if err := c.sign(ctx, req); err != nil { + return nil, fmt.Errorf("failed to create request: %v", err) + } return c.updateOperations(ctx, req, c.uoCache) } @@ -181,6 +191,9 @@ func (c *HTTP) LatestUpdateOperations(ctx context.Context, k driver.UpdateKind) // an ouCache is passed in by the caller to cache any responses providing an etag. // if a subsequent response provides a StatusNotModified status, the map of UpdateOprations is served from cache. func (c *HTTP) updateOperations(ctx context.Context, req *http.Request, cache *uoCache) (map[string][]driver.UpdateOperation, error) { + if err := c.sign(ctx, req); err != nil { + return nil, fmt.Errorf("failed to create request: %v", err) + } res, err := c.c.Do(req) if err != nil { return nil, err @@ -227,6 +240,9 @@ func (c *HTTP) UpdateDiff(ctx context.Context, prev, cur uuid.UUID) (*driver.Upd } v.Set("cur", cur.String()) req.URL.RawQuery = v.Encode() + if err := c.sign(ctx, req); err != nil { + return nil, fmt.Errorf("failed to create request: %v", err) + } res, err := c.c.Do(req) if err != nil {