nip19: reverse TLV ordering just to keep other implementations honest.

This commit is contained in:
fiatjaf 2023-12-23 19:25:31 -03:00
parent a43f2a708c
commit 5d6c2b9e5d
No known key found for this signature in database
GPG Key ID: BAD43C4BE5C1A3A1
2 changed files with 16 additions and 14 deletions

View File

@ -78,13 +78,13 @@ test('encode and decode naddr', () => {
test('encode and decode nevent', () => { test('encode and decode nevent', () => {
let pk = getPublicKey(generateSecretKey()) let pk = getPublicKey(generateSecretKey())
let relays = ['wss://relay.nostr.example.mydomain.example.com', 'wss://nostr.banana.com'] let relays = ['wss://relay.nostr.example.mydomain.example.com', 'wss://nostr.banana.com']
let naddr = neventEncode({ let nevent = neventEncode({
id: pk, id: pk,
relays, relays,
kind: 30023, kind: 30023,
}) })
expect(naddr).toMatch(/nevent1\w+/) expect(nevent).toMatch(/nevent1\w+/)
let { type, data } = decode(naddr) let { type, data } = decode(nevent)
expect(type).toEqual('nevent') expect(type).toEqual('nevent')
const pointer = data as EventPointer const pointer = data as EventPointer
expect(pointer.id).toEqual(pk) expect(pointer.id).toEqual(pk)
@ -95,13 +95,13 @@ test('encode and decode nevent', () => {
test('encode and decode nevent with kind 0', () => { test('encode and decode nevent with kind 0', () => {
let pk = getPublicKey(generateSecretKey()) let pk = getPublicKey(generateSecretKey())
let relays = ['wss://relay.nostr.example.mydomain.example.com', 'wss://nostr.banana.com'] let relays = ['wss://relay.nostr.example.mydomain.example.com', 'wss://nostr.banana.com']
let naddr = neventEncode({ let nevent = neventEncode({
id: pk, id: pk,
relays, relays,
kind: 0, kind: 0,
}) })
expect(naddr).toMatch(/nevent1\w+/) expect(nevent).toMatch(/nevent1\w+/)
let { type, data } = decode(naddr) let { type, data } = decode(nevent)
expect(type).toEqual('nevent') expect(type).toEqual('nevent')
const pointer = data as EventPointer const pointer = data as EventPointer
expect(pointer.id).toEqual(pk) expect(pointer.id).toEqual(pk)

View File

@ -227,15 +227,17 @@ export function nrelayEncode(url: string): `nrelay1${string}` {
function encodeTLV(tlv: TLV): Uint8Array { function encodeTLV(tlv: TLV): Uint8Array {
let entries: Uint8Array[] = [] let entries: Uint8Array[] = []
Object.entries(tlv).forEach(([t, vs]) => { Object.entries(tlv)
vs.forEach(v => { .reverse()
let entry = new Uint8Array(v.length + 2) .forEach(([t, vs]) => {
entry.set([parseInt(t)], 0) vs.forEach(v => {
entry.set([v.length], 1) let entry = new Uint8Array(v.length + 2)
entry.set(v, 2) entry.set([parseInt(t)], 0)
entries.push(entry) entry.set([v.length], 1)
entry.set(v, 2)
entries.push(entry)
})
}) })
})
return concatBytes(...entries) return concatBytes(...entries)
} }