@@ -315,8 +315,10 @@ var testSpecs = []struct {
315
315
}
316
316
317
317
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
+ }
320
322
for i := range testSpecs {
321
323
testSpec := testSpecs [i ]
322
324
@@ -329,7 +331,7 @@ func createJSONTests(enc testEncoder) {
329
331
if err != nil {
330
332
panic (err )
331
333
}
332
- et , err := createEncryptionTest (keygen , testSpec .payload )
334
+ et , err := createEncryptionTest (keys , testSpec .payload )
333
335
if err != nil {
334
336
panic (err )
335
337
}
@@ -345,7 +347,7 @@ func createJSONTests(enc testEncoder) {
345
347
}
346
348
enc .addTest (& testcase )
347
349
348
- dt := createDecryptionTest (keygen , * et )
350
+ dt := createDecryptionTest (keys , * et )
349
351
testcase = testCase {
350
352
testCaseMeta : testCaseMeta {
351
353
Description : testSpec .description ,
@@ -360,13 +362,13 @@ func createJSONTests(enc testEncoder) {
360
362
enc .addTest (& testcase )
361
363
362
364
case tampered :
363
- et , err := createEncryptionTest (keygen , testSpec .payload )
365
+ et , err := createEncryptionTest (keys , testSpec .payload )
364
366
if err != nil {
365
367
panic (err )
366
368
}
367
- tamperedEt := tamperEncryptedMessage (keygen , * et )
369
+ tamperedEt := tamperEncryptedMessage (keys , * et )
368
370
369
- dt := createDecryptionTest (keygen , tamperedEt )
371
+ dt := createDecryptionTest (keys , tamperedEt )
370
372
dt .Expected , _ = hexutil .Decode ("0x" )
371
373
testcase := testCase {
372
374
testCaseMeta : testCaseMeta {
@@ -383,9 +385,9 @@ func createJSONTests(enc testEncoder) {
383
385
var err error
384
386
var vt verificationTest
385
387
if testSpec .style == verifying {
386
- vt , err = createVerificationTest (keygen , testSpec .payload )
388
+ vt , err = createVerificationTest (keys , testSpec .payload )
387
389
} else {
388
- vt , err = createFailedVerificationTest (keygen , testSpec .payload )
390
+ vt , err = createFailedVerificationTest (keys , testSpec .payload )
389
391
}
390
392
if err != nil {
391
393
panic (err )
@@ -415,16 +417,19 @@ func verifyTestCase(tc *testCase) error {
415
417
return tc .Test .Run ()
416
418
}
417
419
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
+ }
420
425
421
426
et := encryptionTest {}
422
427
423
428
et .Message = message
424
429
425
- et .EonPublicKey = keygen .EonPublicKey (epochID )
430
+ et .EonPublicKey = keys .EonPublicKey ()
426
431
et .EpochID = epochID
427
- sigma , err := keygen .RandomSigma ()
432
+ sigma , err := shcrypto .RandomSigma (rand . Reader )
428
433
if err != nil {
429
434
return & et , err
430
435
}
@@ -434,7 +439,7 @@ func createEncryptionTest(keygen *testkeygen.KeyGenerator, message []byte) (*enc
434
439
435
440
encryptedMessage := shcrypto .Encrypt (
436
441
et .Message ,
437
- keygen .EonPublicKey (epochID ),
442
+ keys .EonPublicKey (),
438
443
epochIDPoint ,
439
444
sigma ,
440
445
)
@@ -450,10 +455,12 @@ func createEncryptionTest(keygen *testkeygen.KeyGenerator, message []byte) (*enc
450
455
}
451
456
452
457
// 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
+ }
455
463
c1 := new (blst.P2 )
456
- var err error
457
464
458
465
for i := 1 ; i <= 10000 ; i ++ {
459
466
c1 .FromAffine (et .Expected .C1 )
@@ -470,9 +477,12 @@ func tamperEncryptedMessage(keygen *testkeygen.KeyGenerator, et encryptionTest)
470
477
return et
471
478
}
472
479
473
- func createDecryptionTest (keygen * testkeygen.KeyGenerator , et encryptionTest ) decryptionTest {
480
+ func createDecryptionTest (keys * testkeygen.EonKeys , et encryptionTest ) decryptionTest {
474
481
dt := decryptionTest {}
475
- epochSecretKey := keygen .EpochSecretKey (et .EpochID )
482
+ epochSecretKey , err := keys .EpochSecretKey (et .EpochID )
483
+ if err != nil {
484
+ panic (err )
485
+ }
476
486
dt .EpochSecretKey = * epochSecretKey
477
487
478
488
dt .Cipher = * et .Expected
@@ -482,13 +492,20 @@ func createDecryptionTest(keygen *testkeygen.KeyGenerator, et encryptionTest) de
482
492
return dt
483
493
}
484
494
485
- func createVerificationTest (keygen * testkeygen.KeyGenerator , payload []byte ) (verificationTest , error ) {
495
+ func createVerificationTest (keys * testkeygen.EonKeys , _ []byte ) (verificationTest , error ) {
486
496
var err error
487
497
vt := verificationTest {}
488
- epochID := keygen .RandomEpochID (payload )
498
+ epochID , err := randomEpochID ()
499
+ if err != nil {
500
+ return verificationTest {}, err
501
+ }
489
502
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 ()
492
509
vt .Expected , err = shcrypto .VerifyEpochSecretKey (
493
510
& vt .EpochSecretKey ,
494
511
& vt .EonPublicKey ,
@@ -497,14 +514,25 @@ func createVerificationTest(keygen *testkeygen.KeyGenerator, payload []byte) (ve
497
514
return vt , err
498
515
}
499
516
500
- func createFailedVerificationTest (keygen * testkeygen.KeyGenerator , _ []byte ) (verificationTest , error ) {
517
+ func createFailedVerificationTest (keys * testkeygen.EonKeys , _ []byte ) (verificationTest , error ) {
501
518
var err error
502
519
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
+ }
505
524
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 ()
508
536
vt .Expected , err = shcrypto .VerifyEpochSecretKey (
509
537
& vt .EpochSecretKey ,
510
538
& vt .EonPublicKey ,
@@ -597,3 +625,21 @@ func testMarshalingRoundtrip(tc *testCase) error {
597
625
}
598
626
return nil
599
627
}
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
+ }
0 commit comments