forked from TrueCloudLab/frostfs-sdk-go
[#252] session: Add Object.Issuer
method
Add method to get `Object` session's issuer similar to `Container`. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
1f7fe6864d
commit
bef4618cd6
2 changed files with 33 additions and 0 deletions
|
@ -377,3 +377,20 @@ func (x Object) AssertAuthKey(key neofscrypto.PublicKey) bool {
|
||||||
|
|
||||||
return bytes.Equal(bKey, x.body.GetSessionKey())
|
return bytes.Equal(bKey, x.body.GetSessionKey())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Issuer returns user ID of the session issuer.
|
||||||
|
//
|
||||||
|
// Makes sense only for signed Object instances. For unsigned instances,
|
||||||
|
// Issuer returns zero user.ID.
|
||||||
|
//
|
||||||
|
// See also Sign.
|
||||||
|
func (x Object) Issuer() user.ID {
|
||||||
|
var issuer user.ID
|
||||||
|
|
||||||
|
issuerV2 := x.body.GetOwnerID()
|
||||||
|
if issuerV2 != nil {
|
||||||
|
_ = issuer.ReadFromV2(*issuerV2)
|
||||||
|
}
|
||||||
|
|
||||||
|
return issuer
|
||||||
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ import (
|
||||||
addresstest "github.com/nspcc-dev/neofs-sdk-go/object/address/test"
|
addresstest "github.com/nspcc-dev/neofs-sdk-go/object/address/test"
|
||||||
"github.com/nspcc-dev/neofs-sdk-go/session"
|
"github.com/nspcc-dev/neofs-sdk-go/session"
|
||||||
sessiontest "github.com/nspcc-dev/neofs-sdk-go/session/test"
|
sessiontest "github.com/nspcc-dev/neofs-sdk-go/session/test"
|
||||||
|
"github.com/nspcc-dev/neofs-sdk-go/user"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -294,3 +295,18 @@ func TestObjectSignature(t *testing.T) {
|
||||||
require.True(t, x.VerifySignature())
|
require.True(t, x.VerifySignature())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestObject_Issuer(t *testing.T) {
|
||||||
|
var token session.Object
|
||||||
|
signer := randSigner()
|
||||||
|
|
||||||
|
require.Zero(t, token.Issuer())
|
||||||
|
|
||||||
|
require.NoError(t, token.Sign(signer))
|
||||||
|
|
||||||
|
var issuer user.ID
|
||||||
|
|
||||||
|
user.IDFromKey(&issuer, signer.PublicKey)
|
||||||
|
|
||||||
|
require.True(t, token.Issuer().Equals(issuer))
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue