protected override void OnMessage(MessageEventArgs e) { MsgType msgType = (MsgType)JsonDocument.Parse(e.Data).RootElement.GetProperty("type").GetInt32(); if (msgType == MsgType.GetKey) { Console.WriteLine("Client asks for public key"); SendKeyMsg sendKeyMsg = new SendKeyMsg(Decryptor.RSACreateKeys()); string serializedMsg = JsonSerializer.Serialize <SendKeyMsg>(sendKeyMsg); Send(serializedMsg); } if (msgType == MsgType.DES) { DESDbStringMes ecnryptedDbString = JsonSerializer.Deserialize <DESDbStringMes>(e.Data); DESDbStringMes testEncDbString = JsonSerializer.Deserialize <DESDbStringMes>(e.Data); ecnryptedDbString.Key = Decryptor.RSAdecrypt(ecnryptedDbString.Key); string serializedDbString = Decryptor.DESdecrypt(ecnryptedDbString); DbStringMsg dbString = JsonSerializer.Deserialize <DbStringMsg>(serializedDbString); Console.WriteLine(dbString.surname + ' ' + dbString.name + ' ' + dbString.second_name + ' ' + dbString.country + ' ' + dbString.picture + ' ' + dbString.exposition); Artist artist = new Artist( dbString.name, dbString.surname, dbString.second_name, new Country(dbString.country), new Movement(dbString.movement), new Picture(dbString.picture), new Exposition(dbString.exposition) ); PgConnector.InsertData(artist); //Send("You just have sent \"" + e.Data + "\" to me."); } }
static void Main(string[] args) { DataTable painters = SQLiteConnector.get(); List <DbStringMsg> dbStringMsgs = createDbStringMsgList(painters); using (var ws = new WebSocket("ws://localhost:8080/")) { ws.OnOpen += (sender, e) => Console.WriteLine("Connected to server."); ws.OnMessage += (sender, e) => { MsgType msgType = (MsgType)JsonDocument.Parse(e.Data).RootElement.GetProperty("type").GetInt32(); if (msgType == MsgType.SendKey) { string publicKey = JsonDocument.Parse(e.Data).RootElement.GetProperty("key").ToString(); Encryptor.publicKey = publicKey; Console.WriteLine("Server send public key: " + publicKey); foreach (var dbStringMsg in dbStringMsgs) { string msg = JsonSerializer.Serialize <DbStringMsg>(dbStringMsg); DESDbStringMes decMsg = Encryptor.DESencrypt(msg); decMsg.Key = Encryptor.RSAencrypt(decMsg.Key); msg = JsonSerializer.Serialize <DESDbStringMes>(decMsg); ws.Send(msg); } } else { Console.WriteLine(e.Data); } }; ws.Connect(); string getKeyMsg = JsonSerializer.Serialize <GetKeyMsg>(new GetKeyMsg()); ws.Send(getKeyMsg); Console.ReadKey(true); ws.Close(); } }