@ -29,7 +29,7 @@ func TestVerifyAdjacentHeaders(t *testing.T) {
vals = keys . ToValidators ( 20 , 10 )
bTime , _ = time . Parse ( time . RFC3339 , "2006-01-02T15:04:05Z" )
header = keys . GenSignedHeader ( chainID , lastHeight , bTime , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( keys ) )
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( keys ) )
)
testCases := [ ] struct {
@ -52,7 +52,7 @@ func TestVerifyAdjacentHeaders(t *testing.T) {
// different chainID -> error
1 : {
keys . GenSignedHeader ( "different-chainID" , nextHeight , bTime . Add ( 1 * time . Hour ) , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( keys ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( keys ) ) ,
vals ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -63,7 +63,7 @@ func TestVerifyAdjacentHeaders(t *testing.T) {
// new header's time is before old header's time -> error
2 : {
keys . GenSignedHeader ( chainID , nextHeight , bTime . Add ( - 1 * time . Hour ) , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( keys ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( keys ) ) ,
vals ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -73,7 +73,7 @@ func TestVerifyAdjacentHeaders(t *testing.T) {
// new header's time is from the future -> error
3 : {
keys . GenSignedHeader ( chainID , nextHeight , bTime . Add ( 3 * time . Hour ) , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( keys ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( keys ) ) ,
vals ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -84,7 +84,7 @@ func TestVerifyAdjacentHeaders(t *testing.T) {
4 : {
keys . GenSignedHeader ( chainID , nextHeight ,
bTime . Add ( 2 * time . Hour ) . Add ( maxClockDrift ) . Add ( - 1 * time . Millisecond ) , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( keys ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( keys ) ) ,
vals ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -94,7 +94,7 @@ func TestVerifyAdjacentHeaders(t *testing.T) {
// 3/3 signed -> no error
5 : {
keys . GenSignedHeader ( chainID , nextHeight , bTime . Add ( 1 * time . Hour ) , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( keys ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( keys ) ) ,
vals ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -104,7 +104,7 @@ func TestVerifyAdjacentHeaders(t *testing.T) {
// 2/3 signed -> no error
6 : {
keys . GenSignedHeader ( chainID , nextHeight , bTime . Add ( 1 * time . Hour ) , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 1 , len ( keys ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 1 , len ( keys ) ) ,
vals ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -114,7 +114,7 @@ func TestVerifyAdjacentHeaders(t *testing.T) {
// 1/3 signed -> error
7 : {
keys . GenSignedHeader ( chainID , nextHeight , bTime . Add ( 1 * time . Hour ) , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , len ( keys ) - 1 , len ( keys ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , len ( keys ) - 1 , len ( keys ) ) ,
vals ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -124,7 +124,7 @@ func TestVerifyAdjacentHeaders(t *testing.T) {
// vals does not match with what we have -> error
8 : {
keys . GenSignedHeader ( chainID , nextHeight , bTime . Add ( 1 * time . Hour ) , nil , keys . ToValidators ( 10 , 1 ) , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( keys ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( keys ) ) ,
keys . ToValidators ( 10 , 1 ) ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -134,7 +134,7 @@ func TestVerifyAdjacentHeaders(t *testing.T) {
// vals are inconsistent with newHeader -> error
9 : {
keys . GenSignedHeader ( chainID , nextHeight , bTime . Add ( 1 * time . Hour ) , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( keys ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( keys ) ) ,
keys . ToValidators ( 10 , 1 ) ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -144,7 +144,7 @@ func TestVerifyAdjacentHeaders(t *testing.T) {
// old header has expired -> error
10 : {
keys . GenSignedHeader ( chainID , nextHeight , bTime . Add ( 1 * time . Hour ) , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( keys ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( keys ) ) ,
keys . ToValidators ( 10 , 1 ) ,
1 * time . Hour ,
bTime . Add ( 1 * time . Hour ) ,
@ -182,7 +182,7 @@ func TestVerifyNonAdjacentHeaders(t *testing.T) {
vals = keys . ToValidators ( 20 , 10 )
bTime , _ = time . Parse ( time . RFC3339 , "2006-01-02T15:04:05Z" )
header = keys . GenSignedHeader ( chainID , lastHeight , bTime , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( keys ) )
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( keys ) )
// 30, 40, 50
twoThirds = keys [ 1 : ]
@ -208,7 +208,7 @@ func TestVerifyNonAdjacentHeaders(t *testing.T) {
// 3/3 new vals signed, 3/3 old vals present -> no error
0 : {
keys . GenSignedHeader ( chainID , 3 , bTime . Add ( 1 * time . Hour ) , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( keys ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( keys ) ) ,
vals ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -218,7 +218,7 @@ func TestVerifyNonAdjacentHeaders(t *testing.T) {
// 2/3 new vals signed, 3/3 old vals present -> no error
1 : {
keys . GenSignedHeader ( chainID , 4 , bTime . Add ( 1 * time . Hour ) , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 1 , len ( keys ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 1 , len ( keys ) ) ,
vals ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -228,7 +228,7 @@ func TestVerifyNonAdjacentHeaders(t *testing.T) {
// 1/3 new vals signed, 3/3 old vals present -> error
2 : {
keys . GenSignedHeader ( chainID , 5 , bTime . Add ( 1 * time . Hour ) , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , len ( keys ) - 1 , len ( keys ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , len ( keys ) - 1 , len ( keys ) ) ,
vals ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -238,7 +238,7 @@ func TestVerifyNonAdjacentHeaders(t *testing.T) {
// 3/3 new vals signed, 2/3 old vals present -> no error
3 : {
twoThirds . GenSignedHeader ( chainID , 5 , bTime . Add ( 1 * time . Hour ) , nil , twoThirdsVals , twoThirdsVals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( twoThirds ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( twoThirds ) ) ,
twoThirdsVals ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -248,7 +248,7 @@ func TestVerifyNonAdjacentHeaders(t *testing.T) {
// 3/3 new vals signed, 1/3 old vals present -> no error
4 : {
oneThird . GenSignedHeader ( chainID , 5 , bTime . Add ( 1 * time . Hour ) , nil , oneThirdVals , oneThirdVals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( oneThird ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( oneThird ) ) ,
oneThirdVals ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -258,7 +258,7 @@ func TestVerifyNonAdjacentHeaders(t *testing.T) {
// 3/3 new vals signed, less than 1/3 old vals present -> error
5 : {
lessThanOneThird . GenSignedHeader ( chainID , 5 , bTime . Add ( 1 * time . Hour ) , nil , lessThanOneThirdVals , lessThanOneThirdVals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( lessThanOneThird ) ) ,
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( lessThanOneThird ) ) ,
lessThanOneThirdVals ,
3 * time . Hour ,
bTime . Add ( 2 * time . Hour ) ,
@ -298,7 +298,7 @@ func TestVerifyReturnsErrorIfTrustLevelIsInvalid(t *testing.T) {
vals = keys . ToValidators ( 20 , 10 )
bTime , _ = time . Parse ( time . RFC3339 , "2006-01-02T15:04:05Z" )
header = keys . GenSignedHeader ( chainID , lastHeight , bTime , nil , vals , vals ,
[ ] byte ( "app_hash" ) , [ ] byte ( "cons_hash" ) , [ ] byte ( "results_hash" ) , 0 , len ( keys ) )
hash ( "app_hash" ) , hash ( "cons_hash" ) , hash ( "results_hash" ) , 0 , len ( keys ) )
)
err := lite . Verify ( chainID , header , vals , header , vals , 2 * time . Hour , time . Now ( ) , maxClockDrift ,