sign events working!
This commit is contained in:
@@ -1,13 +1,7 @@
|
|||||||
import { generatePrivateKey, getPublicKey } from "nostr-tools";
|
import { generatePrivateKey, getPublicKey, signEvent } from "nostr-tools";
|
||||||
|
|
||||||
const storage = browser.storage.local;
|
const storage = browser.storage.local;
|
||||||
|
|
||||||
browser.runtime.onMessageExternal.addListener(async (message, sender, sendResponse) => {
|
|
||||||
console.log('External message: ', message);
|
|
||||||
console.log('External sender: ', sender);
|
|
||||||
sendResponse('Goodbye!');
|
|
||||||
});
|
|
||||||
|
|
||||||
browser.runtime.onMessage.addListener(async (message, _sender, sendResponse) => {
|
browser.runtime.onMessage.addListener(async (message, _sender, sendResponse) => {
|
||||||
console.log(message);
|
console.log(message);
|
||||||
|
|
||||||
@@ -55,6 +49,10 @@ browser.runtime.onMessage.addListener(async (message, _sender, sendResponse) =>
|
|||||||
case 'deleteProfile':
|
case 'deleteProfile':
|
||||||
await deleteProfile();
|
await deleteProfile();
|
||||||
break;
|
break;
|
||||||
|
case 'signEvent':
|
||||||
|
let event = await signEvent_(message.payload);
|
||||||
|
sendResponse(event);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -140,3 +138,10 @@ async function deleteProfile() {
|
|||||||
let profileIndex = Math.max(index - 1, 0);
|
let profileIndex = Math.max(index - 1, 0);
|
||||||
await storage.set({profiles, profileIndex});
|
await storage.set({profiles, profileIndex});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function signEvent_(event) {
|
||||||
|
event = {...event};
|
||||||
|
let privKey = await getPrivKey();
|
||||||
|
event.sig = signEvent(event, privKey);
|
||||||
|
return event;
|
||||||
|
}
|
||||||
@@ -3,13 +3,14 @@ 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) => {
|
||||||
let {kind, reqId} = message.data;
|
let {kind, reqId, payload} = message.data;
|
||||||
if (kind !== 'getPublicKey')
|
if (kind !== 'getPubKey' && kind !== 'signEvent')
|
||||||
return;
|
return;
|
||||||
|
|
||||||
console.log(`Event ${reqId}: Content script received message kind ${kind}`);
|
console.log(`Event ${reqId}: Content script received message kind ${kind}, payload: `, payload);
|
||||||
let publicKey = await browser.runtime.sendMessage({kind: 'getPubKey'});
|
payload = await browser.runtime.sendMessage({kind, payload});
|
||||||
console.log(`Event ${reqId}: Public key retrieved; ${publicKey}`);
|
|
||||||
|
|
||||||
window.postMessage({kind: 'publicKey', reqId, payload: publicKey}, '*');
|
kind = `return_${kind}`;
|
||||||
|
|
||||||
|
window.postMessage({kind, reqId, payload}, '*');
|
||||||
});
|
});
|
||||||
@@ -1,29 +1,31 @@
|
|||||||
window.nostr = {
|
window.nostr = {
|
||||||
requests: {},
|
requests: {},
|
||||||
|
|
||||||
getPublicKey() {
|
async getPublicKey() {
|
||||||
let reqId = Math.random().toString();
|
return await this.broadcast('getPubKey');
|
||||||
return new Promise((resolve, _reject) => {
|
|
||||||
this.requests[reqId] = resolve;
|
|
||||||
console.log(`Event ${reqId}: Requesting public key.`);
|
|
||||||
window.postMessage({kind: 'getPublicKey', reqId}, '*');
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
async signEvent(event) {
|
async signEvent(event) {
|
||||||
console.log("Signing event");
|
return await this.broadcast('signEvent', event);
|
||||||
console.log(event);
|
},
|
||||||
return "signed event";
|
|
||||||
|
broadcast(kind, payload) {
|
||||||
|
let reqId = Math.random().toString();
|
||||||
|
return new Promise((resolve, _reject) => {
|
||||||
|
this.requests[reqId] = resolve;
|
||||||
|
console.log(`Event ${reqId}: ${kind}, payload: `, payload);
|
||||||
|
window.postMessage({kind, reqId, payload}, '*');
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener('message', (message) => {
|
window.addEventListener('message', (message) => {
|
||||||
let {kind, reqId, payload} = message.data;
|
let {kind, reqId, payload} = message.data;
|
||||||
|
|
||||||
if (kind !== 'publicKey')
|
if (kind !== 'return_getPubKey' && kind !== 'return_signEvent')
|
||||||
return;
|
return;
|
||||||
|
|
||||||
console.log(`Event ${reqId}: Received public key ${payload}.`);
|
console.log(`Event ${reqId}: Received payload:`, payload);
|
||||||
window.nostr.requests[reqId](payload);
|
window.nostr.requests[reqId](payload);
|
||||||
delete window.nostr.requests[reqId];
|
delete window.nostr.requests[reqId];
|
||||||
});
|
});
|
||||||
Reference in New Issue
Block a user