[pgsqlclient-checkins] pgsqlclient_10/PgSqlClient.Security.Tls/source TlsReader.cs,1.19,1.20 TlsSess
Status: Inactive
Brought to you by:
carlosga_fb
From: <car...@us...> - 2003-09-15 11:55:27
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source In directory sc8-pr-cvs1:/tmp/cvs-serv4210 Modified Files: TlsReader.cs TlsSession.cs TlsWriter.cs Log Message: Updated files Index: TlsReader.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsReader.cs,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** TlsReader.cs 15 Sep 2003 10:25:22 -0000 1.19 --- TlsReader.cs 15 Sep 2003 11:55:22 -0000 1.20 *************** *** 144,148 **** byte b = base.ReadByte(); ms.WriteByte(b); ! while (session.Socket.Available != 0) { byte[] buffer = base.ReadBytes(session.Socket.Available); --- 144,148 ---- byte b = base.ReadByte(); ms.WriteByte(b); ! while (session.NetworkStream.DataAvailable) { byte[] buffer = base.ReadBytes(session.Socket.Available); *************** *** 336,405 **** } ! TlsStreamReader buffer = new TlsStreamReader(this.readFully()); ! ! TlsStreamWriter result = new TlsStreamWriter(); ! while (!buffer.EOF) ! { ! TlsContentType contentType = (TlsContentType)buffer.ReadByte(); ! TlsProtocol protocol = (TlsProtocol)buffer.ReadShort(); ! int length = buffer.ReadShort(); ! TlsStreamReader message = new TlsStreamReader(buffer.ReadBytes(length)); ! // Check that the message as a valid protocol version ! if (protocol != TlsProtocol.Tls1) ! { ! session.ThrowException("Invalid protocol version on message received from server"); ! } ! // Decrypt message contents if needed ! if (contentType == TlsContentType.Alert && ! length == 2) ! { ! } ! else { ! if (session.State.IsActual && ! contentType != TlsContentType.ChangeCipherSpec) ! { ! message = new TlsStreamReader(processCipherTextRecord(contentType, protocol, message.GetBytes())); ! } } ! // Process record ! switch (contentType) ! { ! case TlsContentType.Alert: ! processAlert((TlsAlertLevel)message.ReadByte(), ! (TlsAlertDescription)message.ReadByte()); ! break; ! ! case TlsContentType.ChangeCipherSpec: ! // Reset sequence numbers ! session.State.ReadSequenceNumber = 0; ! break; ! case TlsContentType.ApplicationData: ! result.Write(message.GetBytes()); ! break; ! case TlsContentType.Handshake: ! while (!message.EOF) ! { ! processHandshakeMessage(message); ! } ! // Update handshakes of current messages ! this.session.HandshakeHashes.Update(message.GetBytes()); ! break; ! default: ! session.ThrowException("Unknown record received from server."); ! break; ! } ! message.Reset(); } ! return result.GetBytes(); } --- 336,399 ---- } ! byte[] result = null; ! TlsContentType contentType = (TlsContentType)base.ReadByte(); ! TlsProtocol protocol = (TlsProtocol)this.ReadShort(); ! int length = this.ReadShort(); ! TlsStreamReader message = new TlsStreamReader(base.ReadBytes(length)); ! ! // Check that the message as a valid protocol version ! if (protocol != TlsProtocol.Tls1) ! { ! session.ThrowException("Invalid protocol version on message received from server"); ! } ! // Decrypt message contents if needed ! if (contentType == TlsContentType.Alert && ! length == 2) ! { ! } ! else ! { ! if (session.State.IsActual && ! contentType != TlsContentType.ChangeCipherSpec) { ! message = new TlsStreamReader(processCipherTextRecord(contentType, protocol, message.GetBytes())); } + } ! // Process record ! switch (contentType) ! { ! case TlsContentType.Alert: ! processAlert((TlsAlertLevel)message.ReadByte(), ! (TlsAlertDescription)message.ReadByte()); ! break; ! case TlsContentType.ChangeCipherSpec: ! // Reset sequence numbers ! session.State.ReadSequenceNumber = 0; ! break; ! case TlsContentType.ApplicationData: ! result = message.GetBytes(); ! break; ! case TlsContentType.Handshake: ! while (!message.EOF) ! { ! processHandshakeMessage(message); ! } ! // Update handshakes of current messages ! this.session.HandshakeHashes.Update(message.GetBytes()); ! break; ! default: ! session.ThrowException("Unknown record received from server."); ! break; } ! return result; } Index: TlsSession.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsSession.cs,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** TlsSession.cs 15 Sep 2003 10:25:22 -0000 1.16 --- TlsSession.cs 15 Sep 2003 11:55:22 -0000 1.17 *************** *** 105,108 **** --- 105,113 ---- } + internal short MaxFragmentSize + { + get { return (short)Math.Pow(2, 14); } + } + #endregion *************** *** 310,317 **** --- 315,331 ---- IPEndPoint EPhost = new IPEndPoint(hostadd, settings.ServerPort); + // Create the socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); + // Set Receive Buffer size. + socket.SetSocketOption(SocketOptionLevel.Socket, + SocketOptionName.ReceiveBuffer, MaxFragmentSize); + + // Set Send Buffer size. + socket.SetSocketOption(SocketOptionLevel.Socket, + SocketOptionName.SendBuffer, MaxFragmentSize); + // Make the socket to connect to the Server socket.Connect(EPhost); *************** *** 322,325 **** --- 336,340 ---- writer = new TlsWriter(this, networkStream, settings.Encoding); } + private void closeStreams() { Index: TlsWriter.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsWriter.cs,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** TlsWriter.cs 4 Sep 2003 12:39:43 -0000 1.8 --- TlsWriter.cs 15 Sep 2003 11:55:22 -0000 1.9 *************** *** 251,257 **** { ArrayList d = new ArrayList(); ! ! short maxFragmentSize = (short)Math.Pow(2, 14); ! int position = 0; while (position < messageData.Length) --- 251,256 ---- { ArrayList d = new ArrayList(); ! ! int position = 0; while (position < messageData.Length) *************** *** 259,265 **** short fragmentLength = 0; byte[] fragmentData; ! if ((messageData.Length - position) > maxFragmentSize) { ! fragmentLength = maxFragmentSize; } else --- 258,264 ---- short fragmentLength = 0; byte[] fragmentData; ! if ((messageData.Length - position) > session.MaxFragmentSize) { ! fragmentLength = session.MaxFragmentSize; } else |