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 00000000..9da89cb9
--- /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 00000000..85b863e6
--- /dev/null
+++ b/src/tools/ed25519-key-pair-generator/ed25519-key-pair-generator.vue
@@ -0,0 +1,24 @@
+
+
+
Public key
+
+
+
+
+
Private key
+
+
+
+
+
+
+
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 00000000..acc7d177
--- /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