Skip to content
This repository was archived by the owner on Apr 25, 2025. It is now read-only.

Commit ac89b89

Browse files
author
Aleksandar Likic
committed
[FAB-8195] Loading embedded certs is broken
Change-Id: I3207cbd64b426070c00fed5b4c5e0506b1caf72c Signed-off-by: Aleksandar Likic <aleksandar.likic@securekey.com>
1 parent 3aee528 commit ac89b89

File tree

2 files changed

+61
-23
lines changed

2 files changed

+61
-23
lines changed

pkg/fabric-client/credentialmgr/credentialmgr.go

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -94,31 +94,31 @@ func (mgr *CredentialManager) GetSigningIdentity(userName string) (*apifabclient
9494
return nil, errors.New("username is required")
9595
}
9696

97-
privateKey, err := mgr.getEmbeddedPrivateKey(userName)
97+
certBytes, err := mgr.getEmbeddedCertBytes(userName)
98+
9899
if err != nil {
99-
return nil, errors.WithMessage(err, "fetching embedded private key failed")
100+
return nil, errors.WithMessage(err, "fetching embedded cert failed")
100101
}
101102

102-
mspID, err := mgr.config.MspID(mgr.orgName)
103+
if certBytes == nil {
104+
certBytes, err = mgr.getStoredCertBytes(userName)
105+
106+
if err != nil {
107+
return nil, errors.WithMessage(err, "fetching cert from store failed")
108+
}
109+
}
110+
111+
if certBytes == nil {
112+
return nil, fmt.Errorf("cert not found for user [%s]", userName)
113+
}
114+
115+
privateKey, err := mgr.getEmbeddedPrivateKey(userName)
116+
103117
if err != nil {
104-
return nil, errors.WithMessage(err, "MSP ID config read failed")
118+
return nil, errors.WithMessage(err, "fetching embedded private key failed")
105119
}
106120

107-
var certBytes []byte
108121
if privateKey == nil {
109-
certBytes, err = mgr.getEmbeddedCertBytes(userName)
110-
if err != nil {
111-
return nil, errors.WithMessage(err, "fetching enbedded cert failed")
112-
}
113-
if certBytes == nil {
114-
certBytes, err = mgr.getStoredCertBytes(userName)
115-
if err != nil {
116-
return nil, errors.WithMessage(err, "fetching cert from store failed")
117-
}
118-
}
119-
if certBytes == nil {
120-
return nil, fmt.Errorf("cert not found for user [%s]", userName)
121-
}
122122
privateKey, err = mgr.getPivateKeyFromCert(userName, certBytes)
123123
if err != nil {
124124
return nil, errors.Wrapf(err, "getting private key from cert failed")
@@ -129,6 +129,12 @@ func (mgr *CredentialManager) GetSigningIdentity(userName string) (*apifabclient
129129
return nil, fmt.Errorf("unable to find private key for user [%s]", userName)
130130
}
131131

132+
mspID, err := mgr.config.MspID(mgr.orgName)
133+
134+
if err != nil {
135+
return nil, errors.WithMessage(err, "MSP ID config read failed")
136+
}
137+
132138
signingIdentity := &apifabclient.SigningIdentity{MspID: mspID, PrivateKey: privateKey, EnrollmentCert: certBytes}
133139

134140
return signingIdentity, nil

pkg/fabric-client/credentialmgr/credentialmgr_test.go

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ package credentialmgr
99
import (
1010
"testing"
1111

12+
"github.com/hyperledger/fabric-sdk-go/api/apifabclient"
1213
"github.com/hyperledger/fabric-sdk-go/pkg/config"
1314
"github.com/hyperledger/fabric-sdk-go/pkg/cryptosuite"
1415
fcmocks "github.com/hyperledger/fabric-sdk-go/pkg/fabric-client/mocks"
16+
"github.com/pkg/errors"
1517
)
1618

1719
func TestCredentialManager(t *testing.T) {
@@ -36,11 +38,29 @@ func TestCredentialManager(t *testing.T) {
3638
t.Fatalf("Should have failed to retrieve signing identity for non-existent user")
3739
}
3840

39-
_, err = credentialMgr.GetSigningIdentity("User1")
41+
id, err := credentialMgr.GetSigningIdentity("User1")
4042
if err != nil {
4143
t.Fatalf("Failed to retrieve signing identity: %s", err)
4244
}
45+
if err := checkSigningIdentity(id); err != nil {
46+
t.Fatalf("checkSigningIdentity failes: %s", err)
47+
}
48+
}
4349

50+
func checkSigningIdentity(id *apifabclient.SigningIdentity) error {
51+
if id == nil {
52+
return errors.New("SigningIdentity is nil")
53+
}
54+
if id.EnrollmentCert == nil {
55+
return errors.New("Enrollment cert is missing")
56+
}
57+
if id.MspID == "" {
58+
return errors.New("MspID is missing")
59+
}
60+
if id.PrivateKey == nil {
61+
return errors.New("private key is missing")
62+
}
63+
return nil
4464
}
4565

4666
func TestInvalidOrgCredentialManager(t *testing.T) {
@@ -80,23 +100,35 @@ func TestCredentialManagerFromEmbeddedCryptoConfig(t *testing.T) {
80100
t.Fatalf("Should have failed to retrieve signing identity for non-existent user")
81101
}
82102

83-
_, err = credentialMgr.GetSigningIdentity("EmbeddedUser")
103+
id, err := credentialMgr.GetSigningIdentity("EmbeddedUser")
84104
if err != nil {
85105
t.Fatalf("Failed to retrieve signing identity: %+v", err)
86106
}
107+
if err := checkSigningIdentity(id); err != nil {
108+
t.Fatalf("checkSigningIdentity failes: %s", err)
109+
}
87110

88-
_, err = credentialMgr.GetSigningIdentity("EmbeddedUserWithPaths")
111+
id, err = credentialMgr.GetSigningIdentity("EmbeddedUserWithPaths")
89112
if err != nil {
90113
t.Fatalf("Failed to retrieve signing identity: %+v", err)
91114
}
115+
if err := checkSigningIdentity(id); err != nil {
116+
t.Fatalf("checkSigningIdentity failes: %s", err)
117+
}
92118

93-
_, err = credentialMgr.GetSigningIdentity("EmbeddedUserMixed")
119+
id, err = credentialMgr.GetSigningIdentity("EmbeddedUserMixed")
94120
if err != nil {
95121
t.Fatalf("Failed to retrieve signing identity: %+v", err)
96122
}
123+
if err := checkSigningIdentity(id); err != nil {
124+
t.Fatalf("checkSigningIdentity failes: %s", err)
125+
}
97126

98-
_, err = credentialMgr.GetSigningIdentity("EmbeddedUserMixed2")
127+
id, err = credentialMgr.GetSigningIdentity("EmbeddedUserMixed2")
99128
if err != nil {
100129
t.Fatalf("Failed to retrieve signing identity: %+v", err)
101130
}
131+
if err := checkSigningIdentity(id); err != nil {
132+
t.Fatalf("checkSigningIdentity failes: %s", err)
133+
}
102134
}

0 commit comments

Comments
 (0)