Skip to content

Commit 4e54744

Browse files
committed
Merge branch 'benchmark-message-handling' into snapshot-gnosis-merge
2 parents acb0398 + 59eb4bd commit 4e54744

File tree

14 files changed

+429
-370
lines changed

14 files changed

+429
-370
lines changed

rolling-shutter/cmd/cryptocmd/jsontests.go

Lines changed: 74 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -315,8 +315,10 @@ var testSpecs = []struct {
315315
}
316316

317317
func createJSONTests(enc testEncoder) {
318-
keygen := testkeygen.NewKeyGenerator(12, 10)
319-
var err error
318+
keys, err := testkeygen.NewEonKeys(rand.Reader, 12, 10)
319+
if err != nil {
320+
panic(err)
321+
}
320322
for i := range testSpecs {
321323
testSpec := testSpecs[i]
322324

@@ -329,7 +331,7 @@ func createJSONTests(enc testEncoder) {
329331
if err != nil {
330332
panic(err)
331333
}
332-
et, err := createEncryptionTest(keygen, testSpec.payload)
334+
et, err := createEncryptionTest(keys, testSpec.payload)
333335
if err != nil {
334336
panic(err)
335337
}
@@ -345,7 +347,7 @@ func createJSONTests(enc testEncoder) {
345347
}
346348
enc.addTest(&testcase)
347349

348-
dt := createDecryptionTest(keygen, *et)
350+
dt := createDecryptionTest(keys, *et)
349351
testcase = testCase{
350352
testCaseMeta: testCaseMeta{
351353
Description: testSpec.description,
@@ -360,13 +362,13 @@ func createJSONTests(enc testEncoder) {
360362
enc.addTest(&testcase)
361363

362364
case tampered:
363-
et, err := createEncryptionTest(keygen, testSpec.payload)
365+
et, err := createEncryptionTest(keys, testSpec.payload)
364366
if err != nil {
365367
panic(err)
366368
}
367-
tamperedEt := tamperEncryptedMessage(keygen, *et)
369+
tamperedEt := tamperEncryptedMessage(keys, *et)
368370

369-
dt := createDecryptionTest(keygen, tamperedEt)
371+
dt := createDecryptionTest(keys, tamperedEt)
370372
dt.Expected, _ = hexutil.Decode("0x")
371373
testcase := testCase{
372374
testCaseMeta: testCaseMeta{
@@ -383,9 +385,9 @@ func createJSONTests(enc testEncoder) {
383385
var err error
384386
var vt verificationTest
385387
if testSpec.style == verifying {
386-
vt, err = createVerificationTest(keygen, testSpec.payload)
388+
vt, err = createVerificationTest(keys, testSpec.payload)
387389
} else {
388-
vt, err = createFailedVerificationTest(keygen, testSpec.payload)
390+
vt, err = createFailedVerificationTest(keys, testSpec.payload)
389391
}
390392
if err != nil {
391393
panic(err)
@@ -415,16 +417,19 @@ func verifyTestCase(tc *testCase) error {
415417
return tc.Test.Run()
416418
}
417419

418-
func createEncryptionTest(keygen *testkeygen.KeyGenerator, message []byte) (*encryptionTest, error) {
419-
epochID := keygen.RandomEpochID(make([]byte, 52))
420+
func createEncryptionTest(keys *testkeygen.EonKeys, message []byte) (*encryptionTest, error) {
421+
epochID, err := randomEpochID()
422+
if err != nil {
423+
return nil, err
424+
}
420425

421426
et := encryptionTest{}
422427

423428
et.Message = message
424429

425-
et.EonPublicKey = keygen.EonPublicKey(epochID)
430+
et.EonPublicKey = keys.EonPublicKey()
426431
et.EpochID = epochID
427-
sigma, err := keygen.RandomSigma()
432+
sigma, err := shcrypto.RandomSigma(rand.Reader)
428433
if err != nil {
429434
return &et, err
430435
}
@@ -434,7 +439,7 @@ func createEncryptionTest(keygen *testkeygen.KeyGenerator, message []byte) (*enc
434439

435440
encryptedMessage := shcrypto.Encrypt(
436441
et.Message,
437-
keygen.EonPublicKey(epochID),
442+
keys.EonPublicKey(),
438443
epochIDPoint,
439444
sigma,
440445
)
@@ -450,10 +455,12 @@ func createEncryptionTest(keygen *testkeygen.KeyGenerator, message []byte) (*enc
450455
}
451456

452457
// tamperEncryptedMessage changes the C1 value of EncryptedMessage, which allows to test for malleability issues.
453-
func tamperEncryptedMessage(keygen *testkeygen.KeyGenerator, et encryptionTest) encryptionTest {
454-
decryptionKey := keygen.EpochSecretKey(et.EpochID)
458+
func tamperEncryptedMessage(keys *testkeygen.EonKeys, et encryptionTest) encryptionTest {
459+
decryptionKey, err := keys.EpochSecretKey(et.EpochID)
460+
if err != nil {
461+
panic(err)
462+
}
455463
c1 := new(blst.P2)
456-
var err error
457464

458465
for i := 1; i <= 10000; i++ {
459466
c1.FromAffine(et.Expected.C1)
@@ -470,9 +477,12 @@ func tamperEncryptedMessage(keygen *testkeygen.KeyGenerator, et encryptionTest)
470477
return et
471478
}
472479

473-
func createDecryptionTest(keygen *testkeygen.KeyGenerator, et encryptionTest) decryptionTest {
480+
func createDecryptionTest(keys *testkeygen.EonKeys, et encryptionTest) decryptionTest {
474481
dt := decryptionTest{}
475-
epochSecretKey := keygen.EpochSecretKey(et.EpochID)
482+
epochSecretKey, err := keys.EpochSecretKey(et.EpochID)
483+
if err != nil {
484+
panic(err)
485+
}
476486
dt.EpochSecretKey = *epochSecretKey
477487

478488
dt.Cipher = *et.Expected
@@ -482,13 +492,20 @@ func createDecryptionTest(keygen *testkeygen.KeyGenerator, et encryptionTest) de
482492
return dt
483493
}
484494

485-
func createVerificationTest(keygen *testkeygen.KeyGenerator, payload []byte) (verificationTest, error) {
495+
func createVerificationTest(keys *testkeygen.EonKeys, _ []byte) (verificationTest, error) {
486496
var err error
487497
vt := verificationTest{}
488-
epochID := keygen.RandomEpochID(payload)
498+
epochID, err := randomEpochID()
499+
if err != nil {
500+
return verificationTest{}, err
501+
}
489502
vt.EpochID = epochID
490-
vt.EpochSecretKey = *keygen.EpochSecretKey(epochID)
491-
vt.EonPublicKey = *keygen.EonPublicKey(epochID)
503+
epochSecretKey, err := keys.EpochSecretKey(epochID)
504+
if err != nil {
505+
return verificationTest{}, err
506+
}
507+
vt.EpochSecretKey = *epochSecretKey
508+
vt.EonPublicKey = *keys.EonPublicKey()
492509
vt.Expected, err = shcrypto.VerifyEpochSecretKey(
493510
&vt.EpochSecretKey,
494511
&vt.EonPublicKey,
@@ -497,14 +514,25 @@ func createVerificationTest(keygen *testkeygen.KeyGenerator, payload []byte) (ve
497514
return vt, err
498515
}
499516

500-
func createFailedVerificationTest(keygen *testkeygen.KeyGenerator, _ []byte) (verificationTest, error) {
517+
func createFailedVerificationTest(keys *testkeygen.EonKeys, _ []byte) (verificationTest, error) {
501518
var err error
502519
vt := verificationTest{}
503-
epochID := keygen.RandomEpochID(make([]byte, 52))
504-
mismatch := keygen.RandomEpochID(make([]byte, 52))
520+
epochID, err := randomEpochID()
521+
if err != nil {
522+
return verificationTest{}, err
523+
}
505524
vt.EpochID = epochID
506-
vt.EpochSecretKey = *keygen.EpochSecretKey(epochID)
507-
vt.EonPublicKey = *keygen.EonPublicKey(mismatch)
525+
epochSecretKey, err := keys.EpochSecretKey(epochID)
526+
if err != nil {
527+
return verificationTest{}, err
528+
}
529+
vt.EpochSecretKey = *epochSecretKey
530+
531+
keysMismatch, err := testkeygen.NewEonKeys(rand.Reader, 12, 10)
532+
if err != nil {
533+
return verificationTest{}, err
534+
}
535+
vt.EonPublicKey = *keysMismatch.EonPublicKey()
508536
vt.Expected, err = shcrypto.VerifyEpochSecretKey(
509537
&vt.EpochSecretKey,
510538
&vt.EonPublicKey,
@@ -597,3 +625,21 @@ func testMarshalingRoundtrip(tc *testCase) error {
597625
}
598626
return nil
599627
}
628+
629+
func randomEpochID() (identitypreimage.IdentityPreimage, error) {
630+
epochID := make([]byte, 52)
631+
_, err := rand.Read(epochID)
632+
if err != nil {
633+
return identitypreimage.IdentityPreimage{}, err
634+
}
635+
return identitypreimage.IdentityPreimage(epochID), nil
636+
}
637+
638+
func randomSigma() shcrypto.Block {
639+
sigma := make([]byte, 32)
640+
_, err := rand.Read(sigma)
641+
if err != nil {
642+
panic(err)
643+
}
644+
return shcrypto.Block(sigma)
645+
}

rolling-shutter/collator/eonhandling_test.go

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"context"
66
"crypto/ecdsa"
7+
"crypto/rand"
78
"testing"
89
"time"
910

@@ -15,7 +16,6 @@ import (
1516
"github.com/shutter-network/rolling-shutter/rolling-shutter/collator/database"
1617
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/configuration"
1718
enctime "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/encodeable/time"
18-
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/identitypreimage"
1919
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/testkeygen"
2020
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/testsetup"
2121
"github.com/shutter-network/rolling-shutter/rolling-shutter/p2p"
@@ -140,16 +140,14 @@ func TestHandleEonKeyIntegration(t *testing.T) {
140140
db := database.New(dbpool)
141141

142142
testConfig := newTestConfig(t)
143-
tkgBefore := testkeygen.NewTestKeyGenerator(t, 3, 2, false)
144-
tkg := testkeygen.NewTestKeyGenerator(t, 3, 2, false)
145-
146-
identityPreimage1 := identitypreimage.Uint64ToIdentityPreimage(1)
147-
identityPreimage1000 := identitypreimage.Uint64ToIdentityPreimage(1000)
148-
identityPreimage2000 := identitypreimage.Uint64ToIdentityPreimage(2000)
143+
keysBefore, err := testkeygen.NewEonKeys(rand.Reader, 3, 2)
144+
assert.NilError(t, err)
145+
keys, err := testkeygen.NewEonKeys(rand.Reader, 3, 2)
146+
assert.NilError(t, err)
149147

150-
eonPubKeyNoThreshold, _ = tkgBefore.EonPublicKey(identityPreimage1).GobEncode()
151-
eonPubKeyBefore, _ = tkgBefore.EonPublicKey(identityPreimage1000).GobEncode()
152-
eonPubKey, _ = tkg.EonPublicKey(identityPreimage2000).GobEncode()
148+
eonPubKeyNoThreshold, _ = keysBefore.EonPublicKey().GobEncode()
149+
eonPubKeyBefore, _ = keysBefore.EonPublicKey().GobEncode()
150+
eonPubKey, _ = keys.EonPublicKey().GobEncode()
153151

154152
kpr1, _ := ethcrypto.GenerateKey()
155153
kpr2, _ := ethcrypto.GenerateKey()
@@ -166,7 +164,7 @@ func TestHandleEonKeyIntegration(t *testing.T) {
166164
keyperConfigIndex: uint64(0),
167165
activationBlock: activationBlockNoThreshold,
168166
eonPubKey: eonPubKeyNoThreshold,
169-
threshold: tkg.Threshold,
167+
threshold: keys.Threshold,
170168
keypers: []*ecdsa.PrivateKey{kpr1},
171169
})
172170
assert.Check(t, len(keypersNoThreshold) > 0)
@@ -179,7 +177,7 @@ func TestHandleEonKeyIntegration(t *testing.T) {
179177
keyperConfigIndex: uint64(1),
180178
activationBlock: activationBlockBefore,
181179
eonPubKey: eonPubKeyBefore,
182-
threshold: tkg.Threshold,
180+
threshold: keys.Threshold,
183181
keypers: []*ecdsa.PrivateKey{kpr1, kpr2, kpr3},
184182
})
185183
assert.Check(t, len(keypersBefore) > 0)
@@ -190,7 +188,7 @@ func TestHandleEonKeyIntegration(t *testing.T) {
190188
keyperConfigIndex: uint64(2),
191189
activationBlock: activationBlock,
192190
eonPubKey: eonPubKey,
193-
threshold: tkg.Threshold,
191+
threshold: keys.Threshold,
194192
keypers: []*ecdsa.PrivateKey{kpr3, kpr1, kpr2},
195193
})
196194
assert.Check(t, len(keypers) > 0)

0 commit comments

Comments
 (0)