@@ -125,7 +125,7 @@ func (ks *FileBasedKeyStore) GetKey(ski []byte) (k bccsp.Key, err error) {
125
125
// Load the private key
126
126
key , err := ks .loadPrivateKey (hex .EncodeToString (ski ))
127
127
if err != nil {
128
- return nil , fmt .Errorf ("Failed loading key [%x] [%s]" , ski , err )
128
+ return nil , fmt .Errorf ("Failed loading secret key [%x] [%s]" , ski , err )
129
129
}
130
130
131
131
switch key .(type ) {
@@ -134,10 +134,25 @@ func (ks *FileBasedKeyStore) GetKey(ski []byte) (k bccsp.Key, err error) {
134
134
case * rsa.PrivateKey :
135
135
return & rsaPrivateKey {key .(* rsa.PrivateKey )}, nil
136
136
default :
137
- return nil , errors .New ("Key type not recognized" )
137
+ return nil , errors .New ("Secret key type not recognized" )
138
+ }
139
+ case "pk" :
140
+ // Load the public key
141
+ key , err := ks .loadPublicKey (hex .EncodeToString (ski ))
142
+ if err != nil {
143
+ return nil , fmt .Errorf ("Failed loading public key [%x] [%s]" , ski , err )
144
+ }
145
+
146
+ switch key .(type ) {
147
+ case * ecdsa.PublicKey :
148
+ return & ecdsaPublicKey {key .(* ecdsa.PublicKey )}, nil
149
+ case * rsa.PublicKey :
150
+ return & rsaPublicKey {key .(* rsa.PublicKey )}, nil
151
+ default :
152
+ return nil , errors .New ("Public key type not recognized" )
138
153
}
139
154
default :
140
- return nil , errors .New ("Key not recognized" )
155
+ return nil , errors .New ("Key type not recognized" )
141
156
}
142
157
}
143
158
@@ -155,39 +170,39 @@ func (ks *FileBasedKeyStore) StoreKey(k bccsp.Key) (err error) {
155
170
case * ecdsaPrivateKey :
156
171
kk := k .(* ecdsaPrivateKey )
157
172
158
- err = ks .storePrivateKey (hex .EncodeToString (k .SKI ()), kk .k )
173
+ err = ks .storePrivateKey (hex .EncodeToString (k .SKI ()), kk .privKey )
159
174
if err != nil {
160
175
return fmt .Errorf ("Failed storing ECDSA private key [%s]" , err )
161
176
}
162
177
163
178
case * ecdsaPublicKey :
164
179
kk := k .(* ecdsaPublicKey )
165
180
166
- err = ks .storePublicKey (hex .EncodeToString (k .SKI ()), kk .k )
181
+ err = ks .storePublicKey (hex .EncodeToString (k .SKI ()), kk .pubKey )
167
182
if err != nil {
168
183
return fmt .Errorf ("Failed storing ECDSA public key [%s]" , err )
169
184
}
170
185
171
186
case * rsaPrivateKey :
172
187
kk := k .(* rsaPrivateKey )
173
188
174
- err = ks .storePrivateKey (hex .EncodeToString (k .SKI ()), kk .k )
189
+ err = ks .storePrivateKey (hex .EncodeToString (k .SKI ()), kk .privKey )
175
190
if err != nil {
176
191
return fmt .Errorf ("Failed storing RSA private key [%s]" , err )
177
192
}
178
193
179
194
case * rsaPublicKey :
180
195
kk := k .(* rsaPublicKey )
181
196
182
- err = ks .storePublicKey (hex .EncodeToString (k .SKI ()), kk .k )
197
+ err = ks .storePublicKey (hex .EncodeToString (k .SKI ()), kk .pubKey )
183
198
if err != nil {
184
199
return fmt .Errorf ("Failed storing RSA public key [%s]" , err )
185
200
}
186
201
187
202
case * aesPrivateKey :
188
203
kk := k .(* aesPrivateKey )
189
204
190
- err = ks .storeKey (hex .EncodeToString (k .SKI ()), kk .k )
205
+ err = ks .storeKey (hex .EncodeToString (k .SKI ()), kk .privKey )
191
206
if err != nil {
192
207
return fmt .Errorf ("Failed storing AES key [%s]" , err )
193
208
}
@@ -219,10 +234,6 @@ func (ks *FileBasedKeyStore) getSuffix(alias string) string {
219
234
}
220
235
221
236
func (ks * FileBasedKeyStore ) storePrivateKey (alias string , privateKey interface {}) error {
222
- if ks .readOnly {
223
- return errors .New ("Read only KeyStore." )
224
- }
225
-
226
237
rawKey , err := primitives .PrivateKeyToPEM (privateKey , ks .pwd )
227
238
if err != nil {
228
239
logger .Errorf ("Failed converting private key to PEM [%s]: [%s]" , alias , err )
@@ -239,10 +250,6 @@ func (ks *FileBasedKeyStore) storePrivateKey(alias string, privateKey interface{
239
250
}
240
251
241
252
func (ks * FileBasedKeyStore ) storePublicKey (alias string , publicKey interface {}) error {
242
- if ks .readOnly {
243
- return errors .New ("Read only KeyStore." )
244
- }
245
-
246
253
rawKey , err := primitives .PublicKeyToPEM (publicKey , ks .pwd )
247
254
if err != nil {
248
255
logger .Errorf ("Failed converting public key to PEM [%s]: [%s]" , alias , err )
@@ -259,10 +266,6 @@ func (ks *FileBasedKeyStore) storePublicKey(alias string, publicKey interface{})
259
266
}
260
267
261
268
func (ks * FileBasedKeyStore ) storeKey (alias string , key []byte ) error {
262
- if ks .readOnly {
263
- return errors .New ("Read only KeyStore." )
264
- }
265
-
266
269
pem , err := primitives .AEStoEncryptedPEM (key , ks .pwd )
267
270
if err != nil {
268
271
logger .Errorf ("Failed converting key to PEM [%s]: [%s]" , alias , err )
0 commit comments