diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main.ts | 3 | ||||
-rw-r--r-- | src/tools/bip39-generator/bip39-generator.vue | 47 | ||||
-rw-r--r-- | src/tools/bip39-generator/index.ts | 11 | ||||
-rw-r--r-- | src/tools/index.ts | 3 |
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', |