From 0dcf191e7f63f35efe85afb60bcb57f4934a0acb Mon Sep 17 00:00:00 2001 From: Clawd Date: Sun, 8 Mar 2026 16:31:05 -0700 Subject: feat: add NIP-04 encrypt/decrypt methods on Key --- nip04_test.go | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 nip04_test.go (limited to 'nip04_test.go') diff --git a/nip04_test.go b/nip04_test.go new file mode 100644 index 0000000..ff06151 --- /dev/null +++ b/nip04_test.go @@ -0,0 +1,49 @@ +package nostr + +import ( + "testing" +) + +func TestNIP04RoundTrip(t *testing.T) { + alice, err := GenerateKey() + if err != nil { + t.Fatal(err) + } + bob, err := GenerateKey() + if err != nil { + t.Fatal(err) + } + + plaintext := "hello, private world!" + + ct, err := alice.NIP04Encrypt(bob.Public(), plaintext) + if err != nil { + t.Fatalf("encrypt: %v", err) + } + + got, err := bob.NIP04Decrypt(alice.Public(), ct) + if err != nil { + t.Fatalf("decrypt: %v", err) + } + + if got != plaintext { + t.Fatalf("expected %q, got %q", plaintext, got) + } +} + +func TestNIP04DifferentKeys(t *testing.T) { + alice, _ := GenerateKey() + bob, _ := GenerateKey() + eve, _ := GenerateKey() + + ct, err := alice.NIP04Encrypt(bob.Public(), "secret") + if err != nil { + t.Fatal(err) + } + + // Eve should not be able to decrypt + _, err = eve.NIP04Decrypt(alice.Public(), ct) + if err == nil { + t.Fatal("expected error decrypting with wrong key, got nil") + } +} -- cgit v1.2.3