From b17887fe218294a2433542e6b5b659036e1dd7a9 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Sun, 21 Jan 2024 07:45:22 -0300 Subject: [PATCH] replace validate32BytesHex() with native calls from go-nostr. --- encode.go | 29 +++++++++++++++-------------- go.mod | 2 +- go.sum | 4 ++-- helpers.go | 17 +---------------- 4 files changed, 19 insertions(+), 33 deletions(-) diff --git a/encode.go b/encode.go index 1fc3b08..320bef2 100644 --- a/encode.go +++ b/encode.go @@ -3,6 +3,7 @@ package main import ( "fmt" + "github.com/nbd-wtf/go-nostr" "github.com/nbd-wtf/go-nostr/nip19" "github.com/urfave/cli/v2" ) @@ -29,8 +30,8 @@ var encode = &cli.Command{ Usage: "encode a hex public key into bech32 'npub' format", Action: func(c *cli.Context) error { for target := range getStdinLinesOrFirstArgument(c) { - if err := validate32BytesHex(target); err != nil { - lineProcessingError(c, "invalid public key: %s", target, err) + if ok := nostr.IsValidPublicKey(target); !ok { + lineProcessingError(c, "invalid public key: %s", target) continue } @@ -50,8 +51,8 @@ var encode = &cli.Command{ Usage: "encode a hex private key into bech32 'nsec' format", Action: func(c *cli.Context) error { for target := range getStdinLinesOrFirstArgument(c) { - if err := validate32BytesHex(target); err != nil { - lineProcessingError(c, "invalid private key: %s", target, err) + if ok := nostr.IsValid32ByteHex(target); !ok { + lineProcessingError(c, "invalid private key: %s", target) continue } @@ -78,8 +79,8 @@ var encode = &cli.Command{ }, Action: func(c *cli.Context) error { for target := range getStdinLinesOrFirstArgument(c) { - if err := validate32BytesHex(target); err != nil { - lineProcessingError(c, "invalid public key: %s", target, err) + if ok := nostr.IsValid32ByteHex(target); !ok { + lineProcessingError(c, "invalid public key: %s", target) continue } @@ -115,15 +116,15 @@ var encode = &cli.Command{ }, Action: func(c *cli.Context) error { for target := range getStdinLinesOrFirstArgument(c) { - if err := validate32BytesHex(target); err != nil { - lineProcessingError(c, "invalid event id: %s", target, err) + if ok := nostr.IsValid32ByteHex(target); !ok { + lineProcessingError(c, "invalid event id: %s", target) continue } author := c.String("author") if author != "" { - if err := validate32BytesHex(author); err != nil { - return err + if ok := nostr.IsValidPublicKey(author); !ok { + return fmt.Errorf("invalid 'author' public key") } } @@ -174,8 +175,8 @@ var encode = &cli.Command{ Action: func(c *cli.Context) error { for d := range getStdinLinesOrBlank() { pubkey := c.String("pubkey") - if err := validate32BytesHex(pubkey); err != nil { - return err + if ok := nostr.IsValidPublicKey(pubkey); !ok { + return fmt.Errorf("invalid 'pubkey'") } kind := c.Int("kind") @@ -212,8 +213,8 @@ var encode = &cli.Command{ Usage: "generate note1 event codes (not recommended)", Action: func(c *cli.Context) error { for target := range getStdinLinesOrFirstArgument(c) { - if err := validate32BytesHex(target); err != nil { - lineProcessingError(c, "invalid event id: %s", target, err) + if ok := nostr.IsValid32ByteHex(target); !ok { + lineProcessingError(c, "invalid event id: %s", target) continue } diff --git a/go.mod b/go.mod index 116ccf6..95baf94 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/bgentry/speakeasy v0.1.0 github.com/mailru/easyjson v0.7.7 github.com/manifoldco/promptui v0.9.0 - github.com/nbd-wtf/go-nostr v0.28.0 + github.com/nbd-wtf/go-nostr v0.28.1 github.com/nbd-wtf/nostr-sdk v0.0.5 github.com/urfave/cli/v2 v2.25.7 golang.org/x/exp v0.0.0-20231006140011-7918f672742d diff --git a/go.sum b/go.sum index 8d6139d..328fc7a 100644 --- a/go.sum +++ b/go.sum @@ -76,8 +76,8 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= -github.com/nbd-wtf/go-nostr v0.28.0 h1:SLYyoFeCNYb7HyWtmPUzD6rifBOMR66Spj5fzCk+5GE= -github.com/nbd-wtf/go-nostr v0.28.0/go.mod h1:OQ8sNLFJnsj17BdqZiLSmjJBIFTfDqckEYC3utS4qoY= +github.com/nbd-wtf/go-nostr v0.28.1 h1:XQi/lBsigBXHRm7IDBJE7SR9citCh9srgf8sA5iVW3A= +github.com/nbd-wtf/go-nostr v0.28.1/go.mod h1:OQ8sNLFJnsj17BdqZiLSmjJBIFTfDqckEYC3utS4qoY= github.com/nbd-wtf/nostr-sdk v0.0.5 h1:rec+FcDizDVO0W25PX0lgYMXvP7zNNOgI3Fu9UCm4BY= github.com/nbd-wtf/nostr-sdk v0.0.5/go.mod h1:iJJsikesCGLNFZ9dLqhLPDzdt924EagUmdQxT3w2Lmk= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= diff --git a/helpers.go b/helpers.go index f8a2661..204df0f 100644 --- a/helpers.go +++ b/helpers.go @@ -3,7 +3,6 @@ package main import ( "bufio" "context" - "encoding/hex" "fmt" "net/url" "os" @@ -96,20 +95,6 @@ func validateRelayURLs(wsurls []string) error { return nil } -func validate32BytesHex(target string) error { - if _, err := hex.DecodeString(target); err != nil { - return fmt.Errorf("target '%s' is not valid hex: %s", target, err) - } - if len(target) != 64 { - return fmt.Errorf("expected '%s' to be 64 characters (32 bytes), got %d", target, len(target)) - } - if strings.ToLower(target) != target { - return fmt.Errorf("expected target to be all lowercase hex. try again with '%s'", strings.ToLower(target)) - } - - return nil -} - func connectToAllRelays( ctx context.Context, relayUrls []string, @@ -163,7 +148,7 @@ func gatherSecretKeyFromArguments(c *cli.Context) (string, error) { return "", fmt.Errorf("invalid secret key: too large") } sec = strings.Repeat("0", 64-len(sec)) + sec // left-pad - if err := validate32BytesHex(sec); err != nil { + if ok := nostr.IsValid32ByteHex(sec); !ok { return "", fmt.Errorf("invalid secret key") }