/// <summary>The session has gone on long enough that it is time for the
        /// peers to start using a new set of symmetric keys.</summary>
        public void Renegotiate()
        {
            if (Closed)
            {
                throw new Exception("Closed!");
            }

            UpdateState(States.Updating);
            _ssl.Renegotiate();
            _ssl.DoHandshake();
            if (!_client)
            {
                // Tends to cause a really nasty
                _ssl.State = SslState.ACCEPT;
                _ssl.DoHandshake();
            }
        }