Skip to content

Commit 45644ab

Browse files
committed
api: drop useless key->issuer transformations
Signed-off-by: Roman Khimov <roman@nspcc.ru>
1 parent 37b5fb8 commit 45644ab

File tree

3 files changed

+23
-26
lines changed

3 files changed

+23
-26
lines changed

api/handler/acl.go

+12-14
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package handler
33
import (
44
"bytes"
55
"context"
6-
"crypto/elliptic"
76
"encoding/json"
87
"encoding/xml"
98
"errors"
@@ -13,7 +12,6 @@ import (
1312
"strconv"
1413
"strings"
1514

16-
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
1715
"github.com/nspcc-dev/neofs-s3-gw/api"
1816
"github.com/nspcc-dev/neofs-s3-gw/api/data"
1917
"github.com/nspcc-dev/neofs-s3-gw/api/layer"
@@ -214,25 +212,25 @@ func (h *handler) GetBucketACLHandler(w http.ResponseWriter, r *http.Request) {
214212
}
215213
}
216214

217-
func (h *handler) bearerTokenIssuerKey(ctx context.Context) (*keys.PublicKey, error) {
215+
func (h *handler) bearerTokenIssuer(ctx context.Context) (user.ID, error) {
218216
box, err := layer.GetBoxData(ctx)
219217
if err != nil {
220-
return nil, err
218+
return user.ID{}, err
221219
}
222220

223-
key, err := keys.NewPublicKeyFromBytes(box.Gate.BearerToken.SigningKeyBytes(), elliptic.P256())
224-
if err != nil {
225-
return nil, fmt.Errorf("public key from bytes: %w", err)
221+
iss := box.Gate.BearerToken.ResolveIssuer()
222+
if iss.IsZero() {
223+
return user.ID{}, errors.New("can't resolve issuer from bearer token")
226224
}
227225

228-
return key, nil
226+
return iss, nil
229227
}
230228

231229
func (h *handler) PutBucketACLHandler(w http.ResponseWriter, r *http.Request) {
232230
reqInfo := api.GetReqInfo(r.Context())
233-
key, err := h.bearerTokenIssuerKey(r.Context())
231+
iss, err := h.bearerTokenIssuer(r.Context())
234232
if err != nil {
235-
h.logAndSendError(w, "couldn't get bearer token issuer key", reqInfo, err)
233+
h.logAndSendError(w, "couldn't get bearer token issuer", reqInfo, err)
236234
return
237235
}
238236

@@ -244,7 +242,7 @@ func (h *handler) PutBucketACLHandler(w http.ResponseWriter, r *http.Request) {
244242

245243
list := &AccessControlPolicy{}
246244
if r.ContentLength == 0 {
247-
list, err = parseACLHeaders(r.Header, user.NewFromScriptHash(key.GetScriptHash()))
245+
list, err = parseACLHeaders(r.Header, iss)
248246
if err != nil {
249247
h.logAndSendError(w, "could not parse bucket acl", reqInfo, err)
250248
return
@@ -347,9 +345,9 @@ func (h *handler) GetObjectACLHandler(w http.ResponseWriter, r *http.Request) {
347345
func (h *handler) PutObjectACLHandler(w http.ResponseWriter, r *http.Request) {
348346
reqInfo := api.GetReqInfo(r.Context())
349347
versionID := reqInfo.URL.Query().Get(api.QueryVersionID)
350-
key, err := h.bearerTokenIssuerKey(r.Context())
348+
iss, err := h.bearerTokenIssuer(r.Context())
351349
if err != nil {
352-
h.logAndSendError(w, "couldn't get gate key", reqInfo, err)
350+
h.logAndSendError(w, "couldn't get bearer token issues", reqInfo, err)
353351
return
354352
}
355353

@@ -379,7 +377,7 @@ func (h *handler) PutObjectACLHandler(w http.ResponseWriter, r *http.Request) {
379377

380378
list := &AccessControlPolicy{}
381379
if r.ContentLength == 0 {
382-
list, err = parseACLHeaders(r.Header, user.NewFromScriptHash(key.GetScriptHash()))
380+
list, err = parseACLHeaders(r.Header, iss)
383381
if err != nil {
384382
h.logAndSendError(w, "could not parse bucket acl", reqInfo, err)
385383
return

api/handler/multipart_upload.go

+5-6
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import (
1212
"github.com/nspcc-dev/neofs-s3-gw/api/layer"
1313
"github.com/nspcc-dev/neofs-s3-gw/api/s3errors"
1414
"github.com/nspcc-dev/neofs-sdk-go/session"
15-
"github.com/nspcc-dev/neofs-sdk-go/user"
1615
"go.uber.org/zap"
1716
)
1817

@@ -114,12 +113,12 @@ func (h *handler) CreateMultipartUploadHandler(w http.ResponseWriter, r *http.Re
114113
}
115114

116115
if containsACLHeaders(r) {
117-
key, err := h.bearerTokenIssuerKey(r.Context())
116+
iss, err := h.bearerTokenIssuer(r.Context())
118117
if err != nil {
119-
h.logAndSendError(w, "couldn't get gate key", reqInfo, err)
118+
h.logAndSendError(w, "couldn't get bearer token issuer", reqInfo, err)
120119
return
121120
}
122-
if _, err = parseACLHeaders(r.Header, user.NewFromScriptHash(key.GetScriptHash())); err != nil {
121+
if _, err = parseACLHeaders(r.Header, iss); err != nil {
123122
h.logAndSendError(w, "could not parse acl", reqInfo, err)
124123
return
125124
}
@@ -422,12 +421,12 @@ func (h *handler) CompleteMultipartUploadHandler(w http.ResponseWriter, r *http.
422421
}
423422

424423
if len(uploadData.ACLHeaders) != 0 {
425-
key, err := h.bearerTokenIssuerKey(r.Context())
424+
iss, err := h.bearerTokenIssuer(r.Context())
426425
if err != nil {
427426
h.logAndSendError(w, "couldn't get gate key", reqInfo, err)
428427
return
429428
}
430-
acl, err := parseACLHeaders(r.Header, user.NewFromScriptHash(key.GetScriptHash()))
429+
acl, err := parseACLHeaders(r.Header, iss)
431430
if err != nil {
432431
h.logAndSendError(w, "could not parse acl", reqInfo, err)
433432
return

api/handler/put.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"github.com/nspcc-dev/neofs-s3-gw/creds/accessbox"
2626
"github.com/nspcc-dev/neofs-sdk-go/eacl"
2727
"github.com/nspcc-dev/neofs-sdk-go/session"
28-
"github.com/nspcc-dev/neofs-sdk-go/user"
2928
"go.uber.org/zap"
3029
)
3130

@@ -591,11 +590,12 @@ func containsACLHeaders(r *http.Request) bool {
591590

592591
func (h *handler) getNewEAclTable(r *http.Request, bktInfo *data.BucketInfo, objInfo *data.ObjectInfo) (*eacl.Table, error) {
593592
var newEaclTable *eacl.Table
594-
key, err := h.bearerTokenIssuerKey(r.Context())
593+
594+
iss, err := h.bearerTokenIssuer(r.Context())
595595
if err != nil {
596596
return nil, fmt.Errorf("get bearer token issuer: %w", err)
597597
}
598-
objectACL, err := parseACLHeaders(r.Header, user.NewFromScriptHash(key.GetScriptHash()))
598+
objectACL, err := parseACLHeaders(r.Header, iss)
599599
if err != nil {
600600
return nil, fmt.Errorf("could not parse object acl: %w", err)
601601
}
@@ -683,13 +683,13 @@ func (h *handler) CreateBucketHandler(w http.ResponseWriter, r *http.Request) {
683683
return
684684
}
685685

686-
key, err := h.bearerTokenIssuerKey(r.Context())
686+
iss, err := h.bearerTokenIssuer(r.Context())
687687
if err != nil {
688-
h.logAndSendError(w, "couldn't get bearer token signature key", reqInfo, err)
688+
h.logAndSendError(w, "couldn't get bearer token issuer", reqInfo, err)
689689
return
690690
}
691691

692-
bktACL, err := parseACLHeaders(r.Header, user.NewFromScriptHash(key.GetScriptHash()))
692+
bktACL, err := parseACLHeaders(r.Header, iss)
693693
if err != nil {
694694
h.logAndSendError(w, "could not parse bucket acl", reqInfo, err)
695695
return

0 commit comments

Comments
 (0)