Expose new and list via cli

This commit is contained in:
Ethan Frey
2017-02-28 18:52:52 +01:00
parent 78bb9f9cd8
commit 506ff7d85a
16 changed files with 173 additions and 80 deletions
+4 -4
View File
@@ -21,7 +21,7 @@ func (es encryptedStorage) Put(name, pass string, key crypto.PrivKey) error {
return es.store.Put(name, secret, ki)
}
func (es encryptedStorage) Get(name, pass string) (crypto.PrivKey, keys.KeyInfo, error) {
func (es encryptedStorage) Get(name, pass string) (crypto.PrivKey, keys.Info, error) {
secret, info, err := es.store.Get(name)
if err != nil {
return nil, info, err
@@ -30,7 +30,7 @@ func (es encryptedStorage) Get(name, pass string) (crypto.PrivKey, keys.KeyInfo,
return key, info, err
}
func (es encryptedStorage) List() ([]keys.KeyInfo, error) {
func (es encryptedStorage) List() (keys.Infos, error) {
return es.store.List()
}
@@ -39,8 +39,8 @@ func (es encryptedStorage) Delete(name string) error {
}
// info hardcodes the encoding of keys
func info(name string, key crypto.PrivKey) keys.KeyInfo {
return keys.KeyInfo{
func info(name string, key crypto.PrivKey) keys.Info {
return keys.Info{
Name: name,
PubKey: crypto.PubKeyS{key.PubKey()},
}
+8 -8
View File
@@ -24,28 +24,28 @@ func (s Manager) assertSigner() keys.Signer {
return s
}
// exists just to make sure we fulfill the KeyManager interface
func (s Manager) assertKeyManager() keys.KeyManager {
// exists just to make sure we fulfill the Manager interface
func (s Manager) assertKeyManager() keys.Manager {
return s
}
// Create adds a new key to the storage engine, returning error if
// another key already stored under this name
func (s Manager) Create(name, passphrase string) error {
func (s Manager) Create(name, passphrase string) (keys.Info, error) {
key := s.gen.Generate()
return s.es.Put(name, passphrase, key)
err := s.es.Put(name, passphrase, key)
return info(name, key), err
}
// List loads the keys from the storage and enforces alphabetical order
func (s Manager) List() (keys.KeyInfos, error) {
k, err := s.es.List()
res := keys.KeyInfos(k)
func (s Manager) List() (keys.Infos, error) {
res, err := s.es.List()
res.Sort()
return res, err
}
// Get returns the public information about one key
func (s Manager) Get(name string) (keys.KeyInfo, error) {
func (s Manager) Get(name string) (keys.Info, error) {
_, info, err := s.es.store.Get(name)
return info, err
}
+4 -3
View File
@@ -31,9 +31,10 @@ func TestKeyManagement(t *testing.T) {
// create some keys
_, err = cstore.Get(n1)
assert.NotNil(err)
err = cstore.Create(n1, p1)
i, err := cstore.Create(n1, p1)
require.Equal(n1, i.Name)
require.Nil(err)
err = cstore.Create(n2, p2)
_, err = cstore.Create(n2, p2)
require.Nil(err)
// we can get these keys
@@ -159,7 +160,7 @@ func TestAdvancedKeyManagement(t *testing.T) {
p1, p2, p3, pt := "1234", "foobar", "ding booms!", "really-secure!@#$"
// make sure key works with initial password
err := cstore.Create(n1, p1)
_, err := cstore.Create(n1, p1)
require.Nil(err, "%+v", err)
assertPassword(assert, cstore, n1, p1, p2)
+1 -1
View File
@@ -15,7 +15,7 @@ func TestSortKeys(t *testing.T) {
// alphabetical order is n3, n1, n2
n1, n2, n3 := "john", "mike", "alice"
infos := keys.KeyInfos{
infos := keys.Infos{
info(n1, gen()),
info(n2, gen()),
info(n3, gen()),