39 lines
843 B
Go
39 lines
843 B
Go
package keys
|
|
|
|
import "github.com/anytypeio/go-anytype-infrastructure-experiments/util/strkey"
|
|
|
|
type keyDecoder struct {
|
|
create func([]byte) (Key, error)
|
|
}
|
|
|
|
func NewKeyDecoder(create func(bytes []byte) (Key, error)) Decoder {
|
|
return &keyDecoder{
|
|
create: create,
|
|
}
|
|
}
|
|
|
|
func (e *keyDecoder) DecodeFromBytes(bytes []byte) (Key, error) {
|
|
return e.create(bytes)
|
|
}
|
|
|
|
func (e *keyDecoder) DecodeFromString(identity string) (Key, error) {
|
|
pubKeyRaw, err := strkey.Decode(0x5b, identity)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return e.DecodeFromBytes(pubKeyRaw)
|
|
}
|
|
|
|
func (e *keyDecoder) DecodeFromStringIntoBytes(identity string) ([]byte, error) {
|
|
return strkey.Decode(0x5b, identity)
|
|
}
|
|
|
|
func (e *keyDecoder) EncodeToString(key Key) (string, error) {
|
|
raw, err := key.Raw()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return strkey.Encode(0x5b, raw)
|
|
}
|