aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2022-12-29 01:29:56 -0800
committerAdam Soltys <[email protected]>2022-12-29 01:29:56 -0800
commit127262fcf9feef0c651b73a1a1cc79624d87aa9f (patch)
treebdae53cb6a97096109922106106bd7deecbda004 /src/routes
parent43c2847f2cd6b9e09137072ba7fa7d1048d69617 (diff)
downloadcoinos-ui-127262fcf9feef0c651b73a1a1cc79624d87aa9f.tar.gz
coinos-ui-127262fcf9feef0c651b73a1a1cc79624d87aa9f.zip
move generate function
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/(app)/[username]/generate/+page.svelte48
1 files changed, 5 insertions, 43 deletions
diff --git a/src/routes/(app)/[username]/generate/+page.svelte b/src/routes/(app)/[username]/generate/+page.svelte
index 330ccedb..f2e53be7 100644
--- a/src/routes/(app)/[username]/generate/+page.svelte
+++ b/src/routes/(app)/[username]/generate/+page.svelte
@@ -4,63 +4,25 @@
import { onMount } from 'svelte';
import { bech32m } from 'bech32';
import { generateMnemonic, mnemonicToEntropy, mnemonicToSeedSync } from 'bip39';
- import * as ecc from 'tiny-secp256k1';
- import { bip32, stretch, post } from '$lib/utils';
import { goto, invalidate } from '$app/navigation';
import { loginRedirect, password } from '$lib/store';
import { Pin } from '$comp';
import { pin } from '$lib/store';
+ import { generate } from '$lib/nostr';
export let data;
let { user } = data;
- const { encode, toWords } = bech32m;
-
- let loaded, mnemonic, key, seed, entropy, cipher, pubkey, salt, child;
+ let loaded;
onMount(async () => {
setTimeout(() => (loaded = true), 50);
- generate();
+ generate(user);
});
- let generate = async () => {
- if (!$pin?.length === 6) return setTimeout(generate, 1000);
- mnemonic = generateMnemonic();
- seed = mnemonicToSeedSync(mnemonic);
- entropy = mnemonicToEntropy(mnemonic);
- key = bip32.fromSeed(seed);
- child = key.derivePath("m/44'/1237'/0'/0/0");
- salt = crypto.getRandomValues(new Uint8Array(16));
-
- let bytes = new Uint8Array(
- await crypto.subtle.encrypt(
- { name: 'AES-GCM', iv: new Uint8Array(16) },
- await stretch($password, salt),
- Uint8Array.from(Buffer.from(entropy, 'hex'))
- )
- );
-
- user.pubkey = Buffer.from(ecc.xOnlyPointFromPoint(child.publicKey)).toString('hex');
- user.cipher = encode('en', toWords(bytes), 180);
- user.salt = Buffer.from(salt).toString('hex');
- user.pin = $pin;
-
- try {
- await post(`/${user.username}/generate`, user);
- } catch (e) {
- if (e.message?.startsWith('Pin')) {
- $pin = '';
- failure('Wrong pin, try again');
- }
- }
-
- invalidate('app:user');
- setTimeout(() => goto($loginRedirect || `/${user.username}/dashboard`), 10);
- };
-
- $: $pin?.length === 6 && generate();
+ $: $pin?.length === 6 && generate(user);
</script>
-{#if loaded && user.haspin && $pin?.length !== 6}
+{#if loaded && user?.haspin && $pin?.length !== 6}
<Pin />
{/if}