mirror of
https://github.com/anyproto/any-sync.git
synced 2025-06-11 10:18:08 +09:00
31 lines
738 B
Go
31 lines
738 B
Go
package tree
|
|
|
|
import (
|
|
"github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys"
|
|
"github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys/asymmetric/signingkey"
|
|
)
|
|
|
|
type keychain struct {
|
|
decoder keys.Decoder
|
|
keys map[string]signingkey.PubKey
|
|
}
|
|
|
|
func newKeychain() *keychain {
|
|
return &keychain{
|
|
decoder: signingkey.NewEDPubKeyDecoder(),
|
|
keys: make(map[string]signingkey.PubKey),
|
|
}
|
|
}
|
|
|
|
func (k *keychain) getOrAdd(identity string) (signingkey.PubKey, error) {
|
|
if key, exists := k.keys[identity]; exists {
|
|
return key, nil
|
|
}
|
|
res, err := k.decoder.DecodeFromString(identity)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
k.keys[identity] = res.(signingkey.PubKey)
|
|
return res.(signingkey.PubKey), nil
|
|
}
|