diff options
| author | Adrien Hopkins <[email protected]> | 2025-09-05 19:43:20 -0500 |
|---|---|---|
| committer | Adrien Hopkins <[email protected]> | 2025-09-05 19:43:20 -0500 |
| commit | fd098a90952269db708f4d2d21de085c968e835e (patch) | |
| tree | bb355ee885762e27161a77c55ae17a46b93f8323 /src/lib | |
| parent | 4a2af45b77bb36a81b7f29908b3b320ddb76a769 (diff) | |
| download | coinos-ui-fd098a90952269db708f4d2d21de085c968e835e.tar.gz coinos-ui-fd098a90952269db708f4d2d21de085c968e835e.zip | |
Remove need for explicit key entry
If window.nostr is available, I don't need the sender's SK, I can do
everything with its functions. Otherwise, I'll ask for the SK using
getPrivateKey().
The override public key was only for testing, but I still don't need it
because I can get the users' private keys from the settings tab.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/nip17.ts | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/lib/nip17.ts b/src/lib/nip17.ts index e0046d47..6a9888b6 100644 --- a/src/lib/nip17.ts +++ b/src/lib/nip17.ts @@ -6,31 +6,33 @@ const TWO_DAYS = 2 * 24 * 60 * 60; const randomTimestamp = () => Math.floor( Date.now() / 1000 - Math.random() * TWO_DAYS); -export const createNIP17Message = async (text: string, senderSK: Uint8Array, receiverPK: string) => { - const rumour = createRumour(text, senderSK, receiverPK); - let sealed; - if (window.nostr) { - sealed = await sealRumourNip07(rumour, receiverPK); - } else { - sealed = sealRumour(rumour, senderSK, receiverPK); - } - const wrapped = giftWrap(sealed, receiverPK); - return wrapped; +// Create a NIP-17 message using a provided sender secret key. +export const createNIP17MessageSK = (text: string, senderSK: Uint8Array, receiverPK: string) => { + const rumour = createRumour(text, getPublicKey(senderSK), receiverPK); + const sealed = sealRumourSK(rumour, senderSK, receiverPK); + return giftWrap(sealed, receiverPK); +} + +// Create a NIP-17 message using NIP-07, requiring no sender secret key. +export const createNIP17MessageNIP07 = async (text: string, senderPK: string, receiverPK: string) => { + const rumour = createRumour(text, senderPK, receiverPK); + const sealed = await sealRumourNip07(rumour, receiverPK); + return giftWrap(sealed, receiverPK); } -const createRumour = (text: string, senderSK: Uint8Array, receiverPK: string) => { +const createRumour = (text: string, senderPK: string, receiverPK: string) => { const rumour = { kind: 14, // rumour created_at: Math.floor(Date.now() / 1000), tags: [["p", receiverPK]], - pubkey: getPublicKey(senderSK), + pubkey: senderPK, content: text }; - rumour.id = getEventHash(rumour); + rumour.id = getEventHash(rumour); // do NOT sign rumours! return rumour; } -const sealRumour = (rumour: object, senderSK: Uint8Array, receiverPK: string) => { +const sealRumourSK = (rumour: object, senderSK: Uint8Array, receiverPK: string) => { const senderSKString = bytesToHex(senderSK); const conversationKey = u.getConversationKey(senderSKString, receiverPK); const encryptedRumour = encrypt(JSON.stringify(rumour), conversationKey); |
