@@ -20,6 +20,9 @@ import (
20
20
"os"
21
21
"testing"
22
22
23
+ "crypto"
24
+ "crypto/rsa"
25
+
23
26
"github.com/hyperledger/fabric/core/crypto/bccsp"
24
27
"github.com/hyperledger/fabric/core/crypto/primitives"
25
28
"github.com/spf13/viper"
@@ -253,7 +256,7 @@ func TestECDSAVerify(t *testing.T) {
253
256
t .Fatalf ("Failed generating ECDSA signature [%s]" , err )
254
257
}
255
258
256
- valid , err := csp .Verify (k , signature , digest )
259
+ valid , err := csp .Verify (k , signature , digest , nil )
257
260
if err != nil {
258
261
t .Fatalf ("Failed verifying ECDSA signature [%s]" , err )
259
262
}
@@ -287,7 +290,7 @@ func TestECDSAKeyDeriv(t *testing.T) {
287
290
t .Fatalf ("Failed generating ECDSA signature [%s]" , err )
288
291
}
289
292
290
- valid , err := csp .Verify (reRandomizedKey , signature , digest )
293
+ valid , err := csp .Verify (reRandomizedKey , signature , digest , nil )
291
294
if err != nil {
292
295
t .Fatalf ("Failed verifying ECDSA signature [%s]" , err )
293
296
}
@@ -553,3 +556,198 @@ func TestSHA(t *testing.T) {
553
556
}
554
557
}
555
558
}
559
+
560
+ func TestRSAKeyGenEphemeral (t * testing.T ) {
561
+ csp := getBCCSP (t )
562
+
563
+ k , err := csp .KeyGen (& bccsp.RSAKeyGenOpts {Temporary : true })
564
+ if err != nil {
565
+ t .Fatalf ("Failed generating RSA key [%s]" , err )
566
+ }
567
+ if k == nil {
568
+ t .Fatal ("Failed generating RSA key. Key must be different from nil" )
569
+ }
570
+ if ! k .Private () {
571
+ t .Fatal ("Failed generating RSA key. Key should be private" )
572
+ }
573
+ if k .Symmetric () {
574
+ t .Fatal ("Failed generating RSA key. Key should be asymmetric" )
575
+ }
576
+ }
577
+
578
+ func TestRSAPrivateKeySKI (t * testing.T ) {
579
+ csp := getBCCSP (t )
580
+
581
+ k , err := csp .KeyGen (& bccsp.RSAKeyGenOpts {Temporary : true })
582
+ if err != nil {
583
+ t .Fatalf ("Failed generating RSA key [%s]" , err )
584
+ }
585
+
586
+ ski := k .SKI ()
587
+ if len (ski ) == 0 {
588
+ t .Fatal ("SKI not valid. Zero length." )
589
+ }
590
+ }
591
+
592
+ func TestRSAKeyGenNonEphemeral (t * testing.T ) {
593
+ csp := getBCCSP (t )
594
+
595
+ k , err := csp .KeyGen (& bccsp.RSAKeyGenOpts {Temporary : false })
596
+ if err != nil {
597
+ t .Fatalf ("Failed generating RSA key [%s]" , err )
598
+ }
599
+ if k == nil {
600
+ t .Fatal ("Failed generating RSA key. Key must be different from nil" )
601
+ }
602
+ if ! k .Private () {
603
+ t .Fatal ("Failed generating RSA key. Key should be private" )
604
+ }
605
+ if k .Symmetric () {
606
+ t .Fatal ("Failed generating RSA key. Key should be asymmetric" )
607
+ }
608
+ }
609
+
610
+ func TestRSAGetKeyBySKI (t * testing.T ) {
611
+ csp := getBCCSP (t )
612
+
613
+ k , err := csp .KeyGen (& bccsp.RSAKeyGenOpts {Temporary : false })
614
+ if err != nil {
615
+ t .Fatalf ("Failed generating RSA key [%s]" , err )
616
+ }
617
+
618
+ k2 , err := csp .GetKey (k .SKI ())
619
+ if err != nil {
620
+ t .Fatalf ("Failed getting RSA key [%s]" , err )
621
+ }
622
+ if k2 == nil {
623
+ t .Fatal ("Failed getting RSA key. Key must be different from nil" )
624
+ }
625
+ if ! k2 .Private () {
626
+ t .Fatal ("Failed getting RSA key. Key should be private" )
627
+ }
628
+ if k2 .Symmetric () {
629
+ t .Fatal ("Failed getting RSA key. Key should be asymmetric" )
630
+ }
631
+
632
+ // Check that the SKIs are the same
633
+ if ! bytes .Equal (k .SKI (), k2 .SKI ()) {
634
+ t .Fatalf ("SKIs are different [%x]!=[%x]" , k .SKI (), k2 .SKI ())
635
+ }
636
+ }
637
+
638
+ func TestRSAPublicKeyFromPrivateKey (t * testing.T ) {
639
+ csp := getBCCSP (t )
640
+
641
+ k , err := csp .KeyGen (& bccsp.RSAKeyGenOpts {Temporary : true })
642
+ if err != nil {
643
+ t .Fatalf ("Failed generating RSA key [%s]" , err )
644
+ }
645
+
646
+ pk , err := k .PublicKey ()
647
+ if err != nil {
648
+ t .Fatalf ("Failed getting public key from private RSA key [%s]" , err )
649
+ }
650
+ if pk == nil {
651
+ t .Fatal ("Failed getting public key from private RSA key. Key must be different from nil" )
652
+ }
653
+ if pk .Private () {
654
+ t .Fatal ("Failed generating RSA key. Key should be public" )
655
+ }
656
+ if pk .Symmetric () {
657
+ t .Fatal ("Failed generating RSA key. Key should be asymmetric" )
658
+ }
659
+ }
660
+
661
+ func TestRSAPublicKeyBytes (t * testing.T ) {
662
+ csp := getBCCSP (t )
663
+
664
+ k , err := csp .KeyGen (& bccsp.RSAKeyGenOpts {Temporary : true })
665
+ if err != nil {
666
+ t .Fatalf ("Failed generating RSA key [%s]" , err )
667
+ }
668
+
669
+ pk , err := k .PublicKey ()
670
+ if err != nil {
671
+ t .Fatalf ("Failed getting public key from private RSA key [%s]" , err )
672
+ }
673
+
674
+ raw , err := pk .Bytes ()
675
+ if err != nil {
676
+ t .Fatalf ("Failed marshalling RSA public key [%s]" , err )
677
+ }
678
+ if len (raw ) == 0 {
679
+ t .Fatal ("Failed marshalling RSA public key. Zero length" )
680
+ }
681
+ }
682
+
683
+ func TestRSAPublicKeySKI (t * testing.T ) {
684
+ csp := getBCCSP (t )
685
+
686
+ k , err := csp .KeyGen (& bccsp.RSAKeyGenOpts {Temporary : true })
687
+ if err != nil {
688
+ t .Fatalf ("Failed generating RSA key [%s]" , err )
689
+ }
690
+
691
+ pk , err := k .PublicKey ()
692
+ if err != nil {
693
+ t .Fatalf ("Failed getting public key from private RSA key [%s]" , err )
694
+ }
695
+
696
+ ski := pk .SKI ()
697
+ if len (ski ) == 0 {
698
+ t .Fatal ("SKI not valid. Zero length." )
699
+ }
700
+ }
701
+
702
+ func TestRSASign (t * testing.T ) {
703
+ csp := getBCCSP (t )
704
+
705
+ k , err := csp .KeyGen (& bccsp.RSAKeyGenOpts {Temporary : true })
706
+ if err != nil {
707
+ t .Fatalf ("Failed generating RSA key [%s]" , err )
708
+ }
709
+
710
+ msg := []byte ("Hello World" )
711
+
712
+ digest , err := csp .Hash (msg , & bccsp.SHAOpts {})
713
+ if err != nil {
714
+ t .Fatalf ("Failed computing HASH [%s]" , err )
715
+ }
716
+
717
+ signature , err := csp .Sign (k , digest , & rsa.PSSOptions {SaltLength : 32 , Hash : crypto .SHA256 })
718
+ if err != nil {
719
+ t .Fatalf ("Failed generating RSA signature [%s]" , err )
720
+ }
721
+ if len (signature ) == 0 {
722
+ t .Fatal ("Failed generating RSA key. Signature must be different from nil" )
723
+ }
724
+ }
725
+
726
+ func TestRSAVerify (t * testing.T ) {
727
+ csp := getBCCSP (t )
728
+
729
+ k , err := csp .KeyGen (& bccsp.RSAKeyGenOpts {Temporary : true })
730
+ if err != nil {
731
+ t .Fatalf ("Failed generating RSA key [%s]" , err )
732
+ }
733
+
734
+ msg := []byte ("Hello World" )
735
+
736
+ digest , err := csp .Hash (msg , & bccsp.SHAOpts {})
737
+ if err != nil {
738
+ t .Fatalf ("Failed computing HASH [%s]" , err )
739
+ }
740
+
741
+ signature , err := csp .Sign (k , digest , & rsa.PSSOptions {SaltLength : 32 , Hash : crypto .SHA256 })
742
+ if err != nil {
743
+ t .Fatalf ("Failed generating RSA signature [%s]" , err )
744
+ }
745
+
746
+ valid , err := csp .Verify (k , signature , digest , & rsa.PSSOptions {SaltLength : 32 , Hash : crypto .SHA256 })
747
+ if err != nil {
748
+ t .Fatalf ("Failed verifying RSA signature [%s]" , err )
749
+ }
750
+ if ! valid {
751
+ t .Fatal ("Failed verifying RSA signature. Signature not valid." )
752
+ }
753
+ }
0 commit comments