@@ -3,6 +3,7 @@ package v2_test
3
3
import (
4
4
"crypto/sha256"
5
5
disperser_rpc "github.com/Layr-Labs/eigenda/api/grpc/disperser/v2"
6
+ "github.com/Layr-Labs/eigenda/common/replay"
6
7
"math/big"
7
8
"testing"
8
9
"time"
@@ -18,15 +19,16 @@ import (
18
19
)
19
20
20
21
var (
21
- privateKeyHex = "0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
22
- maxPastAge = 5 * time .Minute
23
- maxFutureAge = 5 * time .Minute
22
+ privateKeyHex = "0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
23
+ maxPastAge = 5 * time .Minute
24
+ maxFutureAge = 5 * time .Minute
25
+ fixedTimestamp = uint64 (1609459200000000000 )
24
26
)
25
27
26
28
func TestAuthentication (t * testing.T ) {
27
29
signer , err := auth .NewLocalBlobRequestSigner (privateKeyHex )
28
30
assert .NoError (t , err )
29
- authenticator := auth .NewAuthenticator ( maxPastAge , maxFutureAge )
31
+ blobRequestAuthenticator := auth .NewBlobRequestAuthenticator ( )
30
32
31
33
accountId , err := signer .GetAccountID ()
32
34
assert .NoError (t , err )
@@ -36,14 +38,14 @@ func TestAuthentication(t *testing.T) {
36
38
signature , err := signer .SignBlobRequest (header )
37
39
assert .NoError (t , err )
38
40
39
- err = authenticator .AuthenticateBlobRequest (header , signature )
41
+ err = blobRequestAuthenticator .AuthenticateBlobRequest (header , signature )
40
42
assert .NoError (t , err )
41
43
}
42
44
43
45
func TestAuthenticationFail (t * testing.T ) {
44
46
signer , err := auth .NewLocalBlobRequestSigner (privateKeyHex )
45
47
assert .NoError (t , err )
46
- authenticator := auth .NewAuthenticator ( maxPastAge , maxFutureAge )
48
+ blobRequestAuthenticator := auth .NewBlobRequestAuthenticator ( )
47
49
48
50
accountId , err := signer .GetAccountID ()
49
51
assert .NoError (t , err )
@@ -58,7 +60,7 @@ func TestAuthenticationFail(t *testing.T) {
58
60
signature , err := signer .SignBlobRequest (header )
59
61
assert .NoError (t , err )
60
62
61
- err = authenticator .AuthenticateBlobRequest (header , signature )
63
+ err = blobRequestAuthenticator .AuthenticateBlobRequest (header , signature )
62
64
assert .Error (t , err )
63
65
}
64
66
@@ -122,42 +124,43 @@ func testHeader(t *testing.T, accountID gethcommon.Address) *corev2.BlobHeader {
122
124
func TestAuthenticatePaymentStateRequestValid (t * testing.T ) {
123
125
signer , err := auth .NewLocalBlobRequestSigner (privateKeyHex )
124
126
assert .NoError (t , err )
125
- authenticator := auth .NewAuthenticator (maxPastAge , maxFutureAge )
127
+ paymentStateAuthenticator := auth .NewPaymentStateAuthenticator (maxPastAge , maxFutureAge )
128
+ paymentStateAuthenticator .ReplayGuardian = replay .NewNoOpReplayGuardian ()
126
129
127
- signature , err := signer .SignPaymentStateRequest ()
130
+ signature , err := signer .SignPaymentStateRequest (fixedTimestamp )
128
131
assert .NoError (t , err )
132
+ assert .NotNil (t , signature )
129
133
130
134
accountId , err := signer .GetAccountID ()
131
135
assert .NoError (t , err )
132
136
133
137
request := mockGetPaymentStateRequest (accountId , signature )
134
138
135
- err = authenticator .AuthenticatePaymentStateRequest (accountId , request )
139
+ err = paymentStateAuthenticator .AuthenticatePaymentStateRequest (accountId , request )
136
140
assert .NoError (t , err )
137
141
}
138
142
139
143
func TestAuthenticatePaymentStateRequestInvalidSignatureLength (t * testing.T ) {
140
- authenticator := auth .NewAuthenticator (maxPastAge , maxFutureAge )
144
+ paymentStateAuthenticator := auth .NewPaymentStateAuthenticator (maxPastAge , maxFutureAge )
141
145
request := mockGetPaymentStateRequest (gethcommon .HexToAddress ("0x123" ), []byte {1 , 2 , 3 })
142
146
143
- err := authenticator .AuthenticatePaymentStateRequest (gethcommon .HexToAddress ("0x123" ), request )
147
+ err := paymentStateAuthenticator .AuthenticatePaymentStateRequest (gethcommon .HexToAddress ("0x123" ), request )
144
148
assert .Error (t , err )
145
149
assert .Contains (t , err .Error (), "signature length is unexpected" )
146
150
}
147
151
148
152
func TestAuthenticatePaymentStateRequestInvalidPublicKey (t * testing.T ) {
149
- authenticator := auth .NewAuthenticator (maxPastAge , maxFutureAge )
153
+ paymentStateAuthenticator := auth .NewPaymentStateAuthenticator (maxPastAge , maxFutureAge )
150
154
request := mockGetPaymentStateRequest (gethcommon.Address {}, make ([]byte , 65 ))
151
-
152
- err := authenticator .AuthenticatePaymentStateRequest (gethcommon.Address {}, request )
155
+ err := paymentStateAuthenticator .AuthenticatePaymentStateRequest (gethcommon.Address {}, request )
153
156
assert .Error (t , err )
154
157
assert .Contains (t , err .Error (), "failed to recover public key from signature" )
155
158
}
156
159
157
160
func TestAuthenticatePaymentStateRequestSignatureMismatch (t * testing.T ) {
158
161
signer , err := auth .NewLocalBlobRequestSigner (privateKeyHex )
159
162
assert .NoError (t , err )
160
- authenticator := auth .NewAuthenticator (maxPastAge , maxFutureAge )
163
+ paymentStateAuthenticator := auth .NewPaymentStateAuthenticator (maxPastAge , maxFutureAge )
161
164
162
165
// Create a different signer with wrong private key
163
166
wrongSigner , err := auth .NewLocalBlobRequestSigner ("0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcded" )
@@ -167,20 +170,20 @@ func TestAuthenticatePaymentStateRequestSignatureMismatch(t *testing.T) {
167
170
accountId , err := signer .GetAccountID ()
168
171
assert .NoError (t , err )
169
172
170
- signature , err := wrongSigner .SignPaymentStateRequest ()
173
+ signature , err := wrongSigner .SignPaymentStateRequest (uint64 ( time . Now (). UnixNano ()) )
171
174
assert .NoError (t , err )
172
175
173
176
request := mockGetPaymentStateRequest (accountId , signature )
174
177
175
- err = authenticator .AuthenticatePaymentStateRequest (accountId , request )
178
+ err = paymentStateAuthenticator .AuthenticatePaymentStateRequest (accountId , request )
176
179
assert .Error (t , err )
177
180
assert .Contains (t , err .Error (), "signature doesn't match with provided public key" )
178
181
}
179
182
180
183
func TestAuthenticatePaymentStateRequestCorruptedSignature (t * testing.T ) {
181
184
signer , err := auth .NewLocalBlobRequestSigner (privateKeyHex )
182
185
assert .NoError (t , err )
183
- authenticator := auth .NewAuthenticator (maxPastAge , maxFutureAge )
186
+ paymentStateAuthenticator := auth .NewPaymentStateAuthenticator (maxPastAge , maxFutureAge )
184
187
185
188
accountId , err := signer .GetAccountID ()
186
189
assert .NoError (t , err )
@@ -193,14 +196,14 @@ func TestAuthenticatePaymentStateRequestCorruptedSignature(t *testing.T) {
193
196
signature [0 ] ^= 0x01
194
197
request := mockGetPaymentStateRequest (accountId , signature )
195
198
196
- err = authenticator .AuthenticatePaymentStateRequest (accountId , request )
199
+ err = paymentStateAuthenticator .AuthenticatePaymentStateRequest (accountId , request )
197
200
assert .Error (t , err )
198
201
}
199
202
200
203
func mockGetPaymentStateRequest (accountId gethcommon.Address , signature []byte ) * disperser_rpc.GetPaymentStateRequest {
201
204
return & disperser_rpc.GetPaymentStateRequest {
202
205
AccountId : accountId .Hex (),
203
206
Signature : signature ,
204
- Timestamp : uint64 ( time . Now (). UnixNano ()) ,
207
+ Timestamp : fixedTimestamp ,
205
208
}
206
209
}
0 commit comments