aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Corentin Thomasset <corentin.thomasset74@gmail.com> 2023-03-27 00:01:46 +0200
committerGravatar Corentin Thomasset <corentin.thomasset74@gmail.com> 2023-03-27 00:01:46 +0200
commit55d2a4d7af7416d184282a57853bb6bb2ed9a711 (patch)
tree1cb5a8c66ad64a428140c0dbab36d28acb954e21
parent7c40539ef9b41a90b0715a07b50671adae833f97 (diff)
downloadit-tools-ed25519-key-pair-generator.tar.gz
it-tools-ed25519-key-pair-generator.tar.zst
it-tools-ed25519-key-pair-generator.zip
feat(new-tool): ed25519 key pair generatored25519-key-pair-generator
-rw-r--r--src/tools/ed25519-key-pair-generator/ed25519-key-pair-generator.service.ts14
-rw-r--r--src/tools/ed25519-key-pair-generator/ed25519-key-pair-generator.vue24
-rw-r--r--src/tools/ed25519-key-pair-generator/index.ts11
3 files changed, 49 insertions, 0 deletions
diff --git a/src/tools/ed25519-key-pair-generator/ed25519-key-pair-generator.service.ts b/src/tools/ed25519-key-pair-generator/ed25519-key-pair-generator.service.ts
new file mode 100644
index 0000000..9da89cb
--- /dev/null
+++ b/src/tools/ed25519-key-pair-generator/ed25519-key-pair-generator.service.ts
@@ -0,0 +1,14 @@
+import { pki } from 'node-forge';
+
+export { generateKeyPair };
+
+function generateKeyPair() {
+ const { privateKey, publicKey } = pki.ed25519.generateKeyPair();
+
+ console.log({ privateKey, publicKey });
+
+ return {
+ publicKeyPem: pki.publicKeyToPem(publicKey),
+ privateKeyPem: pki.privateKeyToPem(privateKey),
+ };
+}
diff --git a/src/tools/ed25519-key-pair-generator/ed25519-key-pair-generator.vue b/src/tools/ed25519-key-pair-generator/ed25519-key-pair-generator.vue
new file mode 100644
index 0000000..85b863e
--- /dev/null
+++ b/src/tools/ed25519-key-pair-generator/ed25519-key-pair-generator.vue
@@ -0,0 +1,24 @@
+<template>
+ <div>
+ <h3>Public key</h3>
+ <textarea-copyable :value="certs.publicKeyPem" />
+ </div>
+
+ <div>
+ <h3>Private key</h3>
+ <textarea-copyable :value="certs.privateKeyPem" />
+ </div>
+</template>
+
+<script setup lang="ts">
+import TextareaCopyable from '@/components/TextareaCopyable.vue';
+import { withDefaultOnErrorAsync } from '@/utils/defaults';
+import { computed } from 'vue';
+import { generateKeyPair } from './ed25519-key-pair-generator.service';
+
+const emptyCerts = { publicKeyPem: '', privateKeyPem: '' };
+
+const certs = computed(() => generateKeyPair());
+</script>
+
+<style lang="less" scoped></style>
diff --git a/src/tools/ed25519-key-pair-generator/index.ts b/src/tools/ed25519-key-pair-generator/index.ts
new file mode 100644
index 0000000..acc7d17
--- /dev/null
+++ b/src/tools/ed25519-key-pair-generator/index.ts
@@ -0,0 +1,11 @@
+import { ArrowsShuffle } from '@vicons/tabler';
+import { defineTool } from '../tool';
+
+export const tool = defineTool({
+ name: 'Ed25519 key pair generator',
+ path: '/ed25519-key-pair-generator',
+ description: '',
+ keywords: ['ed25519', 'key', 'pair', 'generator'],
+ component: () => import('./ed25519-key-pair-generator.vue'),
+ icon: ArrowsShuffle,
+}); \ No newline at end of file