[pgsqlclient-checkins] pgsqlclient_10/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls/Mono.Sec
Status: Inactive
Brought to you by:
carlosga_fb
|
From: <car...@us...> - 2003-10-13 20:48:14
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls.Handshake
In directory sc8-pr-cvs1:/tmp/cvs-serv1430
Modified Files:
TlsHandshakeMessage.cs
Log Message:
Added more enhacements to the Handshake protocol
Index: TlsHandshakeMessage.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls.Handshake/TlsHandshakeMessage.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TlsHandshakeMessage.cs 13 Oct 2003 19:13:55 -0000 1.2
--- TlsHandshakeMessage.cs 13 Oct 2003 20:48:03 -0000 1.3
***************
*** 24,32 ****
using System;
namespace Mono.Security.Protocol.Tls.Handshake
{
! #warning "Think on change this for inherit from Stream"
! internal class TlsHandshakeMessage
{
#region FIELDS
--- 24,34 ----
using System;
+ using System.IO;
+ using System.Net;
namespace Mono.Security.Protocol.Tls.Handshake
{
! #warning "Think on implement a base stream class with the same stream methods as this have and remove TlsStreamReader and TlsStreamWriter classes"
! internal class TlsHandshakeMessage : Stream
{
#region FIELDS
***************
*** 37,42 ****
private bool canRead;
private bool canWrite;
! private TlsStreamReader reader;
! private TlsStreamWriter writer;
#endregion
--- 39,73 ----
private bool canRead;
private bool canWrite;
! private MemoryStream buffer;
!
! #endregion
!
! #region STREAM_PROPERTIES
!
! public override bool CanWrite
! {
! get { return canWrite; }
! }
!
! public override bool CanRead
! {
! get { return canRead; }
! }
!
! public override bool CanSeek
! {
! get { return buffer.CanSeek; }
! }
!
! public override long Position
! {
! get { return buffer.Position; }
! set { buffer.Position = value; }
! }
!
! public override long Length
! {
! get { return buffer.Length; }
! }
#endregion
***************
*** 59,90 ****
}
! public TlsStreamReader Reader
! {
! get
! {
! if (canRead)
! {
! return reader;
! }
! throw new InvalidOperationException();
! }
! }
! public TlsStreamWriter Writer
{
! get
! {
! if (canWrite)
! {
! return writer;
! }
! throw new InvalidOperationException();
! }
}
! #endregion
!
! public TlsHandshakeMessage()
{
}
--- 90,105 ----
}
! #endregion
! #region CONSTRUCTORS
!
! private TlsHandshakeMessage() : base()
{
! this.buffer = new MemoryStream(0);
}
! private TlsHandshakeMessage(byte[] data) : base()
{
+ this.buffer = new MemoryStream(data, false);
}
***************
*** 96,102 ****
this.handshakeType = handshakeType;
this.contentType = contentType;
- this.writer = new TlsStreamWriter();
this.canRead = false;
! this.canWrite = true;
// Fill message contents
--- 111,116 ----
this.handshakeType = handshakeType;
this.contentType = contentType;
this.canRead = false;
! this.canWrite = true;
// Fill message contents
***************
*** 105,121 ****
public TlsHandshakeMessage(TlsSession session,
! TlsHandshakeType handshakeType,
! TlsStreamReader reader)
{
this.session = session;
this.handshakeType = handshakeType;
- this.reader = reader;
this.canRead = true;
this.canWrite = false;
!
// Parse message
this.Parse();
}
public virtual void UpdateSession()
{
--- 119,264 ----
public TlsHandshakeMessage(TlsSession session,
! TlsHandshakeType handshakeType, byte[] data) : this(data)
{
this.session = session;
this.handshakeType = handshakeType;
this.canRead = true;
this.canWrite = false;
!
// Parse message
this.Parse();
}
+ #endregion
+
+ #region SPECIFIC_READ_METHODS
+
+ public new byte ReadByte()
+ {
+ return (byte)base.ReadByte();
+ }
+
+ public short ReadInt16()
+ {
+ byte[] bytes = this.ReadBytes(2);
+
+ return IPAddress.HostToNetworkOrder(BitConverter.ToInt16(bytes, 0));
+ }
+
+ public int ReadInt24()
+ {
+ byte[] b = this.ReadBytes(3);
+
+ return ((b[0] & 0xff) << 16) | ((b[1] & 0xff) << 8) | (b[2] & 0xff);
+ }
+
+ public int ReadInt32()
+ {
+ byte[] bytes = this.ReadBytes(4);
+
+ return IPAddress.HostToNetworkOrder(BitConverter.ToInt32(bytes, 0));
+ }
+
+ public long ReadInt64()
+ {
+ byte[] bytes = this.ReadBytes(8);
+
+ return IPAddress.HostToNetworkOrder(BitConverter.ToInt64(bytes, 0));
+ }
+
+ public byte[] ReadBytes(int count)
+ {
+ byte[] bytes = new byte[count];
+ this.Read(bytes, 0, count);
+
+ return bytes;
+ }
+
+ #endregion
+
+ #region SPECIFIC_WRITE_METHODS
+
+ public void Write(byte value)
+ {
+ WriteByte(value);
+ }
+
+ public void Write(short value)
+ {
+ byte[] bytes = BitConverter.GetBytes((short)IPAddress.HostToNetworkOrder(value));
+ Write(bytes);
+ }
+
+ public void WriteInt24(int value)
+ {
+ int int24 = IPAddress.HostToNetworkOrder(value);
+ byte[] content = new byte[3];
+
+ System.Array.Copy(BitConverter.GetBytes(int24), 1, content, 0, 3);
+
+ Write(content);
+ }
+
+ public void Write(int value)
+ {
+ byte[] bytes = BitConverter.GetBytes((int)IPAddress.HostToNetworkOrder(value));
+ Write(bytes);
+ }
+
+ public void Write(long value)
+ {
+ byte[] bytes = BitConverter.GetBytes((long)IPAddress.HostToNetworkOrder(value));
+ Write(bytes);
+ }
+
+ public void Write(byte[] buffer)
+ {
+ Write(buffer, 0, buffer.Length);
+ }
+
+ #endregion
+
+ #region STREAM_METHODS
+
+ public override void Flush()
+ {
+ buffer.Flush();
+ }
+
+ public override void SetLength(long length)
+ {
+ buffer.SetLength(length);
+ }
+
+ public override long Seek(long offset, System.IO.SeekOrigin loc)
+ {
+ return buffer.Seek(offset, loc);
+ }
+
+ public override int Read(byte[] buffer, int offset, int count)
+ {
+ if (canRead)
+ {
+ return this.buffer.Read(buffer, offset, count);
+ }
+ throw new InvalidOperationException("Read operations are not allowed by this stream");
+ }
+
+ public override void Write(byte[] buffer, int offset, int count)
+ {
+ if (canWrite)
+ {
+ this.buffer.Write(buffer, offset, count);
+ }
+ else
+ {
+ throw new InvalidOperationException("Write operations are not allowed by this stream");
+ }
+ }
+
+ #endregion
+
+ #region METHODS
+
public virtual void UpdateSession()
{
***************
*** 144,149 ****
c.Write((byte)HandshakeType);
! c.WriteInt24((int)writer.Length);
! c.Write(writer.GetBytes());
result = c.GetBytes();
--- 287,292 ----
c.Write((byte)HandshakeType);
! c.WriteInt24((int)Length);
! c.Write(buffer.ToArray());
result = c.GetBytes();
***************
*** 163,175 ****
public void Reset()
{
! if (canWrite)
! {
! writer.Reset();
! }
! if (canRead)
! {
! reader.Reset();
! }
}
}
}
--- 306,314 ----
public void Reset()
{
! buffer.SetLength(0);
! buffer.Position = 0;
}
+
+ #endregion
}
}
|