Skip to content

Commit a1d5291

Browse files
author
John Harrison
committed
[FAB-3772] Add additional UTs for pkcs11 package
This CR adds additonal UTs for the pkcs11 package and also renames one of the test files that did not match any of the package source files. This gave an erroneous total coverage number. With the file rename, this should resolve the code coverage number issue. Change-Id: I2da8f5e4b68962cfdb4c02ff2ecef714648b2394 Signed-off-by: John Harrison <[email protected]>
1 parent 5ba27bf commit a1d5291

File tree

4 files changed

+105
-1
lines changed

4 files changed

+105
-1
lines changed

bccsp/pkcs11/ecdsa_test.go

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/*
2+
Copyright IBM Corp. 2017 All Rights Reserved.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package pkcs11
18+
19+
import (
20+
"math/big"
21+
"testing"
22+
23+
"github.com/stretchr/testify/assert"
24+
)
25+
26+
func TestUnmarshalECDSASignature(t *testing.T) {
27+
_, _, err := unmarshalECDSASignature(nil)
28+
assert.Error(t, err)
29+
assert.Contains(t, err.Error(), "Failed unmashalling signature [")
30+
31+
_, _, err = unmarshalECDSASignature([]byte{})
32+
assert.Error(t, err)
33+
assert.Contains(t, err.Error(), "Failed unmashalling signature [")
34+
35+
_, _, err = unmarshalECDSASignature([]byte{0})
36+
assert.Error(t, err)
37+
assert.Contains(t, err.Error(), "Failed unmashalling signature [")
38+
39+
sigma, err := marshalECDSASignature(big.NewInt(-1), big.NewInt(1))
40+
assert.NoError(t, err)
41+
_, _, err = unmarshalECDSASignature(sigma)
42+
assert.Error(t, err)
43+
assert.Contains(t, err.Error(), "Invalid signature. R must be larger than zero")
44+
45+
sigma, err = marshalECDSASignature(big.NewInt(0), big.NewInt(1))
46+
assert.NoError(t, err)
47+
_, _, err = unmarshalECDSASignature(sigma)
48+
assert.Error(t, err)
49+
assert.Contains(t, err.Error(), "Invalid signature. R must be larger than zero")
50+
51+
sigma, err = marshalECDSASignature(big.NewInt(1), big.NewInt(0))
52+
assert.NoError(t, err)
53+
_, _, err = unmarshalECDSASignature(sigma)
54+
assert.Error(t, err)
55+
assert.Contains(t, err.Error(), "Invalid signature. S must be larger than zero")
56+
57+
sigma, err = marshalECDSASignature(big.NewInt(1), big.NewInt(-1))
58+
assert.NoError(t, err)
59+
_, _, err = unmarshalECDSASignature(sigma)
60+
assert.Error(t, err)
61+
assert.Contains(t, err.Error(), "Invalid signature. S must be larger than zero")
62+
63+
sigma, err = marshalECDSASignature(big.NewInt(1), big.NewInt(1))
64+
assert.NoError(t, err)
65+
R, S, err := unmarshalECDSASignature(sigma)
66+
assert.NoError(t, err)
67+
assert.Equal(t, big.NewInt(1), R)
68+
assert.Equal(t, big.NewInt(1), S)
69+
}

bccsp/pkcs11/keyimport_test.go bccsp/pkcs11/ecdsakey_test.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,11 @@ func TestECDSAPKIXPublicKeyImportOptsKeyImporter(t *testing.T) {
6060
}
6161

6262
func TestECDSAPrivateKeyImportOptsKeyImporter(t *testing.T) {
63+
if currentBCCSP.(*impl).noPrivImport {
64+
t.Skip("Key import turned off. Skipping Private Key Importer tests as they currently require Key Import.")
65+
}
66+
6367
ki := currentBCCSP
64-
ki.(*impl).noPrivImport = false
6568

6669
_, err := ki.KeyImport("Hello World", &bccsp.ECDSAPrivateKeyImportOpts{})
6770
assert.Error(t, err)

bccsp/pkcs11/impl_test.go

+28
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,14 @@ func TestECDSASign(t *testing.T) {
636636
if len(signature) == 0 {
637637
t.Fatal("Failed generating ECDSA key. Signature must be different from nil")
638638
}
639+
640+
_, err = currentBCCSP.Sign(nil, digest, nil)
641+
assert.Error(t, err)
642+
assert.Contains(t, err.Error(), "Invalid Key. It must not be nil.")
643+
644+
_, err = currentBCCSP.Sign(k, nil, nil)
645+
assert.Error(t, err)
646+
assert.Contains(t, err.Error(), "Invalid digest. Cannot be empty.")
639647
}
640648

641649
func TestECDSAVerify(t *testing.T) {
@@ -678,6 +686,18 @@ func TestECDSAVerify(t *testing.T) {
678686
t.Fatal("Failed verifying ECDSA signature. Signature not valid.")
679687
}
680688

689+
_, err = currentBCCSP.Verify(nil, signature, digest, nil)
690+
assert.Error(t, err)
691+
assert.Contains(t, err.Error(), "Invalid Key. It must not be nil.")
692+
693+
_, err = currentBCCSP.Verify(pk, nil, digest, nil)
694+
assert.Error(t, err)
695+
assert.Contains(t, err.Error(), "Invalid signature. Cannot be empty.")
696+
697+
_, err = currentBCCSP.Verify(pk, signature, nil, nil)
698+
assert.Error(t, err)
699+
assert.Contains(t, err.Error(), "Invalid digest. Cannot be empty.")
700+
681701
// Import the exported public key
682702
pkRaw, err := pk.Bytes()
683703
if err != nil {
@@ -720,6 +740,14 @@ func TestECDSAKeyDeriv(t *testing.T) {
720740
t.Fatalf("Failed re-randomizing ECDSA key [%s]", err)
721741
}
722742

743+
_, err = currentBCCSP.KeyDeriv(nil, &bccsp.ECDSAReRandKeyOpts{Temporary: false, Expansion: []byte{1}})
744+
assert.Error(t, err)
745+
assert.Contains(t, err.Error(), "Invalid Key. It must not be nil.")
746+
747+
_, err = currentBCCSP.KeyDeriv(k, nil)
748+
assert.Error(t, err)
749+
assert.Contains(t, err.Error(), "Invalid Opts parameter. It must not be nil.")
750+
723751
msg := []byte("Hello World")
724752

725753
digest, err := currentBCCSP.Hash(msg, &bccsp.SHAOpts{})

bccsp/pkcs11/pkcs11_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,10 @@ func TestPKCS11ECKeySignVerify(t *testing.T) {
174174
t.Fatalf("Failed signing message [%s]", err)
175175
}
176176

177+
_, _, err = currentBCCSP.(*impl).signP11ECDSA(nil, hash1)
178+
assert.Error(t, err)
179+
assert.Contains(t, err.Error(), "Private key not found")
180+
177181
pass, err := currentBCCSP.(*impl).verifyP11ECDSA(key, hash1, R, S, currentTestConfig.securityLevel/8)
178182
if err != nil {
179183
t.Fatalf("Error verifying message 1 [%s]", err)

0 commit comments

Comments
 (0)