From 566437fe2e040966301f0292b2f4041be0abc362 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Sat, 23 Dec 2023 19:28:13 -0300 Subject: [PATCH] nip19: length 0 on TLV is not forbidden. --- nip19.test.ts | 19 +++++++++++++++++++ nip19.ts | 1 - 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/nip19.test.ts b/nip19.test.ts index 680ddc6..ab7da0d 100644 --- a/nip19.test.ts +++ b/nip19.test.ts @@ -109,6 +109,25 @@ test('encode and decode nevent with kind 0', () => { expect(pointer.kind).toEqual(0) }) +test('encode and decode naddr with empty "d"', () => { + let pk = getPublicKey(generateSecretKey()) + let relays = ['wss://relay.nostr.example.mydomain.example.com', 'wss://nostr.banana.com'] + let naddr = naddrEncode({ + identifier: '', + pubkey: pk, + relays, + kind: 3, + }) + expect(naddr).toMatch(/naddr\w+/) + let { type, data } = decode(naddr) + expect(type).toEqual('naddr') + const pointer = data as AddressPointer + expect(pointer.identifier).toEqual('') + expect(pointer.relays).toContain(relays[0]) + expect(pointer.kind).toEqual(3) + expect(pointer.pubkey).toEqual(pk) +}) + test('decode naddr from habla.news', () => { let { type, data } = decode( 'naddr1qq98yetxv4ex2mnrv4esygrl54h466tz4v0re4pyuavvxqptsejl0vxcmnhfl60z3rth2xkpjspsgqqqw4rsf34vl5', diff --git a/nip19.ts b/nip19.ts index 652f51a..bf416cb 100644 --- a/nip19.ts +++ b/nip19.ts @@ -149,7 +149,6 @@ function parseTLV(data: Uint8Array): TLV { while (rest.length > 0) { let t = rest[0] let l = rest[1] - if (!l) throw new Error(`malformed TLV ${t}`) let v = rest.slice(2, 2 + l) rest = rest.slice(2 + l) if (v.length < l) throw new Error(`not enough data to read on TLV ${t}`)