aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.ts3
-rw-r--r--src/tools/bip39-generator/bip39-generator.vue47
-rw-r--r--src/tools/bip39-generator/index.ts11
-rw-r--r--src/tools/index.ts3
4 files changed, 63 insertions, 1 deletions
diff --git a/src/main.ts b/src/main.ts
index 7377786..30756ff 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -2,6 +2,9 @@ import { createApp } from 'vue';
import { createPinia } from 'pinia';
import { createHead } from '@vueuse/head';
+import { Buffer } from 'buffer';
+globalThis.Buffer = Buffer;
+
import { naive } from './plugins/naive.plugin';
import App from './App.vue';
diff --git a/src/tools/bip39-generator/bip39-generator.vue b/src/tools/bip39-generator/bip39-generator.vue
new file mode 100644
index 0000000..2a36308
--- /dev/null
+++ b/src/tools/bip39-generator/bip39-generator.vue
@@ -0,0 +1,47 @@
+<template>
+ <div>
+ <n-card>
+ <n-space item-style="flex: 1 1 0">
+ <n-form-item label="Language:">
+ <n-select v-model:value="language" :options="languages" />
+ </n-form-item>
+ <n-form-item label="Entropy (seed):">
+ <n-input v-model:value="entropy" placeholder="Your string..." />
+ </n-form-item>
+ </n-space>
+ <n-form-item label="Passphrase (mnemonic):">
+ <n-input
+ style="text-align: center;"
+ :value="passphrase"
+ type="textarea"
+ placeholder="Your string hash"
+ :autosize="{ minRows: 1 }"
+ readonly
+ autocomplete="off"
+ autocorrect="off"
+ autocapitalize="off"
+ spellcheck="false"
+ />
+ </n-form-item>
+ </n-card>
+ </div>
+</template>
+
+<script setup lang="ts">
+import { useCopy } from '@/composable/copy';
+import { ref, computed } from 'vue'
+import { entropyToMnemonic } from 'bip39'
+
+const entropy = ref('1d60683972011cb97322ed6ae96225f3')
+const language = ref('English')
+const languages = ref(['English'])
+const passphrase = computed(() => {
+ // setDefaultWordlist(language.value)
+ return entropyToMnemonic(Buffer.from(entropy.value, "utf-8"))
+})
+
+
+</script>
+
+<style lang="scss" scoped>
+</style> \ No newline at end of file
diff --git a/src/tools/bip39-generator/index.ts b/src/tools/bip39-generator/index.ts
new file mode 100644
index 0000000..8f581d9
--- /dev/null
+++ b/src/tools/bip39-generator/index.ts
@@ -0,0 +1,11 @@
+import { AlignJustified } from '@vicons/tabler';
+import type { ITool } from '../Tool';
+
+export const tool: ITool = {
+ name: 'BIP39 passphrase generator',
+ path: '/bip39-generator',
+ description: 'Generate BIP39 passphrase from existing or random mnemonic, or get the mnemonic from the passphrase.',
+ keywords: ['BIP39', 'passphrase', 'generator', 'mnemonic', 'entropy'],
+ component: () => import('./bip39-generator.vue'),
+ icon: AlignJustified,
+};
diff --git a/src/tools/index.ts b/src/tools/index.ts
index a41a0ff..5244f6c 100644
--- a/src/tools/index.ts
+++ b/src/tools/index.ts
@@ -6,12 +6,13 @@ import { tool as hashText } from './hash-text';
import { tool as uuidGenerator } from './uuid-generator';
import { tool as romanNumeralConverter } from './roman-numeral-converter';
import { tool as cypher } from './encryption';
+import { tool as bip39 } from './bip39-generator';
export const toolsByCategory: ToolCategory[] = [
{
name: 'Crypto',
icon: LockOpen,
- components: [tokenGenerator, hashText, uuidGenerator, cypher],
+ components: [tokenGenerator, hashText, uuidGenerator, cypher, bip39],
},
{
name: 'Converter',