Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(nip59) formated code #442

Merged
merged 1 commit into from
Oct 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 10 additions & 13 deletions nip59.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,38 @@ import { wrapEvent, unwrapEvent } from './nip59.ts'
import { decode } from './nip19.ts'
import { getPublicKey } from './pure.ts'


const senderPrivateKey = decode(`nsec1p0ht6p3wepe47sjrgesyn4m50m6avk2waqudu9rl324cg2c4ufesyp6rdg`).data
const recipientPrivateKey = decode(`nsec1uyyrnx7cgfp40fcskcr2urqnzekc20fj0er6de0q8qvhx34ahazsvs9p36`).data
const recipientPublicKey = getPublicKey(recipientPrivateKey)
const event = {
kind: 1,
content: "Are you going to the party tonight?",
content: 'Are you going to the party tonight?',
}

const wrapedEvent = wrapEvent(event, senderPrivateKey, recipientPublicKey)

test('wrapEvent', () => {
const expected = {
content: '', id: '', created_at: 1728537932, kind: 1059, pubkey: '', sig: '', tags: [
[
"p",
"166bf3765ebd1fc55decfe395beff2ea3b2a4e0a8946e7eb578512b555737c99"
]
],
content: '',
id: '',
created_at: 1728537932,
kind: 1059,
pubkey: '',
sig: '',
tags: [['p', '166bf3765ebd1fc55decfe395beff2ea3b2a4e0a8946e7eb578512b555737c99']],
[Symbol('verified')]: true,
}
const result = wrapEvent(event, senderPrivateKey, recipientPublicKey)

expect(result.kind).toEqual(expected.kind)
expect(result.tags).toEqual(expected.tags)

})

test('unwrapEvent', () => {
const expected = {
kind: 1,
content: "Are you going to the party tonight?",
pubkey: "611df01bfcf85c26ae65453b772d8f1dfd25c264621c0277e1fc1518686faef9",
content: 'Are you going to the party tonight?',
pubkey: '611df01bfcf85c26ae65453b772d8f1dfd25c264621c0277e1fc1518686faef9',
tags: [],
}
const result = unwrapEvent(wrapedEvent, recipientPrivateKey)
Expand All @@ -44,6 +43,4 @@ test('unwrapEvent', () => {
expect(result.content).toEqual(expected.content)
expect(result.pubkey).toEqual(expected.pubkey)
expect(result.tags).toEqual(expected.tags)

})

17 changes: 6 additions & 11 deletions nip59.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import { EventTemplate, UnsignedEvent, Event } from './core.ts'
import { getConversationKey, decrypt, encrypt } from './nip44.ts'
import { getEventHash, generateSecretKey, finalizeEvent, getPublicKey } from './pure.ts'
Expand All @@ -9,11 +8,9 @@ type Rumor = UnsignedEvent & { id: string }
const TWO_DAYS = 2 * 24 * 60 * 60

const now = () => Math.round(Date.now() / 1000)
const randomNow = () => Math.round(now() - (Math.random() * TWO_DAYS))

const randomNow = () => Math.round(now() - Math.random() * TWO_DAYS)

const nip44ConversationKey = (privateKey: Uint8Array, publicKey: string) =>
getConversationKey(privateKey, publicKey)
const nip44ConversationKey = (privateKey: Uint8Array, publicKey: string) => getConversationKey(privateKey, publicKey)

const nip44Encrypt = (data: EventTemplate, privateKey: Uint8Array, publicKey: string) =>
encrypt(JSON.stringify(data), nip44ConversationKey(privateKey, publicKey))
Expand All @@ -24,7 +21,7 @@ const nip44Decrypt = (data: Event, privateKey: Uint8Array) =>
export function createRumor(event: Partial<UnsignedEvent>, privateKey: Uint8Array) {
const rumor = {
created_at: now(),
content: "",
content: '',
tags: [],
...event,
pubkey: getPublicKey(privateKey),
Expand All @@ -43,7 +40,7 @@ export function createSeal(rumor: Rumor, privateKey: Uint8Array, recipientPublic
created_at: randomNow(),
tags: [],
},
privateKey
privateKey,
) as Event
}

Expand All @@ -55,22 +52,20 @@ export function createWrap(seal: Event, recipientPublicKey: string) {
kind: GiftWrap,
content: nip44Encrypt(seal, randomKey, recipientPublicKey),
created_at: randomNow(),
tags: [["p", recipientPublicKey]],
tags: [['p', recipientPublicKey]],
},
randomKey
randomKey,
) as Event
}

export function wrapEvent(event: Partial<UnsignedEvent>, senderPrivateKey: Uint8Array, recipientPublicKey: string) {

const rumor = createRumor(event, senderPrivateKey)

const seal = createSeal(rumor, senderPrivateKey, recipientPublicKey)
return createWrap(seal, recipientPublicKey)
}

export function unwrapEvent(wrap: Event, recipientPrivateKey: Uint8Array) {

const unwrappedSeal = nip44Decrypt(wrap, recipientPrivateKey)
return nip44Decrypt(unwrappedSeal, recipientPrivateKey)
}
Loading