[#367] client: Allow to override key in Object.Hash RPC
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru> Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
parent
a1748ae0e7
commit
339e2702f8
1 changed files with 17 additions and 1 deletions
|
@ -2,6 +2,7 @@ package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"crypto/ecdsa"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/TrueCloudLab/frostfs-api-go/v2/acl"
|
"github.com/TrueCloudLab/frostfs-api-go/v2/acl"
|
||||||
|
@ -27,6 +28,16 @@ type PrmObjectHash struct {
|
||||||
csAlgo v2refs.ChecksumType
|
csAlgo v2refs.ChecksumType
|
||||||
|
|
||||||
addr v2refs.Address
|
addr v2refs.Address
|
||||||
|
|
||||||
|
keySet bool
|
||||||
|
key ecdsa.PrivateKey
|
||||||
|
}
|
||||||
|
|
||||||
|
// UseKey specifies private key to sign the requests.
|
||||||
|
// If key is not provided, then Client default key is used.
|
||||||
|
func (x *PrmObjectHash) UseKey(key ecdsa.PrivateKey) {
|
||||||
|
x.keySet = true
|
||||||
|
x.key = key
|
||||||
}
|
}
|
||||||
|
|
||||||
// MarkLocal tells the server to execute the operation locally.
|
// MarkLocal tells the server to execute the operation locally.
|
||||||
|
@ -176,7 +187,12 @@ func (c *Client) ObjectHash(ctx context.Context, prm PrmObjectHash) (*ResObjectH
|
||||||
c.prepareRequest(&req, &prm.meta)
|
c.prepareRequest(&req, &prm.meta)
|
||||||
req.SetBody(&prm.body)
|
req.SetBody(&prm.body)
|
||||||
|
|
||||||
err := signature.SignServiceMessage(&c.prm.key, &req)
|
key := c.prm.key
|
||||||
|
if prm.keySet {
|
||||||
|
key = prm.key
|
||||||
|
}
|
||||||
|
|
||||||
|
err := signature.SignServiceMessage(&key, &req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("sign request: %w", err)
|
return nil, fmt.Errorf("sign request: %w", err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue