@@ -3,7 +3,6 @@ package handler
3
3
import (
4
4
"bytes"
5
5
"context"
6
- "crypto/elliptic"
7
6
"encoding/json"
8
7
"encoding/xml"
9
8
"errors"
@@ -13,7 +12,6 @@ import (
13
12
"strconv"
14
13
"strings"
15
14
16
- "github.com/nspcc-dev/neo-go/pkg/crypto/keys"
17
15
"github.com/nspcc-dev/neofs-s3-gw/api"
18
16
"github.com/nspcc-dev/neofs-s3-gw/api/data"
19
17
"github.com/nspcc-dev/neofs-s3-gw/api/layer"
@@ -214,25 +212,25 @@ func (h *handler) GetBucketACLHandler(w http.ResponseWriter, r *http.Request) {
214
212
}
215
213
}
216
214
217
- func (h * handler ) bearerTokenIssuerKey (ctx context.Context ) (* keys. PublicKey , error ) {
215
+ func (h * handler ) bearerTokenIssuer (ctx context.Context ) (user. ID , error ) {
218
216
box , err := layer .GetBoxData (ctx )
219
217
if err != nil {
220
- return nil , err
218
+ return user. ID {} , err
221
219
}
222
220
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" )
226
224
}
227
225
228
- return key , nil
226
+ return iss , nil
229
227
}
230
228
231
229
func (h * handler ) PutBucketACLHandler (w http.ResponseWriter , r * http.Request ) {
232
230
reqInfo := api .GetReqInfo (r .Context ())
233
- key , err := h .bearerTokenIssuerKey (r .Context ())
231
+ iss , err := h .bearerTokenIssuer (r .Context ())
234
232
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 )
236
234
return
237
235
}
238
236
@@ -244,7 +242,7 @@ func (h *handler) PutBucketACLHandler(w http.ResponseWriter, r *http.Request) {
244
242
245
243
list := & AccessControlPolicy {}
246
244
if r .ContentLength == 0 {
247
- list , err = parseACLHeaders (r .Header , user . NewFromScriptHash ( key . GetScriptHash ()) )
245
+ list , err = parseACLHeaders (r .Header , iss )
248
246
if err != nil {
249
247
h .logAndSendError (w , "could not parse bucket acl" , reqInfo , err )
250
248
return
@@ -347,9 +345,9 @@ func (h *handler) GetObjectACLHandler(w http.ResponseWriter, r *http.Request) {
347
345
func (h * handler ) PutObjectACLHandler (w http.ResponseWriter , r * http.Request ) {
348
346
reqInfo := api .GetReqInfo (r .Context ())
349
347
versionID := reqInfo .URL .Query ().Get (api .QueryVersionID )
350
- key , err := h .bearerTokenIssuerKey (r .Context ())
348
+ iss , err := h .bearerTokenIssuer (r .Context ())
351
349
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 )
353
351
return
354
352
}
355
353
@@ -379,7 +377,7 @@ func (h *handler) PutObjectACLHandler(w http.ResponseWriter, r *http.Request) {
379
377
380
378
list := & AccessControlPolicy {}
381
379
if r .ContentLength == 0 {
382
- list , err = parseACLHeaders (r .Header , user . NewFromScriptHash ( key . GetScriptHash ()) )
380
+ list , err = parseACLHeaders (r .Header , iss )
383
381
if err != nil {
384
382
h .logAndSendError (w , "could not parse bucket acl" , reqInfo , err )
385
383
return
0 commit comments