keyer: fix KeySigner and add a method for making one from scratch.

This commit is contained in:
fiatjaf 2024-09-17 08:30:15 -03:00
parent 2b04ea9bc1
commit 9d1a6fab68
2 changed files with 6 additions and 1 deletions

View File

@ -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

View File

@ -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 }