any-sync/common/pkg/acl/common/keychain.go
Sergey Cherepanov 7548082355
move pkgs
2022-10-17 14:11:55 +03:00

29 lines
646 B
Go

package common
import (
signingkey2 "github.com/anytypeio/go-anytype-infrastructure-experiments/common/util/keys/asymmetric/signingkey"
)
type Keychain struct {
keys map[string]signingkey2.PubKey
}
func NewKeychain() *Keychain {
return &Keychain{
keys: make(map[string]signingkey2.PubKey),
}
}
func (k *Keychain) GetOrAdd(identity string) (signingkey2.PubKey, error) {
if key, exists := k.keys[identity]; exists {
return key, nil
}
res, err := signingkey2.NewSigningEd25519PubKeyFromBytes([]byte(identity))
if err != nil {
return nil, err
}
k.keys[identity] = res.(signingkey2.PubKey)
return res.(signingkey2.PubKey), nil
}