implement cryptography for FileTransfer

This commit is contained in:
marlon-erler
2024-07-27 17:41:54 +02:00
parent 95b74a5012
commit 8a56c0aab2
4 changed files with 56 additions and 8 deletions
+25
View File
@@ -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);
+21 -7
View File
@@ -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;
}
// 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;
}
+7
View File
@@ -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();
+2
View File
@@ -31,6 +31,8 @@ const chatListModel = new ChatListModel(
);
const fileTransferModel = new FileTransferModel(storageModel, connectionModel);
console.log(fileTransferModel.generateTransferData());
// upgrade
new v1Upgrader(settingsModel, connectionModel, chatListModel);