More info in receipt errors and change tests

This commit is contained in:
mcrakhman 2023-04-25 14:25:08 +02:00 committed by Mikhail Iudin
parent ab74809973
commit ac79c0c15c
No known key found for this signature in database
GPG Key ID: FAAAA8BAABDFF1C0
2 changed files with 8 additions and 5 deletions

View File

@ -3,6 +3,7 @@ package coordinatorproto
import ( import (
"bytes" "bytes"
"errors" "errors"
"fmt"
"github.com/anytypeio/any-sync/util/crypto" "github.com/anytypeio/any-sync/util/crypto"
"github.com/gogo/protobuf/proto" "github.com/gogo/protobuf/proto"
"golang.org/x/exp/slices" "golang.org/x/exp/slices"
@ -11,7 +12,7 @@ import (
var ( var (
errReceiptSignatureIncorrect = errors.New("receipt signature is incorrect") errReceiptSignatureIncorrect = errors.New("receipt signature is incorrect")
errNoSuchCoordinatorNode = errors.New("no such control node") errNoSuchCoordinatorNode = errors.New("no such coordinator node")
errReceiptSpaceIdIncorrect = errors.New("receipt space id is incorrect") errReceiptSpaceIdIncorrect = errors.New("receipt space id is incorrect")
errReceiptPeerIdIncorrect = errors.New("receipt peer id is incorrect") errReceiptPeerIdIncorrect = errors.New("receipt peer id is incorrect")
errReceiptAccountIncorrect = errors.New("receipt account is incorrect") errReceiptAccountIncorrect = errors.New("receipt account is incorrect")
@ -90,8 +91,9 @@ func checkCoordinator(coordinators []string, identity []byte, payload, signature
if err != nil { if err != nil {
return return
} }
receiptCoordinator := coordinatorKey.PeerId()
if !slices.Contains(coordinators, coordinatorKey.PeerId()) { if !slices.Contains(coordinators, coordinatorKey.PeerId()) {
return errNoSuchCoordinatorNode return fmt.Errorf("got coordinator %s: %w", receiptCoordinator, errNoSuchCoordinatorNode)
} }
res, err := coordinatorKey.Verify(payload, signature) res, err := coordinatorKey.Verify(payload, signature)
if err != nil { if err != nil {

View File

@ -3,6 +3,7 @@ package coordinatorproto
import ( import (
"context" "context"
"crypto/rand" "crypto/rand"
"errors"
"github.com/anytypeio/any-sync/util/crypto" "github.com/anytypeio/any-sync/util/crypto"
"github.com/gogo/protobuf/proto" "github.com/gogo/protobuf/proto"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
@ -93,7 +94,7 @@ func TestReceiptIncorrectCoordinatorKey(t *testing.T) {
t.Run("random key payload", func(t *testing.T) { t.Run("random key payload", func(t *testing.T) {
fx.updateReceipt(t, func(t *testing.T, receipt *SpaceReceipt) { fx.updateReceipt(t, func(t *testing.T, receipt *SpaceReceipt) {
receipt.AccountIdentity = []byte("some random stuff") receipt.ControlNodeIdentity = []byte("some random stuff")
}) })
err := CheckReceipt(fx.peerId, fx.spaceId, fx.accountIdentity, []string{fx.coordinatorKey.GetPublic().PeerId()}, fx.signedReceipt) err := CheckReceipt(fx.peerId, fx.spaceId, fx.accountIdentity, []string{fx.coordinatorKey.GetPublic().PeerId()}, fx.signedReceipt)
require.Error(t, err) require.Error(t, err)
@ -104,10 +105,10 @@ func TestReceiptIncorrectCoordinatorKey(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
keyBytes, err := randomKey.GetPublic().Marshall() keyBytes, err := randomKey.GetPublic().Marshall()
require.NoError(t, err) require.NoError(t, err)
receipt.AccountIdentity = keyBytes receipt.ControlNodeIdentity = keyBytes
}) })
err := CheckReceipt(fx.peerId, fx.spaceId, fx.accountIdentity, []string{fx.coordinatorKey.GetPublic().PeerId()}, fx.signedReceipt) err := CheckReceipt(fx.peerId, fx.spaceId, fx.accountIdentity, []string{fx.coordinatorKey.GetPublic().PeerId()}, fx.signedReceipt)
require.Error(t, errNoSuchCoordinatorNode, err) require.True(t, errors.Is(err, errNoSuchCoordinatorNode))
}) })
} }