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;
|
const storage = browser.storage.local;
|
||||||
|
|
||||||
@@ -53,6 +53,14 @@ browser.runtime.onMessage.addListener(async (message, _sender, sendResponse) =>
|
|||||||
let event = await signEvent_(message.payload);
|
let event = await signEvent_(message.payload);
|
||||||
sendResponse(event);
|
sendResponse(event);
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -144,4 +152,14 @@ async function signEvent_(event) {
|
|||||||
let privKey = await getPrivKey();
|
let privKey = await getPrivKey();
|
||||||
event.sig = signEvent(event, privKey);
|
event.sig = signEvent(event, privKey);
|
||||||
return event;
|
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);
|
document.body.appendChild(script);
|
||||||
|
|
||||||
window.addEventListener('message', async (message) => {
|
window.addEventListener('message', async (message) => {
|
||||||
|
const validEvents = ['getPubKey', 'signEvent', 'nip04.encrypt', 'nip04.decrypt'];
|
||||||
let {kind, reqId, payload} = message.data;
|
let {kind, reqId, payload} = message.data;
|
||||||
if (kind !== 'getPubKey' && kind !== 'signEvent')
|
if (!validEvents.includes(kind))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
console.log(`Event ${reqId}: Content script received message kind ${kind}, payload: `, payload);
|
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);
|
console.log(`Event ${reqId}: ${kind}, payload: `, payload);
|
||||||
window.postMessage({kind, reqId, 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) => {
|
window.addEventListener('message', (message) => {
|
||||||
|
const validEvents = ['getPubKey', 'signEvent', 'nip04.encrypt', 'nip04.decrypt'].map(e => `return_${e}`);
|
||||||
let {kind, reqId, payload} = message.data;
|
let {kind, reqId, payload} = message.data;
|
||||||
|
|
||||||
if (kind !== 'return_getPubKey' && kind !== 'return_signEvent')
|
if (!validEvents.includes(kind))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
console.log(`Event ${reqId}: Received payload:`, payload);
|
console.log(`Event ${reqId}: Received payload:`, payload);
|
||||||
|
|||||||
Reference in New Issue
Block a user