forked from TrueCloudLab/frostfs-api-go
Move bearer token to acl package
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
parent
5f2770d522
commit
933bcf300f
5 changed files with 537 additions and 0 deletions
|
@ -348,3 +348,111 @@ func TableFromGRPCMessage(m *acl.EACLTable) *Table {
|
||||||
|
|
||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TokenLifetimeToGRPCMessage(tl *TokenLifetime) *acl.BearerToken_Body_TokenLifetime {
|
||||||
|
if tl == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
m := new(acl.BearerToken_Body_TokenLifetime)
|
||||||
|
|
||||||
|
m.SetExp(tl.GetExp())
|
||||||
|
m.SetNbf(tl.GetNbf())
|
||||||
|
m.SetIat(tl.GetIat())
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func TokenLifetimeFromGRPCMessage(m *acl.BearerToken_Body_TokenLifetime) *TokenLifetime {
|
||||||
|
if m == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
tl := new(TokenLifetime)
|
||||||
|
|
||||||
|
tl.SetExp(m.GetExp())
|
||||||
|
tl.SetNbf(m.GetNbf())
|
||||||
|
tl.SetIat(m.GetIat())
|
||||||
|
|
||||||
|
return tl
|
||||||
|
}
|
||||||
|
|
||||||
|
func BearerTokenBodyToGRPCMessage(v *BearerTokenBody) *acl.BearerToken_Body {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
m := new(acl.BearerToken_Body)
|
||||||
|
|
||||||
|
m.SetEaclTable(
|
||||||
|
TableToGRPCMessage(v.GetEACL()),
|
||||||
|
)
|
||||||
|
|
||||||
|
m.SetOwnerId(
|
||||||
|
refs.OwnerIDToGRPCMessage(v.GetOwnerID()),
|
||||||
|
)
|
||||||
|
|
||||||
|
m.SetLifetime(
|
||||||
|
TokenLifetimeToGRPCMessage(v.GetLifetime()),
|
||||||
|
)
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func BearerTokenBodyFromGRPCMessage(m *acl.BearerToken_Body) *BearerTokenBody {
|
||||||
|
if m == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
bt := new(BearerTokenBody)
|
||||||
|
|
||||||
|
bt.SetEACL(
|
||||||
|
TableFromGRPCMessage(m.GetEaclTable()),
|
||||||
|
)
|
||||||
|
|
||||||
|
bt.SetOwnerID(
|
||||||
|
refs.OwnerIDFromGRPCMessage(m.GetOwnerId()),
|
||||||
|
)
|
||||||
|
|
||||||
|
bt.SetLifetime(
|
||||||
|
TokenLifetimeFromGRPCMessage(m.GetLifetime()),
|
||||||
|
)
|
||||||
|
|
||||||
|
return bt
|
||||||
|
}
|
||||||
|
|
||||||
|
func BearerTokenToGRPCMessage(t *BearerToken) *acl.BearerToken {
|
||||||
|
if t == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
m := new(acl.BearerToken)
|
||||||
|
|
||||||
|
m.SetBody(
|
||||||
|
BearerTokenBodyToGRPCMessage(t.GetBody()),
|
||||||
|
)
|
||||||
|
|
||||||
|
m.SetSignature(
|
||||||
|
refs.SignatureToGRPCMessage(t.GetSignature()),
|
||||||
|
)
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func BearerTokenFromGRPCMessage(m *acl.BearerToken) *BearerToken {
|
||||||
|
if m == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
bt := new(BearerToken)
|
||||||
|
|
||||||
|
bt.SetBody(
|
||||||
|
BearerTokenBodyFromGRPCMessage(m.GetBody()),
|
||||||
|
)
|
||||||
|
|
||||||
|
bt.SetSignature(
|
||||||
|
refs.SignatureFromGRPCMessage(m.GetSignature()),
|
||||||
|
)
|
||||||
|
|
||||||
|
return bt
|
||||||
|
}
|
||||||
|
|
|
@ -87,3 +87,59 @@ func (m *EACLRecord_TargetInfo) SetKeyList(v [][]byte) {
|
||||||
m.KeyList = v
|
m.KeyList = v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetEaclTable sets eACL table of the bearer token.
|
||||||
|
func (m *BearerToken_Body) SetEaclTable(v *EACLTable) {
|
||||||
|
if m != nil {
|
||||||
|
m.EaclTable = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetOwnerId sets identifier of the bearer token owner.
|
||||||
|
func (m *BearerToken_Body) SetOwnerId(v *refs.OwnerID) {
|
||||||
|
if m != nil {
|
||||||
|
m.OwnerId = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLifetime sets lifetime of the bearer token.
|
||||||
|
func (m *BearerToken_Body) SetLifetime(v *BearerToken_Body_TokenLifetime) {
|
||||||
|
if m != nil {
|
||||||
|
m.Lifetime = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets bearer token body.
|
||||||
|
func (m *BearerToken) SetBody(v *BearerToken_Body) {
|
||||||
|
if m != nil {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSignature sets bearer token signature.
|
||||||
|
func (m *BearerToken) SetSignature(v *refs.Signature) {
|
||||||
|
if m != nil {
|
||||||
|
m.Signature = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetExp sets epoch number of the token expiration.
|
||||||
|
func (m *BearerToken_Body_TokenLifetime) SetExp(v uint64) {
|
||||||
|
if m != nil {
|
||||||
|
m.Exp = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetNbf sets starting epoch number of the token.
|
||||||
|
func (m *BearerToken_Body_TokenLifetime) SetNbf(v uint64) {
|
||||||
|
if m != nil {
|
||||||
|
m.Nbf = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetIat sets the number of the epoch in which the token was issued.
|
||||||
|
func (m *BearerToken_Body_TokenLifetime) SetIat(v uint64) {
|
||||||
|
if m != nil {
|
||||||
|
m.Iat = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -20,6 +20,17 @@ const (
|
||||||
|
|
||||||
tableContainerIDField = 1
|
tableContainerIDField = 1
|
||||||
tableRecordsField = 2
|
tableRecordsField = 2
|
||||||
|
|
||||||
|
lifetimeExpirationField = 1
|
||||||
|
lifetimeNotValidBeforeField = 2
|
||||||
|
lifetimeIssuedAtField = 3
|
||||||
|
|
||||||
|
bearerTokenBodyACLField = 1
|
||||||
|
bearerTokenBodyOwnerField = 2
|
||||||
|
bearerTokenBodyLifetimeField = 3
|
||||||
|
|
||||||
|
bearerTokenBodyField = 1
|
||||||
|
bearerTokenSignatureField = 2
|
||||||
)
|
)
|
||||||
|
|
||||||
// StableMarshal marshals unified acl table structure in a protobuf
|
// StableMarshal marshals unified acl table structure in a protobuf
|
||||||
|
@ -244,3 +255,139 @@ func (t *TargetInfo) StableSize() (size int) {
|
||||||
|
|
||||||
return size
|
return size
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (l *TokenLifetime) StableMarshal(buf []byte) ([]byte, error) {
|
||||||
|
if l == nil {
|
||||||
|
return []byte{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if buf == nil {
|
||||||
|
buf = make([]byte, l.StableSize())
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
offset, n int
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
|
||||||
|
n, err = proto.UInt64Marshal(lifetimeExpirationField, buf[offset:], l.exp)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
offset += n
|
||||||
|
|
||||||
|
n, err = proto.UInt64Marshal(lifetimeNotValidBeforeField, buf[offset:], l.nbf)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
offset += n
|
||||||
|
|
||||||
|
_, err = proto.UInt64Marshal(lifetimeIssuedAtField, buf[offset:], l.iat)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *TokenLifetime) StableSize() (size int) {
|
||||||
|
if l == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
size += proto.UInt64Size(lifetimeExpirationField, l.exp)
|
||||||
|
size += proto.UInt64Size(lifetimeNotValidBeforeField, l.nbf)
|
||||||
|
size += proto.UInt64Size(lifetimeIssuedAtField, l.iat)
|
||||||
|
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerTokenBody) StableMarshal(buf []byte) ([]byte, error) {
|
||||||
|
if bt == nil {
|
||||||
|
return []byte{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if buf == nil {
|
||||||
|
buf = make([]byte, bt.StableSize())
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
offset, n int
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
|
||||||
|
n, err = proto.NestedStructureMarshal(bearerTokenBodyACLField, buf[offset:], bt.eacl)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
offset += n
|
||||||
|
|
||||||
|
n, err = proto.NestedStructureMarshal(bearerTokenBodyOwnerField, buf[offset:], bt.ownerID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
offset += n
|
||||||
|
|
||||||
|
_, err = proto.NestedStructureMarshal(bearerTokenBodyLifetimeField, buf[offset:], bt.lifetime)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerTokenBody) StableSize() (size int) {
|
||||||
|
if bt == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
size += proto.NestedStructureSize(bearerTokenBodyACLField, bt.eacl)
|
||||||
|
size += proto.NestedStructureSize(bearerTokenBodyOwnerField, bt.ownerID)
|
||||||
|
size += proto.NestedStructureSize(bearerTokenBodyLifetimeField, bt.lifetime)
|
||||||
|
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerToken) StableMarshal(buf []byte) ([]byte, error) {
|
||||||
|
if bt == nil {
|
||||||
|
return []byte{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if buf == nil {
|
||||||
|
buf = make([]byte, bt.StableSize())
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
offset, n int
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
|
||||||
|
n, err = proto.NestedStructureMarshal(bearerTokenBodyField, buf[offset:], bt.body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
offset += n
|
||||||
|
|
||||||
|
_, err = proto.NestedStructureMarshal(bearerTokenSignatureField, buf[offset:], bt.sig)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerToken) StableSize() (size int) {
|
||||||
|
if bt == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
size += proto.NestedStructureSize(bearerTokenBodyField, bt.body)
|
||||||
|
size += proto.NestedStructureSize(bearerTokenSignatureField, bt.sig)
|
||||||
|
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
|
@ -61,6 +61,54 @@ func generateRecord(another bool) *acl.Record {
|
||||||
return record
|
return record
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func generateEACL() *acl.Table {
|
||||||
|
cid := new(refs.ContainerID)
|
||||||
|
cid.SetValue([]byte("Container ID"))
|
||||||
|
|
||||||
|
table := new(acl.Table)
|
||||||
|
table.SetContainerID(cid)
|
||||||
|
table.SetRecords([]*acl.Record{generateRecord(true)})
|
||||||
|
|
||||||
|
return table
|
||||||
|
}
|
||||||
|
|
||||||
|
func generateSignature(k, v string) *refs.Signature {
|
||||||
|
sig := new(refs.Signature)
|
||||||
|
sig.SetKey([]byte(k))
|
||||||
|
sig.SetSign([]byte(v))
|
||||||
|
|
||||||
|
return sig
|
||||||
|
}
|
||||||
|
|
||||||
|
func generateLifetime(exp, nbf, iat uint64) *acl.TokenLifetime {
|
||||||
|
lifetime := new(acl.TokenLifetime)
|
||||||
|
lifetime.SetExp(exp)
|
||||||
|
lifetime.SetNbf(nbf)
|
||||||
|
lifetime.SetIat(iat)
|
||||||
|
|
||||||
|
return lifetime
|
||||||
|
}
|
||||||
|
|
||||||
|
func generateBearerTokenBody(id string) *acl.BearerTokenBody {
|
||||||
|
owner := new(refs.OwnerID)
|
||||||
|
owner.SetValue([]byte(id))
|
||||||
|
|
||||||
|
tokenBody := new(acl.BearerTokenBody)
|
||||||
|
tokenBody.SetOwnerID(owner)
|
||||||
|
tokenBody.SetLifetime(generateLifetime(1, 2, 3))
|
||||||
|
tokenBody.SetEACL(generateEACL())
|
||||||
|
|
||||||
|
return tokenBody
|
||||||
|
}
|
||||||
|
|
||||||
|
func generateBearerToken(id string) *acl.BearerToken {
|
||||||
|
bearerToken := new(acl.BearerToken)
|
||||||
|
bearerToken.SetBody(generateBearerTokenBody(id))
|
||||||
|
bearerToken.SetSignature(generateSignature("id", id))
|
||||||
|
|
||||||
|
return bearerToken
|
||||||
|
}
|
||||||
|
|
||||||
func TestHeaderFilter_StableMarshal(t *testing.T) {
|
func TestHeaderFilter_StableMarshal(t *testing.T) {
|
||||||
filterFrom := generateFilter(acl.HeaderTypeObject, "CID", "Container ID Value")
|
filterFrom := generateFilter(acl.HeaderTypeObject, "CID", "Container ID Value")
|
||||||
transport := new(grpc.EACLRecord_FilterInfo)
|
transport := new(grpc.EACLRecord_FilterInfo)
|
||||||
|
@ -144,3 +192,51 @@ func TestTable_StableMarshal(t *testing.T) {
|
||||||
require.Equal(t, tableFrom, tableTo)
|
require.Equal(t, tableFrom, tableTo)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestTokenLifetime_StableMarshal(t *testing.T) {
|
||||||
|
lifetimeFrom := generateLifetime(10, 20, 30)
|
||||||
|
transport := new(grpc.BearerToken_Body_TokenLifetime)
|
||||||
|
|
||||||
|
t.Run("non empty", func(t *testing.T) {
|
||||||
|
wire, err := lifetimeFrom.StableMarshal(nil)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = transport.Unmarshal(wire)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
lifetimeTo := acl.TokenLifetimeFromGRPCMessage(transport)
|
||||||
|
require.Equal(t, lifetimeFrom, lifetimeTo)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBearerTokenBody_StableMarshal(t *testing.T) {
|
||||||
|
bearerTokenBodyFrom := generateBearerTokenBody("Bearer Token Body")
|
||||||
|
transport := new(grpc.BearerToken_Body)
|
||||||
|
|
||||||
|
t.Run("non empty", func(t *testing.T) {
|
||||||
|
wire, err := bearerTokenBodyFrom.StableMarshal(nil)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = transport.Unmarshal(wire)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
bearerTokenBodyTo := acl.BearerTokenBodyFromGRPCMessage(transport)
|
||||||
|
require.Equal(t, bearerTokenBodyFrom, bearerTokenBodyTo)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBearerToken_StableMarshal(t *testing.T) {
|
||||||
|
bearerTokenFrom := generateBearerToken("Bearer Token")
|
||||||
|
transport := new(grpc.BearerToken)
|
||||||
|
|
||||||
|
t.Run("non empty", func(t *testing.T) {
|
||||||
|
wire, err := bearerTokenFrom.StableMarshal(nil)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = transport.Unmarshal(wire)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
bearerTokenTo := acl.BearerTokenFromGRPCMessage(transport)
|
||||||
|
require.Equal(t, bearerTokenFrom, bearerTokenTo)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
130
v2/acl/types.go
130
v2/acl/types.go
|
@ -40,6 +40,24 @@ type Table struct {
|
||||||
records []*Record
|
records []*Record
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type TokenLifetime struct {
|
||||||
|
exp, nbf, iat uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
type BearerTokenBody struct {
|
||||||
|
eacl *Table
|
||||||
|
|
||||||
|
ownerID *refs.OwnerID
|
||||||
|
|
||||||
|
lifetime *TokenLifetime
|
||||||
|
}
|
||||||
|
|
||||||
|
type BearerToken struct {
|
||||||
|
body *BearerTokenBody
|
||||||
|
|
||||||
|
sig *refs.Signature
|
||||||
|
}
|
||||||
|
|
||||||
// TargetInfo is a unified enum of MatchType enum from proto definition.
|
// TargetInfo is a unified enum of MatchType enum from proto definition.
|
||||||
type MatchType uint32
|
type MatchType uint32
|
||||||
|
|
||||||
|
@ -258,3 +276,115 @@ func (t *Table) SetRecords(v []*Record) {
|
||||||
t.records = v
|
t.records = v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (l *TokenLifetime) GetExp() uint64 {
|
||||||
|
if l != nil {
|
||||||
|
return l.exp
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *TokenLifetime) SetExp(v uint64) {
|
||||||
|
if l != nil {
|
||||||
|
l.exp = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *TokenLifetime) GetNbf() uint64 {
|
||||||
|
if l != nil {
|
||||||
|
return l.nbf
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *TokenLifetime) SetNbf(v uint64) {
|
||||||
|
if l != nil {
|
||||||
|
l.nbf = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *TokenLifetime) GetIat() uint64 {
|
||||||
|
if l != nil {
|
||||||
|
return l.iat
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *TokenLifetime) SetIat(v uint64) {
|
||||||
|
if l != nil {
|
||||||
|
l.iat = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerTokenBody) GetEACL() *Table {
|
||||||
|
if bt != nil {
|
||||||
|
return bt.eacl
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerTokenBody) SetEACL(v *Table) {
|
||||||
|
if bt != nil {
|
||||||
|
bt.eacl = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerTokenBody) GetOwnerID() *refs.OwnerID {
|
||||||
|
if bt != nil {
|
||||||
|
return bt.ownerID
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerTokenBody) SetOwnerID(v *refs.OwnerID) {
|
||||||
|
if bt != nil {
|
||||||
|
bt.ownerID = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerTokenBody) GetLifetime() *TokenLifetime {
|
||||||
|
if bt != nil {
|
||||||
|
return bt.lifetime
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerTokenBody) SetLifetime(v *TokenLifetime) {
|
||||||
|
if bt != nil {
|
||||||
|
bt.lifetime = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerToken) GetBody() *BearerTokenBody {
|
||||||
|
if bt != nil {
|
||||||
|
return bt.body
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerToken) SetBody(v *BearerTokenBody) {
|
||||||
|
if bt != nil {
|
||||||
|
bt.body = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerToken) GetSignature() *refs.Signature {
|
||||||
|
if bt != nil {
|
||||||
|
return bt.sig
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *BearerToken) SetSignature(v *refs.Signature) {
|
||||||
|
if bt != nil {
|
||||||
|
bt.sig = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue