private HandleServerKeyExchangeState(
            IServiceProvider serviceProvider,
            ICipherSuitesProvider cipherSuitesProvider,

            CipherSuiteConfig cipherSuiteConfig,

            ServerKeyExchangeMessage handshake)
        {
            _serviceProvider      = serviceProvider;
            _cipherSuitesProvider = cipherSuitesProvider;

            _cipherSuiteConfig = cipherSuiteConfig;

            _handshake = handshake;
        }
예제 #2
0
        public void HandleServerKeyExchange(ServerKeyExchangeMessage message)
        {
            var dhMessage = DHServerKeyExchangeMessage.Read(_serviceProvider, message.Data);

            _dhParameterConfig.G = dhMessage.G;
            _dhParameterConfig.P = dhMessage.P;

            // 512 is "approx" 256-bits of security
            _dhExchangeConfig.X = _random.RandomBig(512);

            var sharedSecret    = DHCalculator.Calculate(dhMessage.Ys, _dhExchangeConfig.X, _dhParameterConfig.P);
            var preMasterSecret = sharedSecret.ToByteArray(Endianness.BigEndian);

            var masterSecret = _masterSecretCalculator.Compute(preMasterSecret);

            _masterSecretCalculator.ComputeKeysAndUpdateConfig(masterSecret);
        }
예제 #3
0
 public void HandleServerKeyExchange(ServerKeyExchangeMessage message)
 {
     throw new System.NotImplementedException();
 }
        public static HandleServerKeyExchangeState New(IServiceProvider serviceProvider, ServerKeyExchangeMessage handshake)
        {
            return(new HandleServerKeyExchangeState(
                       serviceProvider,
                       serviceProvider.GetRequiredService <ICipherSuitesProvider>(),


                       serviceProvider.GetRequiredService <CipherSuiteConfig>(),

                       handshake));
        }
예제 #5
0
 public virtual void HandleServerKeyExchange(ServerKeyExchangeMessage message)
 {
     _client.HandleServerKeyExchange(message);
 }
예제 #6
0
 public virtual void HandleServerKeyExchange(ServerKeyExchangeMessage message)
 {
     throw new NotImplementedException();
 }