From c32c3702d227d4dc49acd2b120d79e959ad7d130 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sun, 16 Aug 2026 07:30:55 +0200 Subject: [PATCH] Working crypto --- package-lock.json | 33 +++++++++++++++++++++++++++++++++ package.json | 13 ++++++++----- src/App.tsx | 21 +++++++++++++++++---- 3 files changed, 58 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index b118aa5..f8805c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "enclave", "version": "0.1.0", "dependencies": { + "@noble/ed25519": "^3.1.0", + "@noble/hashes": "^2.3.0", + "@scure/base": "^2.3.0", "@tauri-apps/api": "^2", "@tauri-apps/plugin-opener": "^2", "react": "^19.1.0", @@ -816,6 +819,27 @@ "node": "^22.20 || ^24.12 || >=25" } }, + "node_modules/@noble/ed25519": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-3.1.0.tgz", + "integrity": "sha512-pfcObRY3CtvwfaG9Mt5XqZdKmAQppl37tHUeuBhDUbiwJBCVY4/A4lbMvb1xKhMDx96AqAqZpMWuBX1HulhX4g==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.3.0.tgz", + "integrity": "sha512-oN+QwyX7VSHotibwubG3kpzbwKrfnyR6OOO+3Nk/53ADL7FmgHHz4TgrbaYKvvOw09u6QTx0oiH1cNCIOuN0CQ==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.27", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", @@ -1212,6 +1236,15 @@ "win32" ] }, + "node_modules/@scure/base": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-2.3.0.tgz", + "integrity": "sha512-NsG6Y03tY6R5BUis4FdVtHVkur0U6FOzskgs9ZXNl78CUc9fkZ78HmENUle1nSOkCasDmbubmWD9qwB7mm4PZA==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@tauri-apps/api": { "version": "2.11.1", "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.11.1.tgz", diff --git a/package.json b/package.json index f6c98f7..c5ecf53 100644 --- a/package.json +++ b/package.json @@ -10,17 +10,20 @@ "tauri": "tauri" }, "dependencies": { - "react": "^19.1.0", - "react-dom": "^19.1.0", + "@noble/ed25519": "^3.1.0", + "@noble/hashes": "^2.3.0", + "@scure/base": "^2.3.0", "@tauri-apps/api": "^2", - "@tauri-apps/plugin-opener": "^2" + "@tauri-apps/plugin-opener": "^2", + "react": "^19.1.0", + "react-dom": "^19.1.0" }, "devDependencies": { + "@tauri-apps/cli": "^2", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "@vitejs/plugin-react": "^4.6.0", "typescript": "~5.8.3", - "vite": "^7.0.4", - "@tauri-apps/cli": "^2" + "vite": "^7.0.4" } } diff --git a/src/App.tsx b/src/App.tsx index 9d4a684..7f900e5 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -3,6 +3,11 @@ import reactLogo from "./assets/react.svg"; import { invoke } from "@tauri-apps/api/core"; import "./App.css"; import { EnclaveWebSocket } from "./protocol/ws"; +import * as ed from "@noble/ed25519"; +import { base58 } from "@scure/base"; +import { sha512 } from "@noble/hashes/sha2.js"; + +ed.hashes.sha512 = sha512; function App() { const [greetMsg, setGreetMsg] = useState(""); @@ -17,12 +22,20 @@ function App() { (async () => { const ws = new EnclaveWebSocket("ws://localhost:3415"); + const timestamp = Date.now(); + const hostname = "localhost:3415"; + + const msg = new TextEncoder().encode(`${timestamp}@${hostname}`); + + const PRIVATE_KEY = ed.utils.randomSecretKey(); + ws.send({ method: "Initialize", - public_key: "", - signature: "", - timestamp: 0, - hostname: "", + public_key: base58.encode(ed.getPublicKey(PRIVATE_KEY)), + signature: base58.encode(ed.sign(msg, PRIVATE_KEY)), + + timestamp, + hostname, }); console.log(await ws.read());