private static RsaCrpyter GetServerKey(Settings settings, RequestSender sender) { string storeFile = settings.FINGERPRINT_STORE_FILE; var store = new FingerprintStore(storeFile); var hello = new HelloRequest(); var helloResponse = sender.SendAndRecieve <HelloResponse>(hello); if (helloResponse == null) { MessageBox.Show("Server neodpověděl na požadavek pro zaslání veřejného klíče. Zkontrolujte síťové připojení.", "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error); return(null); } var assymetricCrypter = new RsaCrpyter(helloResponse.CrypterConfig); if (!store.IsKnownFingerprint(assymetricCrypter.KeyFingerprint)) { string msg = string.Format("Server se představil veřejným klíčem\r\n{0}\r\nkterý zatím není v seznamu známých hostitelů. Pokud tomuto serveru důvěřujete, přejete si klíč do seznamu přidat?", store.PrintFingerprint(assymetricCrypter.KeyFingerprint)); var result = MessageBox.Show(msg, "Upozornění", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); if (result == DialogResult.Yes) { store.AddFingerPrint(assymetricCrypter.KeyFingerprint); } else { return(null); } } return(assymetricCrypter); }
private static RequestSender InitTcpSender(Settings settings) { string ip = settings.SERVER_IP; TcpSender tcpClient; try { tcpClient = new TcpSender(ip, settings.CONTROL_TCP_PORT, settings.RESPOND_TIMEOUT); } catch { MessageBox.Show("Nepodařilo se zinicializovat síťovou komunikaci, program bude ukončen.", "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error); return(null); } var sender = new RequestSender(tcpClient); sender.NetProblem += ProgramError; sender.UnrecognizedResponse += ProgramError; sender.CryptoError += ProgramError; sender.Unauthorized += ProgramError; sender.AccessDenied += ProgramError; sender.CannotExecute += ProgramError; sender.InvalidResponse += ProgramError; MasterContainer.AddService(sender); return(sender); }