Skip to content

Commit c6f16ab

Browse files
committed
node/object: Check signature and ID separately
Previously, we checked signature itself, then ID, then signature against the session token. Error text became more clear as well. Now signature is checked within one func which brings us closer to 8d3054d for objects. Signed-off-by: Leonard Lyubich <[email protected]>
1 parent 97cb33b commit c6f16ab

File tree

2 files changed

+13
-13
lines changed

2 files changed

+13
-13
lines changed

pkg/core/object/fmt.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -158,12 +158,8 @@ func (v *FormatValidator) Validate(obj *object.Object, unprepared bool) error {
158158
}
159159

160160
if !unprepared {
161-
if !obj.VerifySignature() {
162-
return errors.New("could not validate header fields: invalid signature")
163-
}
164-
165-
if err := validateSignatureKey(obj); err != nil {
166-
return fmt.Errorf("could not validate signature key: %w", err)
161+
if err := validateSignature(obj); err != nil {
162+
return fmt.Errorf("could not validate signature: %w", err)
167163
}
168164

169165
if err := obj.VerifyID(); err != nil {
@@ -183,14 +179,18 @@ func (v *FormatValidator) Validate(obj *object.Object, unprepared bool) error {
183179
return nil
184180
}
185181

186-
func validateSignatureKey(obj *object.Object) error {
182+
func validateSignature(obj *object.Object) error {
187183
// FIXME(@cthulhu-rider): temp solution, see neofs-sdk-go#233
188184
sig := obj.Signature()
189185
if sig == nil {
190186
// TODO(@cthulhu-rider): #1387 use "const" error
191187
return errors.New("missing signature")
192188
}
193189

190+
if !obj.VerifySignature() {
191+
return errors.New("invalid signature")
192+
}
193+
194194
token := obj.SessionToken()
195195
if token == nil {
196196
return nil

pkg/core/object/fmt_test.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func TestFormatValidator_Validate(t *testing.T) {
111111
t.Run("invalid signature", func(t *testing.T) {
112112
t.Run("unsigned", func(t *testing.T) {
113113
obj, _ := minUnsignedObject(t)
114-
require.EqualError(t, v.Validate(&obj, false), "could not validate header fields: invalid signature")
114+
require.EqualError(t, v.Validate(&obj, false), "could not validate signature: missing signature")
115115
})
116116
t.Run("unsupported scheme", func(t *testing.T) {
117117
obj, signer := minUnsignedObject(t)
@@ -121,7 +121,7 @@ func TestFormatValidator_Validate(t *testing.T) {
121121
sig := neofscrypto.NewSignature(3, signer.Public(), sigBytes)
122122
obj.SetSignature(&sig)
123123

124-
require.EqualError(t, v.Validate(&obj, false), "could not validate header fields: invalid signature")
124+
require.EqualError(t, v.Validate(&obj, false), "could not validate signature: invalid signature")
125125
})
126126
t.Run("wrong scheme", func(t *testing.T) {
127127
obj, signer := minUnsignedObject(t)
@@ -131,7 +131,7 @@ func TestFormatValidator_Validate(t *testing.T) {
131131
sig := neofscrypto.NewSignature(neofscrypto.ECDSA_WALLETCONNECT, signer.Public(), sigBytes)
132132
obj.SetSignature(&sig)
133133

134-
require.EqualError(t, v.Validate(&obj, false), "could not validate header fields: invalid signature")
134+
require.EqualError(t, v.Validate(&obj, false), "could not validate signature: invalid signature")
135135
})
136136
t.Run("invalid public key", func(t *testing.T) {
137137
obj, signer := minUnsignedObject(t)
@@ -160,7 +160,7 @@ func TestFormatValidator_Validate(t *testing.T) {
160160
pub := slices.Clone(signer.PublicKeyBytes)
161161
sig.SetPublicKeyBytes(tc.changePub(pub))
162162
obj.SetSignature(&sig)
163-
require.EqualError(t, v.Validate(&obj, false), "could not validate header fields: invalid signature")
163+
require.EqualError(t, v.Validate(&obj, false), "could not validate signature: invalid signature")
164164
})
165165
}
166166
})
@@ -182,7 +182,7 @@ func TestFormatValidator_Validate(t *testing.T) {
182182
cp[i]++
183183
newSig := neofscrypto.NewSignatureFromRawKey(sig.Scheme(), sig.PublicKeyBytes(), cp)
184184
tc.object.SetSignature(&newSig)
185-
require.EqualError(t, v.Validate(&tc.object, false), "could not validate header fields: invalid signature")
185+
require.EqualError(t, v.Validate(&tc.object, false), "could not validate signature: invalid signature")
186186
}
187187
})
188188
}
@@ -256,7 +256,7 @@ func TestFormatValidator_Validate(t *testing.T) {
256256
require.NoError(t, obj.Sign(sessionSubj))
257257

258258
err = v.Validate(obj, false)
259-
require.EqualError(t, err, "could not validate signature key: authenticate session token: issuer mismatches signature")
259+
require.EqualError(t, err, "could not validate signature: authenticate session token: issuer mismatches signature")
260260
})
261261
})
262262

0 commit comments

Comments
 (0)