From 8a56c0aab25e3afea08abb16e49ab91d2971765e Mon Sep 17 00:00:00 2001 From: marlon-erler Date: Sat, 27 Jul 2024 17:41:54 +0200 Subject: [PATCH] implement cryptography for FileTransfer --- dist/index.js | 25 ++++++++++++++++++++++ src/Model/Global/fileTransferModel.ts | 30 ++++++++++++++++++++------- src/Model/Utility/utility.ts | 7 +++++++ src/index.tsx | 2 ++ 4 files changed, 56 insertions(+), 8 deletions(-) diff --git a/dist/index.js b/dist/index.js index d65b6828..db7a9a06 100644 --- a/dist/index.js +++ b/dist/index.js @@ -314,6 +314,11 @@ } // src/Model/Utility/utility.ts + function generateRandomToken(length) { + const array = new Uint8Array(length); + crypto.getRandomValues(array); + return array.join(""); + } function createTimestamp() { return (/* @__PURE__ */ new Date()).toISOString(); } @@ -4411,6 +4416,24 @@ taskStatusSuggestions = new ListState(); }; + // src/Model/Global/fileTransferModel.ts + var FileTransferModel = class { + storageModel; + connectionModel; + // methods + generateTransferData = () => { + return { + channel: generateRandomToken(2), + key: generateRandomToken(3) + }; + }; + // init + constructor(storageModel2, connectionModel2) { + this.storageModel = storageModel2; + this.connectionModel = connectionModel2; + } + }; + // src/View/Components/chatEntry.tsx function ChatEntry(chatViewModel) { const view = /* @__PURE__ */ createElement( @@ -4975,6 +4998,8 @@ settingsModel, connectionModel ); + var fileTransferModel = new FileTransferModel(storageModel, connectionModel); + console.log(fileTransferModel.generateTransferData()); new v1Upgrader(settingsModel, connectionModel, chatListModel); var coreVieWModel = new CoreViewModel(); var storageViewModel = new StorageViewModel(coreVieWModel, storageModel); diff --git a/src/Model/Global/fileTransferModel.ts b/src/Model/Global/fileTransferModel.ts index 8b3437ad..e9a795f0 100644 --- a/src/Model/Global/fileTransferModel.ts +++ b/src/Model/Global/fileTransferModel.ts @@ -2,14 +2,28 @@ import ConnectionModel from "./connectionModel"; import StorageModel from "./storageModel"; +import { generateRandomToken } from "../Utility/utility"; export default class FileTransferModel { - storageModel: StorageModel; - connectionModel: ConnectionModel; + storageModel: StorageModel; + connectionModel: ConnectionModel; - // init - constructor(storageModel: StorageModel, connectionModel: ConnectionModel) { - this.storageModel = storageModel; - this.connectionModel = connectionModel; - } -} \ No newline at end of file + // methods + generateTransferData = (): TransferData => { + return { + channel: generateRandomToken(2), + key: generateRandomToken(3), + }; + }; + + // init + constructor(storageModel: StorageModel, connectionModel: ConnectionModel) { + this.storageModel = storageModel; + this.connectionModel = connectionModel; + } +} + +export interface TransferData { + channel: string; + key: string; +} diff --git a/src/Model/Utility/utility.ts b/src/Model/Utility/utility.ts index 2ee5cf90..14b9d073 100644 --- a/src/Model/Utility/utility.ts +++ b/src/Model/Utility/utility.ts @@ -4,6 +4,13 @@ export interface Stringifiable { toString(): string; } +// crypto +export function generateRandomToken(length: number): string { + const array = new Uint8Array(length); + crypto.getRandomValues(array); + return array.join(""); +} + // date export function createTimestamp(): string { return new Date().toISOString(); diff --git a/src/index.tsx b/src/index.tsx index 9f890e5a..38110483 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -31,6 +31,8 @@ const chatListModel = new ChatListModel( ); const fileTransferModel = new FileTransferModel(storageModel, connectionModel); +console.log(fileTransferModel.generateTransferData()); + // upgrade new v1Upgrader(settingsModel, connectionModel, chatListModel);