diff --git a/keys.go b/keys.go index a070246..bb2171a 100644 --- a/keys.go +++ b/keys.go @@ -39,6 +39,7 @@ func GetPublicKey(sk string) (string, error) { return hex.EncodeToString(schnorr.SerializePubKey(pk)), nil } +// Deprecated: use IsValid32ByteHex instead -- functionality unchanged. func IsValidPublicKeyHex(pk string) bool { if strings.ToLower(pk) != pk { return false @@ -46,3 +47,9 @@ func IsValidPublicKeyHex(pk string) bool { dec, _ := hex.DecodeString(pk) return len(dec) == 32 } + +func IsValidPublicKey(pk string) bool { + v, _ := hex.DecodeString(pk) + _, err := btcec.ParsePubKey(v) + return len(v) == 32 && err == nil +} diff --git a/utils.go b/utils.go index 874ced0..3d3b6ad 100644 --- a/utils.go +++ b/utils.go @@ -1,6 +1,7 @@ package nostr import ( + "encoding/hex" "net/url" "strings" ) @@ -18,3 +19,14 @@ func IsValidRelayURL(u string) bool { } return true } + +func IsValid32ByteHex(thing string) bool { + if strings.ToLower(thing) != thing { + return false + } + if len(thing) != 64 { + return false + } + _, err := hex.DecodeString(thing) + return err == nil +}