@@ -36,7 +36,7 @@ func GenerateLocalMSP(baseDir, name string, sans []string, rootCA *ca.CA) error
36
36
mspDir := filepath .Join (baseDir , "msp" )
37
37
tlsDir := filepath .Join (baseDir , "tls" )
38
38
39
- err := createFolderStructure (mspDir )
39
+ err := createFolderStructure (mspDir , true )
40
40
if err != nil {
41
41
return err
42
42
}
@@ -46,6 +46,9 @@ func GenerateLocalMSP(baseDir, name string, sans []string, rootCA *ca.CA) error
46
46
return err
47
47
}
48
48
49
+ /*
50
+ Create the MSP identity artifacts
51
+ */
49
52
// get keystore path
50
53
keystore := filepath .Join (mspDir , "keystore" )
51
54
@@ -55,26 +58,24 @@ func GenerateLocalMSP(baseDir, name string, sans []string, rootCA *ca.CA) error
55
58
return err
56
59
}
57
60
58
- // get public signing certificate
61
+ // get public key
59
62
ecPubKey , err := csp .GetECPublicKey (priv )
60
63
if err != nil {
61
64
return err
62
65
}
63
-
64
- cert , err := rootCA .SignCertificate (filepath .Join (mspDir , "signcerts" ), name , sans , ecPubKey )
66
+ // generate X509 certificate
67
+ cert , err := rootCA .SignCertificate (filepath .Join (mspDir , "signcerts" ),
68
+ name , []string {}, ecPubKey , x509 .KeyUsageDigitalSignature , []x509.ExtKeyUsage {})
65
69
if err != nil {
66
70
return err
67
71
}
68
72
69
73
// write artifacts to MSP folders
70
74
71
75
// the CA certificate goes into cacerts
72
- folders := []string {"cacerts" }
73
- for _ , folder := range folders {
74
- err = x509Export (filepath .Join (mspDir , folder , x509Filename (rootCA .Name )), rootCA .SignCert )
75
- if err != nil {
76
- return err
77
- }
76
+ err = x509Export (filepath .Join (mspDir , "cacerts" , x509Filename (rootCA .Name )), rootCA .SignCert )
77
+ if err != nil {
78
+ return err
78
79
}
79
80
80
81
// the signing identity goes into admincerts.
@@ -84,26 +85,46 @@ func GenerateLocalMSP(baseDir, name string, sans []string, rootCA *ca.CA) error
84
85
// cleared up anyway by copyAdminCert, but
85
86
// we leave a valid admin for now for the sake
86
87
// of unit tests
87
- folders = []string {"admincerts" }
88
- for _ , folder := range folders {
89
- err = x509Export (filepath .Join (mspDir , folder , x509Filename (rootCA .Name )), cert )
90
- if err != nil {
91
- return err
92
- }
88
+ err = x509Export (filepath .Join (mspDir , "admincerts" , x509Filename (name )), cert )
89
+ if err != nil {
90
+ return err
93
91
}
94
92
95
- // write artifacts to TLS folder
93
+ /*
94
+ Generate the TLS artifacts in the TLS folder
95
+ */
96
+
97
+ // generate private key
98
+ tlsPrivKey , _ , err := csp .GeneratePrivateKey (tlsDir )
99
+ if err != nil {
100
+ return err
101
+ }
102
+ // get public key
103
+ tlsPubKey , err := csp .GetECPublicKey (tlsPrivKey )
104
+ if err != nil {
105
+ return err
106
+ }
107
+ // generate X509 certificate
108
+ _ , err = rootCA .SignCertificate (filepath .Join (tlsDir ),
109
+ name , sans , tlsPubKey , x509 .KeyUsageDigitalSignature | x509 .KeyUsageKeyEncipherment ,
110
+ []x509.ExtKeyUsage {x509 .ExtKeyUsageServerAuth , x509 .ExtKeyUsageClientAuth })
111
+ if err != nil {
112
+ return err
113
+ }
96
114
err = x509Export (filepath .Join (tlsDir , "ca.crt" ), rootCA .SignCert )
97
115
if err != nil {
98
116
return err
99
117
}
100
118
101
- err = x509Export (filepath .Join (tlsDir , "server.crt" ), cert )
119
+ // rename the generated TLS X509 cert
120
+ err = os .Rename (filepath .Join (tlsDir , x509Filename (name )),
121
+ filepath .Join (tlsDir , "server.crt" ))
122
+ //err = x509Export(filepath.Join(tlsDir, "server.crt"), tlsCert)
102
123
if err != nil {
103
124
return err
104
125
}
105
126
106
- err = keyExport (keystore , filepath .Join (tlsDir , "server.key" ), priv )
127
+ err = keyExport (tlsDir , filepath .Join (tlsDir , "server.key" ), tlsPrivKey )
107
128
if err != nil {
108
129
return err
109
130
}
@@ -114,10 +135,11 @@ func GenerateLocalMSP(baseDir, name string, sans []string, rootCA *ca.CA) error
114
135
func GenerateVerifyingMSP (baseDir string , rootCA * ca.CA ) error {
115
136
116
137
// create folder structure
117
- err := createFolderStructure (baseDir )
138
+ err := createFolderStructure (baseDir , false )
118
139
if err == nil {
119
140
// write MSP cert to appropriate folders
120
- folders := []string {"cacerts" , "signcerts" }
141
+ //folders := []string{"cacerts", "signcerts"}
142
+ folders := []string {"cacerts" }
121
143
for _ , folder := range folders {
122
144
err = x509Export (filepath .Join (baseDir , folder , x509Filename (rootCA .Name )), rootCA .SignCert )
123
145
if err != nil {
@@ -137,22 +159,26 @@ func GenerateVerifyingMSP(baseDir string, rootCA *ca.CA) error {
137
159
if err != nil {
138
160
return err
139
161
}
140
- _ , err = rootCA .SignCertificate (filepath .Join (baseDir , "admincerts" ), rootCA .Name , []string {"" }, ecPubKey )
162
+ _ , err = rootCA .SignCertificate (filepath .Join (baseDir , "admincerts" ), rootCA .Name ,
163
+ []string {"" }, ecPubKey , x509 .KeyUsageDigitalSignature , []x509.ExtKeyUsage {})
141
164
if err != nil {
142
165
return err
143
166
}
144
167
145
168
return nil
146
169
}
147
170
148
- func createFolderStructure (rootDir string ) error {
171
+ func createFolderStructure (rootDir string , local bool ) error {
149
172
173
+ var folders []string
150
174
// create admincerts, cacerts, keystore and signcerts folders
151
- folders : = []string {
175
+ folders = []string {
152
176
filepath .Join (rootDir , "admincerts" ),
153
177
filepath .Join (rootDir , "cacerts" ),
154
- filepath .Join (rootDir , "keystore" ),
155
- filepath .Join (rootDir , "signcerts" ),
178
+ }
179
+ if local {
180
+ folders = append (folders , filepath .Join (rootDir , "keystore" ),
181
+ filepath .Join (rootDir , "signcerts" ))
156
182
}
157
183
158
184
for _ , folder := range folders {
@@ -195,7 +221,7 @@ func copyFile(src, dst string) error {
195
221
func keyExport (keystore , output string , key bccsp.Key ) error {
196
222
id := hex .EncodeToString (key .SKI ())
197
223
198
- return copyFile (filepath .Join (keystore , id + "_sk" ), output )
224
+ return os . Rename (filepath .Join (keystore , id + "_sk" ), output )
199
225
}
200
226
201
227
func pemExport (path , pemType string , bytes []byte ) error {
0 commit comments