nak verify

This commit is contained in:
fiatjaf 2023-11-02 08:10:13 -03:00
parent be8e3dfb39
commit 7bce92f56d
No known key found for this signature in database
GPG Key ID: BAD43C4BE5C1A3A1
3 changed files with 44 additions and 0 deletions

View File

@ -70,3 +70,9 @@ publishing to wss://eden.nostr.land... failed: msg: blocked: not on white-list
publishing to wss://atlas.nostr.land... failed: msg: blocked: not on white-list publishing to wss://atlas.nostr.land... failed: msg: blocked: not on white-list
publishing to wss://relayable.org... success. publishing to wss://relayable.org... success.
``` ```
### verify if an event is good
```shell
~> echo '{"content":"hello world","created_at":1698923350,"id":"05bd99d54cb835f327e0092c4275ee44c7ff51219eff417c19f70c9e2c53ad5a","kind":1,"pubkey":"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","sig":"0a04a296321ed933858577f36fb2fb9a0933e966f9ee32b539493f5a4d00120891b1ca9152ebfbc04fb403bdaa7c73f415e7c4954e55726b4b4fa8cebf008cd6","tags":[]}' | nak verify
invalid .id, expected 05bd99d54cb835f427e0092c4275ee44c7ff51219eff417c19f70c9e2c53ad5a, got 05bd99d54cb835f327e0092c4275ee44c7ff51219eff417c19f70c9e2c53ad5a
```

View File

@ -18,6 +18,7 @@ func main() {
event, event,
decode, decode,
encode, encode,
verify,
}, },
} }

37
verify.go Normal file
View File

@ -0,0 +1,37 @@
package main
import (
"encoding/json"
"fmt"
"github.com/nbd-wtf/go-nostr"
"github.com/urfave/cli/v2"
)
var verify = &cli.Command{
Name: "verify",
Usage: "checks the hash and signature of an event given through stdin",
Description: `example:
echo '{"id":"a889df6a387419ff204305f4c2d296ee328c3cd4f8b62f205648a541b4554dfb","pubkey":"c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5","created_at":1698623783,"kind":1,"tags":[],"content":"hello from the nostr army knife","sig":"84876e1ee3e726da84e5d195eb79358b2b3eaa4d9bd38456fde3e8a2af3f1cd4cda23f23fda454869975b3688797d4c66e12f4c51c1b43c6d2997c5e61865661"}' | nak verify
it outputs nothing if the verification is successful.
`,
Action: func(c *cli.Context) error {
evt := nostr.Event{}
if stdinEvent := getStdin(); stdinEvent != "" {
if err := json.Unmarshal([]byte(stdinEvent), &evt); err != nil {
return fmt.Errorf("invalid JSON: %w", err)
}
}
if evt.GetID() != evt.ID {
return fmt.Errorf("invalid .id, expected %s, got %s", evt.GetID(), evt.ID)
}
if ok, err := evt.CheckSignature(); !ok {
return fmt.Errorf("invalid signature: %w", err)
}
return nil
},
}