Skip to content

Commit d953960

Browse files
author
Volodymyr Paprotski
committed
BCCSP Filebased Keystore flexible file names
Pem files are very useful to be used directly by users. Lets make the file names more human-readable. Change-Id: I14d41d2f2e0c163b5cb1a15ef5ba26f0bd779285 Signed-off-by: Volodymyr Paprotski <[email protected]>
1 parent 48d19be commit d953960

File tree

3 files changed

+66
-2
lines changed

3 files changed

+66
-2
lines changed

bccsp/pkcs11/fileks.go

+32-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ limitations under the License.
1616
package pkcs11
1717

1818
import (
19+
"bytes"
1920
"crypto/rsa"
2021
"encoding/hex"
2122
"errors"
@@ -143,7 +144,7 @@ func (ks *FileBasedKeyStore) GetKey(ski []byte) (k bccsp.Key, err error) {
143144
return nil, errors.New("Public key type not recognized")
144145
}
145146
default:
146-
return nil, errors.New("Key type not recognized")
147+
return ks.searchKeystoreForSKI(ski)
147148
}
148149
}
149150

@@ -189,6 +190,36 @@ func (ks *FileBasedKeyStore) StoreKey(k bccsp.Key) (err error) {
189190
return
190191
}
191192

193+
func (ks *FileBasedKeyStore) searchKeystoreForSKI(ski []byte) (k bccsp.Key, err error) {
194+
195+
files, _ := ioutil.ReadDir(ks.path)
196+
for _, f := range files {
197+
if f.IsDir() {
198+
continue
199+
}
200+
raw, err := ioutil.ReadFile(filepath.Join(ks.path, f.Name()))
201+
202+
key, err := utils.PEMtoPrivateKey(raw, ks.pwd)
203+
if err != nil {
204+
continue
205+
}
206+
207+
switch key.(type) {
208+
case *rsa.PrivateKey:
209+
k = &rsaPrivateKey{key.(*rsa.PrivateKey)}
210+
default:
211+
continue
212+
}
213+
214+
if !bytes.Equal(k.SKI(), ski) {
215+
continue
216+
}
217+
218+
return k, nil
219+
}
220+
return nil, errors.New("Key type not recognized")
221+
}
222+
192223
func (ks *FileBasedKeyStore) getSuffix(alias string) string {
193224
files, _ := ioutil.ReadDir(ks.path)
194225
for _, f := range files {

bccsp/sw/fileks.go

+34-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ limitations under the License.
1616
package sw
1717

1818
import (
19+
"bytes"
1920
"io/ioutil"
2021
"os"
2122
"sync"
@@ -159,7 +160,7 @@ func (ks *fileBasedKeyStore) GetKey(ski []byte) (k bccsp.Key, err error) {
159160
return nil, errors.New("Public key type not recognized")
160161
}
161162
default:
162-
return nil, errors.New("Key type not recognized")
163+
return ks.searchKeystoreForSKI(ski)
163164
}
164165
}
165166

@@ -221,6 +222,38 @@ func (ks *fileBasedKeyStore) StoreKey(k bccsp.Key) (err error) {
221222
return
222223
}
223224

225+
func (ks *fileBasedKeyStore) searchKeystoreForSKI(ski []byte) (k bccsp.Key, err error) {
226+
227+
files, _ := ioutil.ReadDir(ks.path)
228+
for _, f := range files {
229+
if f.IsDir() {
230+
continue
231+
}
232+
raw, err := ioutil.ReadFile(filepath.Join(ks.path, f.Name()))
233+
234+
key, err := utils.PEMtoPrivateKey(raw, ks.pwd)
235+
if err != nil {
236+
continue
237+
}
238+
239+
switch key.(type) {
240+
case *ecdsa.PrivateKey:
241+
k = &ecdsaPrivateKey{key.(*ecdsa.PrivateKey)}
242+
case *rsa.PrivateKey:
243+
k = &rsaPrivateKey{key.(*rsa.PrivateKey)}
244+
default:
245+
continue
246+
}
247+
248+
if !bytes.Equal(k.SKI(), ski) {
249+
continue
250+
}
251+
252+
return k, nil
253+
}
254+
return nil, errors.New("Key type not recognized")
255+
}
256+
224257
func (ks *fileBasedKeyStore) getSuffix(alias string) string {
225258
files, _ := ioutil.ReadDir(ks.path)
226259
for _, f := range files {

0 commit comments

Comments
 (0)