示例#1
0
        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);
            }
        }
示例#2
0
        /// <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);
            }
        }