nip04 support!
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { generatePrivateKey, getPublicKey, signEvent } from "nostr-tools";
|
||||
import { generatePrivateKey, getPublicKey, signEvent, nip04 } from "nostr-tools";
|
||||
|
||||
const storage = browser.storage.local;
|
||||
|
||||
@@ -53,6 +53,14 @@ browser.runtime.onMessage.addListener(async (message, _sender, sendResponse) =>
|
||||
let event = await signEvent_(message.payload);
|
||||
sendResponse(event);
|
||||
break;
|
||||
case 'nip04.encrypt':
|
||||
let cipherText = await nip04Encrypt(message.payload);
|
||||
sendResponse(cipherText);
|
||||
break;
|
||||
case 'nip04.decrypt':
|
||||
let plainText = await nip04Decrypt(message.payload);
|
||||
sendResponse(plainText);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -144,4 +152,14 @@ async function signEvent_(event) {
|
||||
let privKey = await getPrivKey();
|
||||
event.sig = signEvent(event, privKey);
|
||||
return event;
|
||||
}
|
||||
|
||||
async function nip04Encrypt({pubKey, plainText}) {
|
||||
let privKey = await getPrivKey();
|
||||
return nip04.encrypt(privKey, pubKey, plainText);
|
||||
}
|
||||
|
||||
async function nip04Decrypt({pubKey, cipherText}) {
|
||||
let privKey = await getPrivKey();
|
||||
return nip04.decrypt(privKey, pubKey, cipherText);
|
||||
}
|
||||
@@ -3,8 +3,9 @@ script.setAttribute('src', browser.runtime.getURL('nostr.build.js'));
|
||||
document.body.appendChild(script);
|
||||
|
||||
window.addEventListener('message', async (message) => {
|
||||
const validEvents = ['getPubKey', 'signEvent', 'nip04.encrypt', 'nip04.decrypt'];
|
||||
let {kind, reqId, payload} = message.data;
|
||||
if (kind !== 'getPubKey' && kind !== 'signEvent')
|
||||
if (!validEvents.includes(kind))
|
||||
return;
|
||||
|
||||
console.log(`Event ${reqId}: Content script received message kind ${kind}, payload: `, payload);
|
||||
|
||||
@@ -16,13 +16,25 @@ window.nostr = {
|
||||
console.log(`Event ${reqId}: ${kind}, payload: `, payload);
|
||||
window.postMessage({kind, reqId, payload}, '*');
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
nip04: {
|
||||
async encrypt(pubKey, plainText) {
|
||||
return await window.nostr.broadcast('nip04.encrypt', {pubKey, plainText});
|
||||
},
|
||||
|
||||
async decrypt(pubKey, cipherText) {
|
||||
return await window.nostr.broadcast('nip04.decrypt', {pubKey, cipherText});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('message', (message) => {
|
||||
const validEvents = ['getPubKey', 'signEvent', 'nip04.encrypt', 'nip04.decrypt'].map(e => `return_${e}`);
|
||||
let {kind, reqId, payload} = message.data;
|
||||
|
||||
if (kind !== 'return_getPubKey' && kind !== 'return_signEvent')
|
||||
if (!validEvents.includes(kind))
|
||||
return;
|
||||
|
||||
console.log(`Event ${reqId}: Received payload:`, payload);
|
||||
|
||||
Reference in New Issue
Block a user