aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/nostr.js31
-rw-r--r--src/lib/utils.js1
2 files changed, 31 insertions, 1 deletions
diff --git a/src/lib/nostr.js b/src/lib/nostr.js
index 385c7ac6..7523e97f 100644
--- a/src/lib/nostr.js
+++ b/src/lib/nostr.js
@@ -1,12 +1,39 @@
+import { get } from 'svelte/store';
import { entropyToMnemonic, mnemonicToSeedSync } from 'bip39';
import { Buffer } from 'buffer';
import { bech32m } from 'bech32';
import { bip32, post, stretch } from '$lib/utils';
import { calculateId, signId } from 'nostr';
+import { password as pw, passwordPrompt } from '$lib/store';
const { decode, fromWords } = bech32m;
-export let sign = async (event, { cipher, username, salt }, password) => {
+let signing;
+
+pw.subscribe((nv, ov) => {
+ if (!signing) return;
+ sign(signing);
+});
+
+export let sign = async ({ event, user }) => {
+ signing = { event, user };
+ let { cipher, username, salt } = user;
+
+ let password = get(pw);
+
+ if (!password) {
+ passwordPrompt.set(true);
+ return;
+ }
+
+ try {
+ await post('/password', { password });
+ } catch (e) {
+ console.log(e);
+ passwordPrompt.set(true);
+ return;
+ }
+
let mnemonic, key, seed, entropy, child, privkey;
entropy = Buffer.from(
await crypto.subtle.decrypt(
@@ -25,6 +52,8 @@ export let sign = async (event, { cipher, username, salt }, password) => {
event.id = await calculateId(event);
event.sig = await signId(privkey, event.id);
+
+ signing = false;
};
export let send = (event) => {
diff --git a/src/lib/utils.js b/src/lib/utils.js
index 43e77022..8b3e8070 100644
--- a/src/lib/utils.js
+++ b/src/lib/utils.js
@@ -120,6 +120,7 @@ export const info = (m) => {
export const login = async (user, cookies) => {
let maxAge = 30 * 24 * 60 * 60;
+
let res = await fetch(base + '/login', {
method: 'POST',
body: JSON.stringify(user),