diff --git a/cmd/common/signer/signer.go b/cmd/common/signer/signer.go index ff330cb6b3d..710537104f9 100644 --- a/cmd/common/signer/signer.go +++ b/cmd/common/signer/signer.go @@ -79,11 +79,11 @@ func loadPrivateKey(file string) (*ecdsa.PrivateKey, error) { } bl, _ := pem.Decode(b) if bl == nil { - return nil, errors.Errorf("%s: wrong PEM encoding", file) + return nil, errors.Errorf("failed to decode PEM block from %s", file) } key, err := x509.ParsePKCS8PrivateKey(bl.Bytes) if err != nil { - return nil, errors.WithStack(err) + return nil, errors.Wrapf(err, "failed to parse private key from %s", file) } return key.(*ecdsa.PrivateKey), nil } diff --git a/cmd/common/signer/signer_test.go b/cmd/common/signer/signer_test.go index fb9bac5c569..962098b411d 100644 --- a/cmd/common/signer/signer_test.go +++ b/cmd/common/signer/signer_test.go @@ -41,7 +41,7 @@ func TestSignerBadConfig(t *testing.T) { } signer, err := NewSigner(conf) - assert.Contains(t, err.Error(), "open testdata/signer/non_existent_cert: no such file or directory") + assert.EqualError(t, err, "open testdata/signer/non_existent_cert: no such file or directory") assert.Nil(t, signer) conf = Config{ @@ -51,7 +51,7 @@ func TestSignerBadConfig(t *testing.T) { } signer, err = NewSigner(conf) - assert.Contains(t, err.Error(), "open testdata/signer/non_existent_cert: no such file or directory") + assert.EqualError(t, err, "open testdata/signer/non_existent_cert: no such file or directory") assert.Nil(t, signer) conf = Config{ @@ -61,6 +61,16 @@ func TestSignerBadConfig(t *testing.T) { } signer, err = NewSigner(conf) - assert.Contains(t, err.Error(), "testdata/signer/broken_private_key: wrong PEM encoding") + assert.EqualError(t, err, "failed to decode PEM block from testdata/signer/broken_private_key") + assert.Nil(t, signer) + + conf = Config{ + MSPID: "SampleOrg", + IdentityPath: filepath.Join("testdata", "signer", "cert.pem"), + KeyPath: filepath.Join("testdata", "signer", "empty_private_key"), + } + + signer, err = NewSigner(conf) + assert.EqualError(t, err, "failed to parse private key from testdata/signer/empty_private_key: asn1: syntax error: sequence truncated") assert.Nil(t, signer) } diff --git a/cmd/common/signer/testdata/signer/empty_private_key b/cmd/common/signer/testdata/signer/empty_private_key new file mode 100644 index 00000000000..f5518e2571b --- /dev/null +++ b/cmd/common/signer/testdata/signer/empty_private_key @@ -0,0 +1,2 @@ +-----BEGIN PRIVATE KEY----- +-----END PRIVATE KEY-----