@@ -22,6 +22,8 @@ import (
22
22
"math/big"
23
23
"testing"
24
24
25
+ "github.com/hyperledger/fabric/bccsp"
26
+ "github.com/hyperledger/fabric/bccsp/mocks"
25
27
"github.com/hyperledger/fabric/bccsp/utils"
26
28
"github.com/stretchr/testify/assert"
27
29
)
@@ -476,3 +478,63 @@ func TestVariousAESKeyEncoding(t *testing.T) {
476
478
t .Fatalf ("Failed converting encrypted PEM to AES key. Keys are different [%x][%x]" , key , keyFromPEM )
477
479
}
478
480
}
481
+
482
+ func TestPkcs7UnPaddingInvalidInputs (t * testing.T ) {
483
+ _ , err := pkcs7UnPadding ([]byte {1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 })
484
+ assert .Error (t , err )
485
+ assert .Equal (t , "Invalid pkcs7 padding (pad[i] != unpadding)" , err .Error ())
486
+ }
487
+
488
+ func TestAESCBCEncryptInvalidInputs (t * testing.T ) {
489
+ _ , err := aesCBCEncrypt (nil , []byte {0 , 1 , 2 , 3 })
490
+ assert .Error (t , err )
491
+ assert .Equal (t , "Invalid plaintext. It must be a multiple of the block size" , err .Error ())
492
+
493
+ _ , err = aesCBCEncrypt ([]byte {0 }, []byte {1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 })
494
+ assert .Error (t , err )
495
+ }
496
+
497
+ func TestAESCBCDecryptInvalidInputs (t * testing.T ) {
498
+ _ , err := aesCBCDecrypt ([]byte {0 }, []byte {1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 })
499
+ assert .Error (t , err )
500
+
501
+ _ , err = aesCBCDecrypt ([]byte {1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 }, []byte {0 })
502
+ assert .Error (t , err )
503
+
504
+ _ , err = aesCBCDecrypt ([]byte {1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 },
505
+ []byte {1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 })
506
+ assert .Error (t , err )
507
+ }
508
+
509
+ // TestAESCBCPKCS7EncryptorDecrypt tests the integration of
510
+ // aescbcpkcs7Encryptor and aescbcpkcs7Decryptor
511
+ func TestAESCBCPKCS7EncryptorDecrypt (t * testing.T ) {
512
+ raw , err := GetRandomBytes (32 )
513
+ assert .NoError (t , err )
514
+
515
+ k := & aesPrivateKey {privKey : raw , exportable : false }
516
+
517
+ msg := []byte ("Hello World" )
518
+ encryptor := & aescbcpkcs7Encryptor {}
519
+
520
+ _ , err = encryptor .Encrypt (k , msg , nil )
521
+ assert .Error (t , err )
522
+
523
+ _ , err = encryptor .Encrypt (k , msg , & mocks.EncrypterOpts {})
524
+ assert .Error (t , err )
525
+
526
+ ct , err := encryptor .Encrypt (k , msg , & bccsp.AESCBCPKCS7ModeOpts {})
527
+ assert .NoError (t , err )
528
+
529
+ decryptor := & aescbcpkcs7Decryptor {}
530
+
531
+ _ , err = decryptor .Decrypt (k , ct , nil )
532
+ assert .Error (t , err )
533
+
534
+ _ , err = decryptor .Decrypt (k , ct , & mocks.EncrypterOpts {})
535
+ assert .Error (t , err )
536
+
537
+ msg2 , err := decryptor .Decrypt (k , ct , & bccsp.AESCBCPKCS7ModeOpts {})
538
+ assert .NoError (t , err )
539
+ assert .Equal (t , msg , msg2 )
540
+ }
0 commit comments