diff options
| author | Adam Soltys <[email protected]> | 2024-10-31 09:34:16 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-10-31 09:34:16 -0700 |
| commit | 243abb0a3d29e8e34e263eec843488e3bdb468a4 (patch) | |
| tree | be55931ba0f3c110c3001f56a5339cb63e78b761 /src/lib/nostr.ts | |
| parent | 4742e72ec25823ceeea7848fb2e1f868bed7f472 (diff) | |
| download | coinos-ui-243abb0a3d29e8e34e263eec843488e3bdb468a4.tar.gz coinos-ui-243abb0a3d29e8e34e263eec843488e3bdb468a4.zip | |
biome
Diffstat (limited to 'src/lib/nostr.ts')
| -rw-r--r-- | src/lib/nostr.ts | 58 |
1 files changed, 29 insertions, 29 deletions
diff --git a/src/lib/nostr.ts b/src/lib/nostr.ts index a00a28f9..f45dc811 100644 --- a/src/lib/nostr.ts +++ b/src/lib/nostr.ts @@ -35,15 +35,15 @@ type EncryptParams = { const { encode, decode, toWords, fromWords } = bech32m; -export let generate = async (user: any) => { - let p = get(pin); +export const generate = async (user: any) => { + const p = get(pin); if (p && p.length !== 6) return; - let salt = crypto.getRandomValues(new Uint8Array(16)); - let mnemonic = generateSeedWords(); - let sk = privateKeyFromSeedWords(mnemonic); + const salt = crypto.getRandomValues(new Uint8Array(16)); + const mnemonic = generateSeedWords(); + const sk = privateKeyFromSeedWords(mnemonic); - let bytes = new Uint8Array( + const bytes = new Uint8Array( await crypto.subtle.encrypt( { name: "AES-GCM", iv: new Uint8Array(16) }, await stretch(await getPassword(), salt), @@ -56,19 +56,19 @@ export let generate = async (user: any) => { user.salt = Buffer.from(salt).toString("hex"); }; -export let encrypt = async ({ message, recipient, user }: EncryptParams) => { - let sk = await getPrivateKey(user); +export const encrypt = async ({ message, recipient, user }: EncryptParams) => { + const sk = await getPrivateKey(user); return nip04.encrypt(sk, recipient, message); }; -export let decrypt = async ({ event, user }) => { - let cache = get(decrypted); +export const decrypt = async ({ event, user }) => { + const cache = get(decrypted); try { let { content, pubkey, id } = event; if (cache[id]) return cache[id]; if (pubkey === user.pubkey) pubkey = event.tags[0][1]; - let message = await nip04.decrypt( + const message = await nip04.decrypt( await getPrivateKey(user), pubkey, content, @@ -83,7 +83,7 @@ export let decrypt = async ({ event, user }) => { } }; -export let getPrivateKey = async (user: User): Promise<Uint8Array> => { +export const getPrivateKey = async (user: User): Promise<Uint8Array> => { let k; if (browser) { k = localStorage.getItem("nsec"); @@ -92,7 +92,7 @@ export let getPrivateKey = async (user: User): Promise<Uint8Array> => { } } - let { nsec } = user; + const { nsec } = user; if (nsec) { k = nip49decrypt(nsec, await getPassword()); @@ -102,8 +102,8 @@ export let getPrivateKey = async (user: User): Promise<Uint8Array> => { return k; }; -export let getMnemonic = async (user: User) => { - let { cipher, salt } = user; +export const getMnemonic = async (user: User) => { + const { cipher, salt } = user; let entropy; entropy = new Uint8Array( @@ -117,23 +117,23 @@ export let getMnemonic = async (user: User) => { return entropyToMnemonic(entropy, wordlist); }; -let decodeNsec = (nsec: string): Uint8Array => { - let { type, data } = nip19.decode(nsec); +const decodeNsec = (nsec: string): Uint8Array => { + const { type, data } = nip19.decode(nsec); if (type === "nsec" && data instanceof Uint8Array) return data; - else throw new Error("invalid nsec"); + throw new Error("invalid nsec"); }; -export let getNsec = async (user: User) => { +export const getNsec = async (user: User) => { return nip19.nsecEncode(await getPrivateKey(user)); }; -export let setNsec = async (user: User, nsec: string) => { +export const setNsec = async (user: User, nsec: string) => { user.pubkey = getPublicKey(decodeNsec(nsec)); user.nsec = await encryptNsec(nsec); }; -export let encryptNsec = async (nsec: string) => { - let d = decodeNsec(nsec); +export const encryptNsec = async (nsec: string) => { + const d = decodeNsec(nsec); return nip49encrypt(d, await getPassword()); }; @@ -142,30 +142,30 @@ type SignParams = { user: User; }; -export let sign = async ({ event, user }: SignParams) => { +export const sign = async ({ event, user }: SignParams) => { event = finalizeEvent(event, await getPrivateKey(user)); }; -export let send = (event: EventTemplate) => { +export const send = (event: EventTemplate) => { return post("/events", { event }); }; -let getPassword = async (): Promise<string> => { +const getPassword = async (): Promise<string> => { if (!get(pw)) passwordPrompt.set(true); await wait(() => !!get(pw)); return get(pw) || ""; }; -export let reEncryptEntropy = async (user: User, newPassword: string) => { - let { cipher, salt } = user; +export const reEncryptEntropy = async (user: User, newPassword: string) => { + const { cipher, salt } = user; - let entropy = await crypto.subtle.decrypt( + const entropy = await crypto.subtle.decrypt( { name: "AES-GCM", iv: new Uint8Array(16) }, await stretch(await getPassword(), hexToUint8Array(salt)), Uint8Array.from(fromWords(decode(cipher, 180).words)), ); - let bytes = new Uint8Array( + const bytes = new Uint8Array( await crypto.subtle.encrypt( { name: "AES-GCM", iv: new Uint8Array(16) }, await stretch(newPassword, hexToUint8Array(salt)), |
