AaltoTLS.SecureSession.ProcessSendHandshakePacket C# (CSharp) Method

ProcessSendHandshakePacket() private method

private ProcessSendHandshakePacket ( AsyncHandshakeResult asyncHandshakeResult ) : void
asyncHandshakeResult AsyncHandshakeResult
return void
        private void ProcessSendHandshakePacket(AsyncHandshakeResult asyncHandshakeResult)
        {
            HandshakeMessage[] messages = _handshakeSession.GetOutputMessages();
            Record[] records = _handshakePacketizer.ProcessHandshakeMessages(_handshakeSession.NegotiatedVersion, messages, _recordStream.MaximumFragmentLength);
            if (records.Length > 0) {
                // Encrypt the handshake records
                for (int i=0; i<records.Length; i++) {
                    _recordHandler.ProcessOutputRecord(records[i]);
                }
                _recordStream.BeginSend(records, new AsyncCallback(SendHandshakeCallback), asyncHandshakeResult);
            } else {
                if (_handshakeSession.State == HandshakeState.Finished) {
                    // Handshake finished, mark result as complete
                    asyncHandshakeResult.SetComplete();
                } else if (_handshakeSession.State == HandshakeState.SendChangeCipherSpec) {
                    ProcessSendChangeCipherSpec(asyncHandshakeResult);
                } else {
                    // Handshake not finished, receive the next handshake packet
                    _recordStream.BeginReceive(new AsyncCallback(ReceiveHandshakeCallback), asyncHandshakeResult);
                }
            }
        }