Implement signed data calculating function from SignedDataReader
This commit is contained in:
parent
ab198b4049
commit
e01fb0cc62
10 changed files with 126 additions and 149 deletions
|
@ -43,3 +43,7 @@ const ErrNilDataWithTokenSignAccumulator = internal.Error("signed data with toke
|
|||
// ErrNilSignatureKeySourceWithToken is returned by functions that expect
|
||||
// a non-nil SignatureKeySourceWithToken, but received nil.
|
||||
const ErrNilSignatureKeySourceWithToken = internal.Error("key-signature source with token is nil")
|
||||
|
||||
// ErrNilSignedDataReader is returned by functions that expect
|
||||
// a non-nil SignedDataReader, but received nil.
|
||||
const ErrNilSignedDataReader = internal.Error("signed data reader is nil")
|
||||
|
|
|
@ -123,11 +123,7 @@ func (m *Token) AddSignKey(sig []byte, _ *ecdsa.PublicKey) {
|
|||
|
||||
// SignedData returns token information in a binary representation.
|
||||
func (m *Token) SignedData() ([]byte, error) {
|
||||
data := make([]byte, m.SignedDataSize())
|
||||
|
||||
copyTokenSignedData(data, m)
|
||||
|
||||
return data, nil
|
||||
return SignedDataFromReader(m)
|
||||
}
|
||||
|
||||
// ReadSignedData copies a binary representation of the token information to passed buffer.
|
||||
|
|
18
service/utils.go
Normal file
18
service/utils.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
package service
|
||||
|
||||
// SignedDataFromReader allocates buffer and reads bytes from passed reader to it.
|
||||
//
|
||||
// If passed SignedDataReader is nil, ErrNilSignedDataReader returns.
|
||||
func SignedDataFromReader(r SignedDataReader) ([]byte, error) {
|
||||
if r == nil {
|
||||
return nil, ErrNilSignedDataReader
|
||||
}
|
||||
|
||||
data := make([]byte, r.SignedDataSize())
|
||||
|
||||
if _, err := r.ReadSignedData(data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return data, nil
|
||||
}
|
34
service/utils_test.go
Normal file
34
service/utils_test.go
Normal file
|
@ -0,0 +1,34 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestSignedDataFromReader(t *testing.T) {
|
||||
// nil SignedDataReader
|
||||
_, err := SignedDataFromReader(nil)
|
||||
require.EqualError(t, err, ErrNilSignedDataReader.Error())
|
||||
|
||||
rdr := &testSignedDataReader{
|
||||
testSignedDataSrc: new(testSignedDataSrc),
|
||||
}
|
||||
|
||||
// make reader to return an error
|
||||
rdr.err = errors.New("test error")
|
||||
|
||||
_, err = SignedDataFromReader(rdr)
|
||||
require.EqualError(t, err, rdr.err.Error())
|
||||
|
||||
// remove the error
|
||||
rdr.err = nil
|
||||
|
||||
// fill the data
|
||||
rdr.data = testData(t, 10)
|
||||
|
||||
res, err := SignedDataFromReader(rdr)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, rdr.data, res)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue