public void SetUpSecureChannel() { try { var ecdh1 = new ECDHWrapper(AgreementLength); this.messageFramer.Send(ecdh1.PubData); var serverPublicKey = this.messageFramer.Receive(); byte[] agreement = ecdh1.calcAgreement(serverPublicKey); const int AESKeyLength = 32; byte[] aesKey = new byte[AESKeyLength]; Array.Copy(agreement, 0, aesKey, 0, AESKeyLength); this.cryptoWrapper = new CryptoProtocol(this.messageFramer, aesKey, Iv1); } catch (Exception ex) { Logger.Debug(string.Format("Error while stting up secure channel: {0}{1}", Environment.NewLine, ex)); throw new ServerSendInvalidDataException(string.Empty, ex); } }
/// <summary> /// Init secure channel (this.Cryptor) /// </summary> /// <returns></returns> private void SetUpSecureChannel() { try { var ecdh1 = new ECDHWrapper(AgreementLength); var recCliPub = this.messageFramer.Receive(); this.messageFramer.Send(ecdh1.PubData); var agr = ecdh1.calcAgreement(recCliPub); const int AESKeyLength = 32; var aeskey = new byte[AESKeyLength]; Array.Copy(agr, 0, aeskey, 0, AESKeyLength); this.cryptoWrapper = new CryptoProtocol(this.messageFramer, aeskey, CryptoIv1); } catch (Exception ex) { Log.DebugFormat("Error while completing agreement: {0}{1}", Environment.NewLine, ex); this.cryptoWrapper = null; throw new SecureChannelInitFailedException(string.Empty, ex); } }