From 2ac69278ceb1954a5d5bd7ea4089b971e36b921c Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Sat, 16 Dec 2023 11:21:49 -0300 Subject: [PATCH] simplify nip-42. --- nip42.test.ts | 26 +++++++------------------- nip42.ts | 26 +++++--------------------- 2 files changed, 12 insertions(+), 40 deletions(-) diff --git a/nip42.test.ts b/nip42.test.ts index 53adb2b..4256f5d 100644 --- a/nip42.test.ts +++ b/nip42.test.ts @@ -1,26 +1,14 @@ import 'websocket-polyfill' -import { finishEvent } from './event.ts' -import { generatePrivateKey } from './keys.ts' -import { authenticate } from './nip42.ts' +import { makeAuthEvent } from './nip42.ts' import { relayInit } from './relay.ts' test('auth flow', () => { - const relay = relayInit('wss://nostr.kollider.xyz') - relay.connect() - const sk = generatePrivateKey() + const relay = relayInit('wss://nostr.wine') - return new Promise(resolve => { - relay.on('auth', async challenge => { - await expect( - authenticate({ - challenge, - relay, - sign: e => finishEvent(e, sk), - }), - ).rejects.toBeTruthy() - relay.close() - resolve() - }) - }) + const auth = makeAuthEvent(relay.url, 'chachacha') + expect(auth.tags).toHaveLength(2) + expect(auth.tags[0]).toEqual(['relay', 'wss://nostr.wine']) + expect(auth.tags[1]).toEqual(['challenge', 'chachacha']) + expect(auth.kind).toEqual(22242) }) diff --git a/nip42.ts b/nip42.ts index 9451116..18862a8 100644 --- a/nip42.ts +++ b/nip42.ts @@ -1,33 +1,17 @@ -import { type EventTemplate, type Event } from './event.ts' +import { EventTemplate } from './event.ts' import { ClientAuth } from './kinds.ts' -import { Relay } from './relay.ts' /** - * Authenticate via NIP-42 flow. - * - * @example - * const sign = window.nostr.signEvent - * relay.on('auth', challenge => - * authenticate({ relay, sign, challenge }) - * ) + * creates an EventTemplate for an AUTH event to be signed. */ -export const authenticate = async ({ - challenge, - relay, - sign, -}: { - challenge: string - relay: Relay - sign: (e: EventTemplate) => Promise | Event -}): Promise => { - const evt: EventTemplate = { +export function makeAuthEvent(relayURL: string, challenge: string): EventTemplate { + return { kind: ClientAuth, created_at: Math.floor(Date.now() / 1000), tags: [ - ['relay', relay.url], + ['relay', relayURL], ['challenge', challenge], ], content: '', } - return relay.auth(await sign(evt)) }