diff options
author | Michael Muré <batolettre@gmail.com> | 2021-01-24 19:45:21 +0100 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2021-02-14 12:19:00 +0100 |
commit | dc5059bc3372941e2908739831188768335ac50b (patch) | |
tree | 7294aed90cf5f04809d7a99b4967b513bdb409d5 /identity/identity.go | |
parent | 8d63c983c982f93cc48d3996d6bd097ddeeb327f (diff) | |
download | git-bug-dc5059bc3372941e2908739831188768335ac50b.tar.gz |
entity: more progress on merging and signing
Diffstat (limited to 'identity/identity.go')
-rw-r--r-- | identity/identity.go | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/identity/identity.go b/identity/identity.go index 65019041..ad5f1efd 100644 --- a/identity/identity.go +++ b/identity/identity.go @@ -519,12 +519,19 @@ func (i *Identity) Keys() []*Key { } // SigningKey return the key that should be used to sign new messages. If no key is available, return nil. -func (i *Identity) SigningKey() *Key { +func (i *Identity) SigningKey(repo repository.RepoKeyring) (*Key, error) { keys := i.Keys() - if len(keys) > 0 { - return keys[0] + for _, key := range keys { + err := key.ensurePrivateKey(repo) + if err == errNoPrivateKey { + continue + } + if err != nil { + return nil, err + } + return key, nil } - return nil + return nil, nil } // ValidKeysAtTime return the set of keys valid at a given lamport time |