@@ -3,6 +3,8 @@ package channel
3
3
import (
4
4
"bytes"
5
5
"fmt"
6
+ mspclient "github.com/hyperledger/fabric-sdk-go/pkg/client/msp"
7
+ "os"
6
8
7
9
"github.com/golang/protobuf/proto"
8
10
"github.com/hyperledger/fabric-sdk-go/pkg/client/resmgmt"
@@ -18,7 +20,6 @@ import (
18
20
"gopkg.in/yaml.v3"
19
21
20
22
"io"
21
- "io/ioutil"
22
23
)
23
24
24
25
type signUpdateChannelCmd struct {
@@ -58,55 +59,71 @@ func (c *signUpdateChannelCmd) run(out io.Writer) error {
58
59
if err != nil {
59
60
return err
60
61
}
61
- updateEnvelopeBytes , err := ioutil .ReadFile (c .file )
62
+ updateEnvelopeBytes , err := os .ReadFile (c .file )
62
63
if err != nil {
63
64
return err
64
65
}
65
66
configUpdateReader := bytes .NewReader (updateEnvelopeBytes )
66
- sdkConfig , err := sdk .Config ()
67
- if err != nil {
68
- return err
69
- }
70
- cryptoConfig := cryptosuite .ConfigFromBackend (sdkConfig )
71
- cryptoSuite , err := sw .GetSuiteByConfig (cryptoConfig )
72
- if err != nil {
73
- return err
74
- }
75
- userStore := mspimpl .NewMemoryUserStore ()
76
- endpointConfig , err := fab .ConfigFromBackend (sdkConfig )
77
- if err != nil {
78
- return err
79
- }
80
- identityManager , err := mspimpl .NewIdentityManager (c .mspID , userStore , cryptoSuite , endpointConfig )
81
- if err != nil {
82
- return err
83
- }
84
- identityBytes , err := ioutil .ReadFile (c .identity )
85
- if err != nil {
86
- return err
87
- }
88
- id := & identity {}
89
- err = yaml .Unmarshal (identityBytes , id )
90
- if err != nil {
91
- return err
92
- }
93
- signingIdentity , err := identityManager .CreateSigningIdentity (
94
- msp .WithPrivateKey ([]byte (id .Key .Pem )),
95
- msp .WithCert ([]byte (id .Cert .Pem )),
96
- )
97
- if err != nil {
98
- return err
99
- }
100
- signature , err := resClient .CreateConfigSignatureFromReader (signingIdentity , configUpdateReader )
101
- if err != nil {
102
- return err
103
- }
104
- signatureBytes , err := proto .Marshal (signature )
105
- if err != nil {
106
- return err
67
+
68
+ var signatureBytes []byte
69
+
70
+ // use identity file if provided
71
+ if c .identity != "" {
72
+ sdkConfig , err := sdk .Config ()
73
+ if err != nil {
74
+ return err
75
+ }
76
+
77
+ cryptoConfig := cryptosuite .ConfigFromBackend (sdkConfig )
78
+ cryptoSuite , err := sw .GetSuiteByConfig (cryptoConfig )
79
+ if err != nil {
80
+ return err
81
+ }
82
+ userStore := mspimpl .NewMemoryUserStore ()
83
+ endpointConfig , err := fab .ConfigFromBackend (sdkConfig )
84
+ if err != nil {
85
+ return err
86
+ }
87
+ identityManager , err := mspimpl .NewIdentityManager (c .mspID , userStore , cryptoSuite , endpointConfig )
88
+ if err != nil {
89
+ return err
90
+ }
91
+ identityBytes , err := os .ReadFile (c .identity )
92
+ if err != nil {
93
+ return err
94
+ }
95
+ id := & identity {}
96
+ err = yaml .Unmarshal (identityBytes , id )
97
+ if err != nil {
98
+ return err
99
+ }
100
+ signingIdentity , err := identityManager .CreateSigningIdentity (
101
+ msp .WithPrivateKey ([]byte (id .Key .Pem )),
102
+ msp .WithCert ([]byte (id .Cert .Pem )),
103
+ )
104
+ if err != nil {
105
+ return err
106
+ }
107
+ signature , err := resClient .CreateConfigSignatureFromReader (signingIdentity , configUpdateReader )
108
+ if err != nil {
109
+ return err
110
+ }
111
+ signatureBytes , err = proto .Marshal (signature )
112
+ if err != nil {
113
+ return err
114
+ }
115
+ } else {
116
+ mspClient , err := mspclient .New (org1AdminClientContext , mspclient .WithOrg (c .mspID ))
117
+ if err != nil {
118
+ return err
119
+ }
120
+ usr , err := mspClient .GetSigningIdentity (c .userName )
121
+ signature , err := resClient .CreateConfigSignatureFromReader (usr , configUpdateReader )
122
+ signatureBytes , err = proto .Marshal (signature )
107
123
}
124
+
108
125
if c .output != "" {
109
- err = ioutil .WriteFile (c .output , signatureBytes , 0644 )
126
+ err = os .WriteFile (c .output , signatureBytes , 0644 )
110
127
if err != nil {
111
128
return err
112
129
}
0 commit comments