diff --git a/keyer/lib.go b/keyer/lib.go index 029222f..1a147ed 100644 --- a/keyer/lib.go +++ b/keyer/lib.go @@ -83,7 +83,7 @@ func New(ctx context.Context, pool *nostr.SimplePool, input string, opts *Signer sec := parsed.(string) pk, _ := nostr.GetPublicKey(sec) return KeySigner{sec, pk, xsync.NewMapOf[string, [32]byte]()}, nil - } else if _, err := hex.DecodeString(input); err == nil && len(input) < 64 { + } else if _, err := hex.DecodeString(input); err == nil && len(input) <= 64 { input = strings.Repeat("0", 64-len(input)) + input // if the key is like '01', fill all the left zeroes pk, _ := nostr.GetPublicKey(input) return KeySigner{input, pk, xsync.NewMapOf[string, [32]byte]()}, nil diff --git a/keyer/plain.go b/keyer/plain.go index c50904a..62d07f0 100644 --- a/keyer/plain.go +++ b/keyer/plain.go @@ -16,6 +16,11 @@ type KeySigner struct { conversationKeys *xsync.MapOf[string, [32]byte] } +func NewPlainKeySigner(sec string) KeySigner { + pk, _ := nostr.GetPublicKey(sec) + return KeySigner{sec, pk, xsync.NewMapOf[string, [32]byte]()} +} + func (ks KeySigner) SignEvent(ctx context.Context, evt *nostr.Event) error { return evt.Sign(ks.sk) } func (ks KeySigner) GetPublicKey(ctx context.Context) string { return ks.pk }