pgsqlclient-checkins Mailing List for PostgreSqlClient (Page 45)
Status: Inactive
Brought to you by:
carlosga_fb
You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(120) |
Aug
(95) |
Sep
(95) |
Oct
(213) |
Nov
(114) |
Dec
(64) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(6) |
Feb
(134) |
Mar
(88) |
Apr
(28) |
May
(22) |
Jun
(15) |
Jul
(23) |
Aug
(2) |
Sep
(15) |
Oct
(2) |
Nov
(6) |
Dec
|
| 2005 |
Jan
(8) |
Feb
(6) |
Mar
|
Apr
(42) |
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
(84) |
Oct
|
Nov
|
Dec
|
| 2006 |
Jan
|
Feb
|
Mar
(84) |
Apr
(46) |
May
(40) |
Jun
(8) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <car...@us...> - 2003-09-15 21:35:08
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10 In directory sc8-pr-cvs1:/tmp/cvs-serv7707 Modified Files: changelog.txt Log Message: Updated CHANGELOG.TXT Index: changelog.txt =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/changelog.txt,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** changelog.txt 14 Sep 2003 19:22:05 -0000 1.24 --- changelog.txt 15 Sep 2003 21:35:05 -0000 1.25 *************** *** 4,7 **** --- 4,13 ---- 2003-09-14 Carlos Guzmán Álvarez <car...@te...> + * Added some improvements to TLS connections. + + * Fixed some problems in Database Schema support. + + 2003-09-14 Carlos Guzmán Álvarez <car...@te...> + * The TLS can now finish the Handshake protocol against the PostgreSQL server, and the provider can connect to the server using TLS connections. |
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/DbSchema
In directory sc8-pr-cvs1:/tmp/cvs-serv7461
Modified Files:
PgFunctionPrivilegesSchema.cs PgTablePrivilegesSchema.cs
PgTriggersSchema.cs PgViewPrivilegesSchema.cs
Log Message:
* Added some improvements to TLS connections.
* Fixed some problems in Database Schema support.
Index: PgFunctionPrivilegesSchema.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/DbSchema/PgFunctionPrivilegesSchema.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** PgFunctionPrivilegesSchema.cs 2 Aug 2003 21:11:37 -0000 1.2
--- PgFunctionPrivilegesSchema.cs 15 Sep 2003 21:34:06 -0000 1.3
***************
*** 90,106 ****
foreach (DataRow row in tablesSchema.Rows)
{
! PgPrivilege[] priv = DecodePrivileges((string[])row["PRIVILEGES"]);
!
! for (int i = 0; i < priv.Length; i++)
{
! DataRow newRow = privileges.NewRow();
! newRow["FUNCTION_SCHEMA"] = row["FUNCTION_SCHEMA"];
! newRow["FUNCTION_NAME"] = row["FUNCTION_NAME"];
! newRow["USER_NAME"] = priv[i].User;
! FillPrivileges(newRow, priv[i].Privileges);
! privileges.Rows.Add(newRow);
}
}
--- 90,109 ----
foreach (DataRow row in tablesSchema.Rows)
{
! if (row["PRIVILEGES"] != System.DBNull.Value)
{
! PgPrivilege[] priv = DecodePrivileges((string[])row["PRIVILEGES"]);
! for (int i = 0; i < priv.Length; i++)
! {
! DataRow newRow = privileges.NewRow();
! newRow["FUNCTION_SCHEMA"] = row["FUNCTION_SCHEMA"];
! newRow["FUNCTION_NAME"] = row["FUNCTION_NAME"];
! newRow["USER_NAME"] = priv[i].User;
! FillPrivileges(newRow, priv[i].Privileges);
!
! privileges.Rows.Add(newRow);
! }
}
}
Index: PgTablePrivilegesSchema.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/DbSchema/PgTablePrivilegesSchema.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** PgTablePrivilegesSchema.cs 2 Aug 2003 21:11:37 -0000 1.2
--- PgTablePrivilegesSchema.cs 15 Sep 2003 21:34:06 -0000 1.3
***************
*** 81,97 ****
foreach (DataRow row in tablesSchema.Rows)
{
! PgPrivilege[] priv = DecodePrivileges((string[])row["PRIVILEGES"]);
!
! for (int i = 0; i < priv.Length; i++)
{
! DataRow newRow = privileges.NewRow();
! newRow["TABLE_SCHEMA"] = row["TABLE_SCHEMA"];
! newRow["TABLE_NAME"] = row["TABLE_NAME"];
! newRow["USER_NAME"] = priv[i].User;
! FillPrivileges(newRow, priv[i].Privileges);
! privileges.Rows.Add(newRow);
}
}
--- 81,100 ----
foreach (DataRow row in tablesSchema.Rows)
{
! if (row["PRIVILEGES"] != System.DBNull.Value)
{
! PgPrivilege[] priv = DecodePrivileges((string[])row["PRIVILEGES"]);
! for (int i = 0; i < priv.Length; i++)
! {
! DataRow newRow = privileges.NewRow();
! newRow["TABLE_SCHEMA"] = row["TABLE_SCHEMA"];
! newRow["TABLE_NAME"] = row["TABLE_NAME"];
! newRow["USER_NAME"] = priv[i].User;
! FillPrivileges(newRow, priv[i].Privileges);
!
! privileges.Rows.Add(newRow);
! }
}
}
Index: PgTriggersSchema.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/DbSchema/PgTriggersSchema.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** PgTriggersSchema.cs 2 Aug 2003 21:11:37 -0000 1.2
--- PgTriggersSchema.cs 15 Sep 2003 21:34:06 -0000 1.3
***************
*** 42,62 ****
public override void AddRestrictionColumns()
{
! AddRestrictionColumn("pg_namespace.nspname", "PROCEDURE_SCHEMA", null);
! AddRestrictionColumn("pg_proc.proname", "PROCEDURE_NAME", null);
}
public override void AddDataColumns()
{
! AddDataColumn("pg_language.lanname", "PROCEDURE_LANGUAGE");
! AddDataColumn("pg_proc.proisagg", "IS_AGGREGATE");
! AddDataColumn("pg_proc.prosecdef", "IS_SECURITY_DEFINER");
! AddDataColumn("pg_proc.proisstrict", "IS_STRICT");
! AddDataColumn("pg_proc.proretset", "RETURNS_SET");
}
public override void AddJoins()
{
! AddJoin("left join", "pg_namespace", "pg_proc.pronamespace = pg_namespace.oid");
! AddJoin("left join", "pg_language", "pg_proc.prolang = pg_language.oid");
}
--- 42,66 ----
public override void AddRestrictionColumns()
{
! AddRestrictionColumn("pg_namespace.nspname" , "TRIGGER_SCHEMA", null);
! AddRestrictionColumn("pg_proc.proname" , "TRIGGER_NAME", null);
! AddRestrictionColumn("pg_class.relnamespace", "TABLE_SCHEMA", null);
! AddRestrictionColumn("pg_class.relname" , "TABLE_NAME", null);
}
public override void AddDataColumns()
{
! AddDataColumn("pg_language.lanname" , "PROCEDURE_LANGUAGE");
! AddDataColumn("pg_proc.proisagg" , "IS_AGGREGATE");
! AddDataColumn("pg_proc.prosecdef" , "IS_SECURITY_DEFINER");
! AddDataColumn("pg_proc.proisstrict" , "IS_STRICT");
! AddDataColumn("pg_proc.proretset" , "RETURNS_SET");
}
public override void AddJoins()
{
! AddJoin("left join", "pg_class" , "pg_trigger.tgconstrrelid = pg_class.oid");
! AddJoin("left join", "pg_proc" , "pg_trigger.tgfoid = pg_proc.oid");
! AddJoin("left join", "pg_namespace" , "pg_proc.pronamespace = pg_namespace.oid");
! AddJoin("left join", "pg_language" , "pg_proc.prolang = pg_language.oid");
}
Index: PgViewPrivilegesSchema.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/DbSchema/PgViewPrivilegesSchema.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** PgViewPrivilegesSchema.cs 2 Aug 2003 21:11:37 -0000 1.2
--- PgViewPrivilegesSchema.cs 15 Sep 2003 21:34:06 -0000 1.3
***************
*** 81,97 ****
foreach (DataRow row in tablesSchema.Rows)
{
! PgPrivilege[] priv = DecodePrivileges((string[])row["PRIVILEGES"]);
!
! for (int i = 0; i < priv.Length; i++)
{
! DataRow newRow = privileges.NewRow();
! newRow["VIEW_SCHEMA"] = row["VIEW_SCHEMA"];
! newRow["VIEW_NAME"] = row["VIEW_NAME"];
! newRow["USER_NAME"] = priv[i].User;
! FillPrivileges(newRow, priv[i].Privileges);
! privileges.Rows.Add(newRow);
}
}
--- 81,100 ----
foreach (DataRow row in tablesSchema.Rows)
{
! if (row["PRIVILEGES"] != System.DBNull.Value)
{
! PgPrivilege[] priv = DecodePrivileges((string[])row["PRIVILEGES"]);
! for (int i = 0; i < priv.Length; i++)
! {
! DataRow newRow = privileges.NewRow();
! newRow["VIEW_SCHEMA"] = row["VIEW_SCHEMA"];
! newRow["VIEW_NAME"] = row["VIEW_NAME"];
! newRow["USER_NAME"] = priv[i].User;
! FillPrivileges(newRow, priv[i].Privileges);
!
! privileges.Rows.Add(newRow);
! }
}
}
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient
In directory sc8-pr-cvs1:/tmp/cvs-serv7360
Modified Files:
PgDbClient.cs PgOutputPacket.cs PgResponsePacket.cs
PgStatement.cs
Log Message:
* Added some improvements to TLS connections.
* Fixed some problems in Database Schema support.
Index: PgDbClient.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgDbClient.cs,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** PgDbClient.cs 15 Sep 2003 11:56:19 -0000 1.12
--- PgDbClient.cs 15 Sep 2003 21:33:45 -0000 1.13
***************
*** 229,281 ****
PgResponsePacket responsePacket = null;
- if (buffer.Length == 0 || buffer.EOF)
- {
- buffer = new PgResponsePacket(receive.ReadBytes());
- }
-
- // Seems that in TLS mode PostgreSQL sends messages with length 0
- // if we have a packet like this we will return an empty packet in
- // response
- if (buffer.Length == 0)
- {
- return new PgResponsePacket('\0', new byte[0]{});
- }
-
lock (this)
{
! char type = buffer.ReadChar();
!
! if (sslRequest.Length == 0 || !sslRequest[0])
{
! int length = buffer.ReadInt() - 4;
! if (length > (buffer.Length - buffer.Position))
! {
! PgOutputPacket w = new PgOutputPacket();
! w.Write(buffer.ReadBytes(length));
! while (true)
! {
! byte[] b = receive.ReadBytes();
! w.Write(b);
!
! if (b.Length != 0)
! {
! break;
! }
! }
!
! buffer.Reset();
! buffer = new PgResponsePacket(w.GetBytes());
! w.Reset();
! }
! responsePacket = new PgResponsePacket(type, buffer.ReadBytes(length));
}
else
{
! responsePacket = new PgResponsePacket(type, new byte[0]{});
}
- responsePacket.Encoding = Settings.Encoding;
! switch (type)
{
case PgBackendCodes.ERROR_RESPONSE:
--- 229,250 ----
PgResponsePacket responsePacket = null;
lock (this)
{
! bool isSslRequest = false;
! if (sslRequest.Length != 0)
{
! isSslRequest = sslRequest[0];
! }
! if (settings.SSL)
! {
! responsePacket = this.receiveTLSPacket(isSslRequest);
}
else
{
! responsePacket = this.receiveStandardPacket(isSslRequest);
}
! switch (responsePacket.Message)
{
case PgBackendCodes.ERROR_RESPONSE:
***************
*** 308,311 ****
--- 277,362 ----
return responsePacket;
+ }
+
+ private PgResponsePacket receiveStandardPacket(bool isSslRequest)
+ {
+ PgResponsePacket responsePacket = null;
+
+ int length = 0;
+ char type = this.receive.ReadChar();
+ if (!isSslRequest)
+ {
+ length = IPAddress.HostToNetworkOrder(this.receive.ReadInt32()) - 4;
+ }
+ if (isSslRequest || length == 0)
+ {
+ responsePacket = new PgResponsePacket(type, new byte[0]{});
+ }
+ else
+ {
+ responsePacket = new PgResponsePacket(type,
+ this.receive.ReadBytes(length));
+ }
+ responsePacket.Encoding = Settings.Encoding;
+
+ return responsePacket;
+ }
+
+ private PgResponsePacket receiveTLSPacket(bool isSslRequest)
+ {
+ PgResponsePacket responsePacket = null;
+ if (buffer.Length == 1 ||
+ buffer.Pending < 4 ||
+ buffer.EOF)
+ {
+ updateBuffer();
+ }
+
+ // Seems that in TLS mode PostgreSQL sends messages with length 0
+ // if we have a packet like this we will return an empty packet in
+ // response
+ if (buffer.Length == 0)
+ {
+ return new PgResponsePacket(' ', new byte[0]{});
+ }
+
+ char type = buffer.ReadChar();
+ if (isSslRequest)
+ {
+ responsePacket = new PgResponsePacket(type, new byte[0]{});
+ }
+ else
+ {
+ int length = buffer.ReadInt() - 4;
+ while (length > buffer.Pending)
+ {
+ this.updateBuffer();
+ }
+ responsePacket = new PgResponsePacket(type, buffer.ReadBytes(length));
+ }
+ responsePacket.Encoding = Settings.Encoding;
+
+ return responsePacket;
+ }
+
+ private void updateBuffer()
+ {
+ PgOutputPacket w = new PgOutputPacket();
+ w.Write(buffer.ReadBytes((int)buffer.Pending));
+ while (true)
+ {
+ byte[] b = receive.ReadBytes();
+ w.Write(b);
+
+ if (b.Length != 0)
+ {
+ break;
+ }
+ }
+
+ buffer.Reset();
+ buffer = new PgResponsePacket(w.GetBytes());
+
+ w.Reset();
}
Index: PgOutputPacket.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgOutputPacket.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** PgOutputPacket.cs 15 Aug 2003 17:50:09 -0000 1.2
--- PgOutputPacket.cs 15 Sep 2003 21:33:45 -0000 1.3
***************
*** 39,43 ****
{
get { return ((MemoryStream)BaseStream).Position; }
! set { ((MemoryStream)BaseStream).Position = value; }
}
--- 39,47 ----
{
get { return ((MemoryStream)BaseStream).Position; }
! }
!
! public long Length
! {
! get { return ((MemoryStream)BaseStream).Length; }
}
Index: PgResponsePacket.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgResponsePacket.cs,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** PgResponsePacket.cs 14 Sep 2003 14:43:01 -0000 1.3
--- PgResponsePacket.cs 15 Sep 2003 21:33:45 -0000 1.4
***************
*** 74,77 ****
--- 74,82 ----
}
+ public long Pending
+ {
+ get { return Length - Position; }
+ }
+
#endregion
Index: PgStatement.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgStatement.cs,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** PgStatement.cs 15 Sep 2003 12:21:15 -0000 1.5
--- PgStatement.cs 15 Sep 2003 21:33:45 -0000 1.6
***************
*** 357,361 ****
{
response = db.ReceiveResponsePacket();
! processSqlPacket(response);
}
--- 357,361 ----
{
response = db.ReceiveResponsePacket();
! processSqlPacket(response);
}
***************
*** 405,410 ****
// Receive response
! PgResponsePacket response = db.ReceiveResponsePacket();
! processSqlPacket(response);
// Update status
--- 405,414 ----
// Receive response
! PgResponsePacket response = new PgResponsePacket();
! while (response.Message != PgBackendCodes.READY_FOR_QUERY)
! {
! response = db.ReceiveResponsePacket();
! processSqlPacket(response);
! }
// Update status
***************
*** 685,691 ****
private void processDataRow(PgResponsePacket packet)
{
! int fieldCount = packet.ReadShort();
!
! object[] values = new object[fieldCount];
for (int i = 0; i < values.Length; i++)
--- 689,694 ----
private void processDataRow(PgResponsePacket packet)
{
! int fieldCount = packet.ReadShort();
! object[] values = new object[fieldCount];
for (int i = 0; i < values.Length; i++)
***************
*** 704,709 ****
default:
values[i] = packet.ReadValue(
! rowDescriptor.Fields[i].DataType,
! length);
break;
}
--- 707,712 ----
default:
values[i] = packet.ReadValue(
! rowDescriptor.Fields[i].DataType,
! length);
break;
}
|
|
From: <car...@us...> - 2003-09-15 16:43:01
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient.UnitTests/source In directory sc8-pr-cvs1:/tmp/cvs-serv6373 Added Files: PgDatabaseSchemaTest.cs Log Message: Added new NUnit test fixture for Database Schema features. --- NEW FILE: PgDatabaseSchemaTest.cs --- (This appears to be a binary file; contents omitted.) |
|
From: <car...@us...> - 2003-09-15 16:40:42
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient.UnitTests/source
In directory sc8-pr-cvs1:/tmp/cvs-serv5928
Modified Files:
PgBaseTest.cs PgConnectionTest.cs
Log Message:
Update NUnit tests
Index: PgBaseTest.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient.UnitTests/source/PgBaseTest.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** PgBaseTest.cs 3 Aug 2003 11:03:01 -0000 1.2
--- PgBaseTest.cs 15 Sep 2003 16:40:38 -0000 1.3
***************
*** 46,55 ****
StringBuilder connString = new StringBuilder();
connString.AppendFormat(
! "User={0};Password={1};Database={2};DataSource={3};Port={4};",
ConfigurationSettings.AppSettings["User"],
ConfigurationSettings.AppSettings["Password"],
ConfigurationSettings.AppSettings["Database"],
ConfigurationSettings.AppSettings["DataSource"],
! ConfigurationSettings.AppSettings["Port"]);
connection = new PgConnection(connString.ToString());
--- 46,56 ----
StringBuilder connString = new StringBuilder();
connString.AppendFormat(
! "User={0};Password={1};Database={2};DataSource={3};Port={4};SSL={5}",
ConfigurationSettings.AppSettings["User"],
ConfigurationSettings.AppSettings["Password"],
ConfigurationSettings.AppSettings["Database"],
ConfigurationSettings.AppSettings["DataSource"],
! ConfigurationSettings.AppSettings["Port"],
! ConfigurationSettings.AppSettings["SSL"]);
connection = new PgConnection(connString.ToString());
***************
*** 78,87 ****
StringBuilder connString = new StringBuilder();
connString.AppendFormat(
! "User={0};Password={1};Database={2};DataSource={3};Port={4};",
ConfigurationSettings.AppSettings["User"],
ConfigurationSettings.AppSettings["Password"],
String.Empty,
ConfigurationSettings.AppSettings["DataSource"],
! ConfigurationSettings.AppSettings["Port"]);
PgConnection connection = new PgConnection(connString.ToString());
--- 79,89 ----
StringBuilder connString = new StringBuilder();
connString.AppendFormat(
! "User={0};Password={1};Database={2};DataSource={3};Port={4};SSL={5}",
ConfigurationSettings.AppSettings["User"],
ConfigurationSettings.AppSettings["Password"],
String.Empty,
ConfigurationSettings.AppSettings["DataSource"],
! ConfigurationSettings.AppSettings["Port"],
! ConfigurationSettings.AppSettings["SSL"]);
PgConnection connection = new PgConnection(connString.ToString());
***************
*** 102,111 ****
StringBuilder connString = new StringBuilder();
connString.AppendFormat(
! "User={0};Password={1};Database={2};DataSource={3};Port={4};",
ConfigurationSettings.AppSettings["User"],
ConfigurationSettings.AppSettings["Password"],
String.Empty,
ConfigurationSettings.AppSettings["DataSource"],
! ConfigurationSettings.AppSettings["Port"]);
PgConnection connection = new PgConnection(connString.ToString());
--- 104,114 ----
StringBuilder connString = new StringBuilder();
connString.AppendFormat(
! "User={0};Password={1};Database={2};DataSource={3};Port={4};SSL={5}",
ConfigurationSettings.AppSettings["User"],
ConfigurationSettings.AppSettings["Password"],
String.Empty,
ConfigurationSettings.AppSettings["DataSource"],
! ConfigurationSettings.AppSettings["Port"],
! ConfigurationSettings.AppSettings["SSL"]);
PgConnection connection = new PgConnection(connString.ToString());
Index: PgConnectionTest.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient.UnitTests/source/PgConnectionTest.cs,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** PgConnectionTest.cs 2 Aug 2003 19:43:03 -0000 1.1.1.1
--- PgConnectionTest.cs 15 Sep 2003 16:40:38 -0000 1.2
***************
*** 83,95 ****
PgCommand command = Connection.CreateCommand();
}
-
- [Test]
- public void DbSchemaTest()
- {
- Connection.GetDbSchemaTable(PgDbSchemaType.Aggregates, null);
- Connection.GetDbSchemaTable(PgDbSchemaType.Casts, null);
- Connection.GetDbSchemaTable(PgDbSchemaType.Check_Constraints, null);
- Connection.GetDbSchemaTable(PgDbSchemaType.Columns, null);
- }
}
}
--- 83,86 ----
|
|
From: <car...@us...> - 2003-09-15 12:21:18
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient
In directory sc8-pr-cvs1:/tmp/cvs-serv9666
Modified Files:
PgStatement.cs
Log Message:
Improved protocol handling
Index: PgStatement.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgStatement.cs,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** PgStatement.cs 15 Sep 2003 11:56:19 -0000 1.4
--- PgStatement.cs 15 Sep 2003 12:21:15 -0000 1.5
***************
*** 195,201 ****
db.Flush();
! // Receive reponse
! PgResponsePacket response = db.ReceiveResponsePacket();
! processSqlPacket(response);
// Clear actual row list
--- 195,205 ----
db.Flush();
! // Read until PARSE COMPLETE message is received
! PgResponsePacket response = new PgResponsePacket();
! while (response.Message != PgBackendCodes.PARSE_COMPLETE)
! {
! response = db.ReceiveResponsePacket();
! processSqlPacket(response);
! }
// Clear actual row list
***************
*** 245,250 ****
// Receive response
- // case PgBackendCodes.EMPTY_QUERY_RESPONSE:
-
PgResponsePacket response = new PgResponsePacket();
while (response.Message != PgBackendCodes.ROW_DESCRIPTION &&
--- 249,252 ----
***************
*** 312,316 ****
db.Flush();
! // Read BIND Complete message
PgResponsePacket response = new PgResponsePacket();
while (response.Message != PgBackendCodes.BIND_COMPLETE)
--- 314,318 ----
db.Flush();
! // Read until BIND COMPLETE message is received
PgResponsePacket response = new PgResponsePacket();
while (response.Message != PgBackendCodes.BIND_COMPLETE)
***************
*** 506,512 ****
db.Flush();
! // Receive repsonse
! PgResponsePacket response = db.ReceiveResponsePacket();
! processSqlPacket(response);
// Clear rows
--- 508,518 ----
db.Flush();
! // Read until CLOSE COMPLETE message is received
! PgResponsePacket response = new PgResponsePacket();
! while (response.Message != PgBackendCodes.CLOSE_COMPLETE)
! {
! response = db.ReceiveResponsePacket();
! processSqlPacket(response);
! }
// Clear rows
|
|
From: <car...@us...> - 2003-09-15 11:56:22
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient
In directory sc8-pr-cvs1:/tmp/cvs-serv4460
Modified Files:
PgDbClient.cs PgStatement.cs
Log Message:
Changes for bettrer handling of TLS connections
Index: PgDbClient.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgDbClient.cs,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** PgDbClient.cs 14 Sep 2003 19:14:37 -0000 1.11
--- PgDbClient.cs 15 Sep 2003 11:56:19 -0000 1.12
***************
*** 234,237 ****
--- 234,245 ----
}
+ // Seems that in TLS mode PostgreSQL sends messages with length 0
+ // if we have a packet like this we will return an empty packet in
+ // response
+ if (buffer.Length == 0)
+ {
+ return new PgResponsePacket('\0', new byte[0]{});
+ }
+
lock (this)
{
***************
*** 241,244 ****
--- 249,272 ----
{
int length = buffer.ReadInt() - 4;
+ if (length > (buffer.Length - buffer.Position))
+ {
+ PgOutputPacket w = new PgOutputPacket();
+ w.Write(buffer.ReadBytes(length));
+ while (true)
+ {
+ byte[] b = receive.ReadBytes();
+ w.Write(b);
+
+ if (b.Length != 0)
+ {
+ break;
+ }
+ }
+
+ buffer.Reset();
+ buffer = new PgResponsePacket(w.GetBytes());
+
+ w.Reset();
+ }
responsePacket = new PgResponsePacket(type, buffer.ReadBytes(length));
}
Index: PgStatement.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgStatement.cs,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** PgStatement.cs 20 Aug 2003 11:53:19 -0000 1.3
--- PgStatement.cs 15 Sep 2003 11:56:19 -0000 1.4
***************
*** 312,318 ****
db.Flush();
! // Receive response
! PgResponsePacket response = db.ReceiveResponsePacket();
! processSqlPacket(response);
// Update status
--- 312,322 ----
db.Flush();
! // Read BIND Complete message
! PgResponsePacket response = new PgResponsePacket();
! while (response.Message != PgBackendCodes.BIND_COMPLETE)
! {
! response = db.ReceiveResponsePacket();
! processSqlPacket(response);
! }
// Update status
|
|
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
|
|
From: <car...@us...> - 2003-09-15 10:25:25
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source
In directory sc8-pr-cvs1:/tmp/cvs-serv18962
Modified Files:
TlsReader.cs TlsSession.cs TlsStreamWriter.cs
Log Message:
- Improved application data messages handling
- Non definitive change to readFully method
Index: TlsReader.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsReader.cs,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** TlsReader.cs 14 Sep 2003 14:42:34 -0000 1.18
--- TlsReader.cs 15 Sep 2003 10:25:22 -0000 1.19
***************
*** 144,150 ****
byte b = base.ReadByte();
ms.WriteByte(b);
! while (session.NetworkStream.DataAvailable)
{
! ms.WriteByte(base.ReadByte());
}
--- 144,151 ----
byte b = base.ReadByte();
ms.WriteByte(b);
! while (session.Socket.Available != 0)
{
! byte[] buffer = base.ReadBytes(session.Socket.Available);
! ms.Write(buffer, 0, buffer.Length);
}
***************
*** 335,342 ****
}
- byte[] result = null;
-
TlsStreamReader buffer = new TlsStreamReader(this.readFully());
while (!buffer.EOF)
{
--- 336,342 ----
}
TlsStreamReader buffer = new TlsStreamReader(this.readFully());
+ TlsStreamWriter result = new TlsStreamWriter();
while (!buffer.EOF)
{
***************
*** 372,376 ****
case TlsContentType.Alert:
processAlert((TlsAlertLevel)message.ReadByte(),
! (TlsAlertDescription)message.ReadByte());
break;
--- 372,376 ----
case TlsContentType.Alert:
processAlert((TlsAlertLevel)message.ReadByte(),
! (TlsAlertDescription)message.ReadByte());
break;
***************
*** 381,387 ****
case TlsContentType.ApplicationData:
! result = message.GetBytes();
! #warning "Fix this"
! message.ReadBytes(message.GetBytes().Length);
break;
--- 381,385 ----
case TlsContentType.ApplicationData:
! result.Write(message.GetBytes());
break;
***************
*** 403,407 ****
}
! return result;
}
--- 401,405 ----
}
! return result.GetBytes();
}
***************
*** 409,414 ****
{
short val = base.ReadInt16();
-
-
return System.Net.IPAddress.HostToNetworkOrder(val);
--- 407,410 ----
Index: TlsSession.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsSession.cs,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** TlsSession.cs 13 Sep 2003 11:09:56 -0000 1.15
--- TlsSession.cs 15 Sep 2003 10:25:22 -0000 1.16
***************
*** 100,103 ****
--- 100,108 ----
}
+ internal Socket Socket
+ {
+ get { return socket; }
+ }
+
#endregion
Index: TlsStreamWriter.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsStreamWriter.cs,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TlsStreamWriter.cs 12 Sep 2003 23:49:21 -0000 1.3
--- TlsStreamWriter.cs 15 Sep 2003 10:25:22 -0000 1.4
***************
*** 26,29 ****
--- 26,38 ----
internal class TlsStreamWriter : BinaryWriter
{
+ #region PROPERTIES
+
+ public long Length
+ {
+ get { return ((MemoryStream)BaseStream).Length; }
+ }
+
+ #endregion
+
#region CONSTRUCTORS
|
|
From: <car...@us...> - 2003-09-15 10:24:20
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake In directory sc8-pr-cvs1:/tmp/cvs-serv18728 Modified Files: TlsClientHandshakeMessage.cs TlsHandshakeHashes.cs Log Message: Updated files Index: TlsClientHandshakeMessage.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsClientHandshakeMessage.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TlsClientHandshakeMessage.cs 14 Sep 2003 10:49:36 -0000 1.3 --- TlsClientHandshakeMessage.cs 15 Sep 2003 10:24:17 -0000 1.4 *************** *** 89,93 **** c.Write((byte)HandshakeType); ! c.WriteInt24(this.GetBytes().Length); c.Write(this.GetBytes()); --- 89,94 ---- c.Write((byte)HandshakeType); ! // c.WriteInt24(this.GetBytes().Length); ! c.WriteInt24((int)this.Length); c.Write(this.GetBytes()); Index: TlsHandshakeHashes.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsHandshakeHashes.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TlsHandshakeHashes.cs 1 Sep 2003 10:21:20 -0000 1.2 --- TlsHandshakeHashes.cs 15 Sep 2003 10:24:17 -0000 1.3 *************** *** 74,78 **** sha.Initialize(); ! byte[] tmp = new byte[messages.GetBytes().Length]; md5.TransformBlock(messages.GetBytes(), 0, tmp.Length, tmp, 0); --- 74,79 ---- sha.Initialize(); ! // byte[] tmp = new byte[messages.GetBytes().Length]; ! byte[] tmp = new byte[messages.Length]; md5.TransformBlock(messages.GetBytes(), 0, tmp.Length, tmp, 0); |
|
From: <car...@us...> - 2003-09-14 19:22:08
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10 In directory sc8-pr-cvs1:/tmp/cvs-serv2234 Modified Files: changelog.txt Log Message: Updated CHANGELOG.TXT Index: changelog.txt =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/changelog.txt,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** changelog.txt 12 Sep 2003 20:48:26 -0000 1.23 --- changelog.txt 14 Sep 2003 19:22:05 -0000 1.24 *************** *** 2,5 **** --- 2,14 ---- ------------------------------------------------------- + 2003-09-14 Carlos Guzmán Álvarez <car...@te...> + + * The TLS can now finish the Handshake protocol against the PostgreSQL server, + and the provider can connect to the server using TLS connections. + + * source/NPgClient/PgDbClient.cs: + + - Added changes for better processing of messages received in secure connections ( TLS ) + < ----------------------------------- Beta 2 ---------------------------------- > |
|
From: <car...@us...> - 2003-09-14 19:14:40
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient
In directory sc8-pr-cvs1:/tmp/cvs-serv550
Modified Files:
PgDbClient.cs
Log Message:
Added change for better processing of messages received in secure connections ( TLS )
Index: PgDbClient.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgDbClient.cs,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** PgDbClient.cs 14 Sep 2003 14:20:29 -0000 1.10
--- PgDbClient.cs 14 Sep 2003 19:14:37 -0000 1.11
***************
*** 56,59 ****
--- 56,60 ----
private char transactionStatus;
private TlsSession session;
+ private PgResponsePacket buffer;
#endregion
***************
*** 117,121 ****
public PgDbClient()
{
! parameterStatus = new Hashtable();
}
--- 118,123 ----
public PgDbClient()
{
! this.parameterStatus = new Hashtable();
! this.buffer = new PgResponsePacket();
}
***************
*** 225,304 ****
public PgResponsePacket ReceiveResponsePacket(params bool[] sslRequest)
{
! char type;
! int length;
! PgResponsePacket responsePacket = null;
lock (this)
{
! length = 0;
! if ((sslRequest.Length > 0 && sslRequest[0]))
{
! type = receive.ReadChar();
! return new PgResponsePacket(type, new byte[0]);
}
else
{
! if (settings.SSL)
! {
! // TLS/SSL Application data contents
! PgResponsePacket tmpPacket = new PgResponsePacket(receive.ReadBytes());
!
! type = tmpPacket.ReadChar();
! length = tmpPacket.ReadInt() - 4;
!
! if (length != 0)
! {
! responsePacket = new PgResponsePacket(type, tmpPacket.ReadBytes(length));
! }
! tmpPacket.Reset();
! }
! else
{
! type = (char)receive.ReadByte();
! length = IPAddress.HostToNetworkOrder(receive.ReadInt32()) - 4;
! if (length != 0)
! {
! responsePacket = new PgResponsePacket(type, receive.ReadBytes(length));
! }
}
! if (length == 0)
{
! responsePacket = new PgResponsePacket(type, new byte[0]);
}
! switch (type)
{
! case PgBackendCodes.ERROR_RESPONSE:
! {
! // Read the error message and trow the exception
! PgClientException ex = processErrorPacket(responsePacket);
!
! throw ex;
! }
!
! case PgBackendCodes.NOTICE_RESPONSE:
! {
! // Read the notice message and raise an InfoMessage event
! PgClientException ex = processErrorPacket(responsePacket);
!
! this.InfoMessage(this, new PgClientMessageEventArgs(ex));
! }
! break;
!
! case PgBackendCodes.NOTIFICATION_RESPONSE:
! {
! processNotificationResponse(responsePacket);
! }
! break;
!
! default:
! break;
}
! }
! responsePacket.Encoding = Settings.Encoding;
}
--- 227,280 ----
public PgResponsePacket ReceiveResponsePacket(params bool[] sslRequest)
{
! PgResponsePacket responsePacket = null;
!
! if (buffer.Length == 0 || buffer.EOF)
! {
! buffer = new PgResponsePacket(receive.ReadBytes());
! }
lock (this)
{
! char type = buffer.ReadChar();
!
! if (sslRequest.Length == 0 || !sslRequest[0])
{
! int length = buffer.ReadInt() - 4;
! responsePacket = new PgResponsePacket(type, buffer.ReadBytes(length));
}
else
{
! responsePacket = new PgResponsePacket(type, new byte[0]{});
! }
! responsePacket.Encoding = Settings.Encoding;
! switch (type)
! {
! case PgBackendCodes.ERROR_RESPONSE:
{
! // Read the error message and trow the exception
! PgClientException ex = processErrorPacket(responsePacket);
! throw ex;
}
! case PgBackendCodes.NOTICE_RESPONSE:
{
! // Read the notice message and raise an InfoMessage event
! PgClientException ex = processErrorPacket(responsePacket);
!
! this.InfoMessage(this, new PgClientMessageEventArgs(ex));
}
+ break;
! case PgBackendCodes.NOTIFICATION_RESPONSE:
{
! processNotificationResponse(responsePacket);
}
! break;
! default:
! break;
! }
}
|
|
From: <car...@us...> - 2003-09-14 14:43:04
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient
In directory sc8-pr-cvs1:/tmp/cvs-serv2574
Modified Files:
PgResponsePacket.cs
Log Message:
Added Length and Position properties
Index: PgResponsePacket.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgResponsePacket.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** PgResponsePacket.cs 20 Aug 2003 11:53:19 -0000 1.2
--- PgResponsePacket.cs 14 Sep 2003 14:43:01 -0000 1.3
***************
*** 49,52 ****
--- 49,77 ----
}
+ public long Length
+ {
+ get { return ((MemoryStream)BaseStream).Length; }
+ }
+
+ public long Position
+ {
+ get { return ((MemoryStream)BaseStream).Position; }
+ }
+
+ public bool EOF
+ {
+ get
+ {
+ if (Position < Length)
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+ }
+
#endregion
|
|
From: <car...@us...> - 2003-09-14 14:42:38
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source In directory sc8-pr-cvs1:/tmp/cvs-serv2500 Modified Files: TlsReader.cs Log Message: Minor change Index: TlsReader.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsReader.cs,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** TlsReader.cs 14 Sep 2003 10:49:09 -0000 1.17 --- TlsReader.cs 14 Sep 2003 14:42:34 -0000 1.18 *************** *** 382,385 **** --- 382,387 ---- case TlsContentType.ApplicationData: result = message.GetBytes(); + #warning "Fix this" + message.ReadBytes(message.GetBytes().Length); break; |
|
From: <car...@us...> - 2003-09-14 14:20:34
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient
In directory sc8-pr-cvs1:/tmp/cvs-serv30974
Modified Files:
PgDbClient.cs
Log Message:
Minor change
Index: PgDbClient.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgDbClient.cs,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** PgDbClient.cs 2 Sep 2003 10:32:46 -0000 1.9
--- PgDbClient.cs 14 Sep 2003 14:20:29 -0000 1.10
***************
*** 217,221 ****
{
send.Write(data);
- send.Flush();
}
--- 217,220 ----
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake
In directory sc8-pr-cvs1:/tmp/cvs-serv23338
Modified Files:
TlsClientHandshakeMessage.cs TlsClientKeyExchange.cs
TlsServerHandshakeMessage.cs
Log Message:
- Fixed client finished message.
- Fixed server handshake hashes generation with new processing method.
Index: TlsClientHandshakeMessage.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsClientHandshakeMessage.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TlsClientHandshakeMessage.cs 1 Sep 2003 10:21:20 -0000 1.2
--- TlsClientHandshakeMessage.cs 14 Sep 2003 10:49:36 -0000 1.3
***************
*** 80,84 ****
public virtual void UpdateSession()
{
- // this.session.Handshakes.Write(this.EncodeMessage());
this.session.HandshakeHashes.Update(this.EncodeMessage());
this.Reset();
--- 80,83 ----
Index: TlsClientKeyExchange.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsClientKeyExchange.cs,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** TlsClientKeyExchange.cs 13 Sep 2003 11:10:45 -0000 1.5
--- TlsClientKeyExchange.cs 14 Sep 2003 10:49:36 -0000 1.6
***************
*** 59,62 ****
--- 59,63 ----
// Write the preMasterSecret encrypted
byte[] buffer = formatter.CreateKeyExchange(preMasterSecret);
+ WriteShort((short)buffer.Length);
Write(buffer);
Index: TlsServerHandshakeMessage.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsServerHandshakeMessage.cs,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** TlsServerHandshakeMessage.cs 13 Sep 2003 07:49:12 -0000 1.4
--- TlsServerHandshakeMessage.cs 14 Sep 2003 10:49:36 -0000 1.5
***************
*** 75,80 ****
public virtual void UpdateSession()
! {
! this.session.HandshakeHashes.Update(reader.GetBytes());
}
--- 75,79 ----
public virtual void UpdateSession()
! {
}
|
|
From: <car...@us...> - 2003-09-14 10:49:33
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source
In directory sc8-pr-cvs1:/tmp/cvs-serv23266
Modified Files:
TlsCipherSuite.cs TlsCipherSuiteCollection.cs TlsReader.cs
Log Message:
- Fixed client finished message.
- Fixed server handshake hashes generation with new processing method.
Index: TlsCipherSuite.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsCipherSuite.cs,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** TlsCipherSuite.cs 1 Sep 2003 10:19:44 -0000 1.7
--- TlsCipherSuite.cs 14 Sep 2003 10:49:08 -0000 1.8
***************
*** 145,150 ****
public RSACryptoServiceProvider CreateRSA(X509Certificate certificate)
{
- // This code is from Mono.Security.X509Certificate class.
-
RSAParameters rsaParams = new RSAParameters();
--- 145,148 ----
***************
*** 289,293 ****
// however we can't feed it into RSAParameters or DSAParameters
int length = integer.Length - 1;
! byte[] uinteger = new byte[length];
Array.Copy(integer, 1, uinteger, 0, length);
--- 287,291 ----
// however we can't feed it into RSAParameters or DSAParameters
int length = integer.Length - 1;
! byte[] uinteger = new byte[length];
Array.Copy(integer, 1, uinteger, 0, length);
Index: TlsCipherSuiteCollection.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsCipherSuiteCollection.cs,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** TlsCipherSuiteCollection.cs 1 Sep 2003 10:19:44 -0000 1.7
--- TlsCipherSuiteCollection.cs 14 Sep 2003 10:49:08 -0000 1.8
***************
*** 59,63 ****
scs.Add((0x00 << 0x08) | 0x05, "TLS_RSA_WITH_RC4_128_SHA", "RC4", "SHA", false, false, 16, 16, 128, 0, 0);
scs.Add((0x00 << 0x08) | 0x04, "TLS_RSA_WITH_RC4_128_MD5", "RC4", "MD5", false, false, 16, 16, 128, 0, 0);
!
// Default CipherSuite
// scs.Add(0, "TLS_NULL_WITH_NULL_NULL", "", "", true, false, 0, 0, 0, 0, 0);
--- 59,63 ----
scs.Add((0x00 << 0x08) | 0x05, "TLS_RSA_WITH_RC4_128_SHA", "RC4", "SHA", false, false, 16, 16, 128, 0, 0);
scs.Add((0x00 << 0x08) | 0x04, "TLS_RSA_WITH_RC4_128_MD5", "RC4", "MD5", false, false, 16, 16, 128, 0, 0);
!
// Default CipherSuite
// scs.Add(0, "TLS_NULL_WITH_NULL_NULL", "", "", true, false, 0, 0, 0, 0, 0);
Index: TlsReader.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsReader.cs,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** TlsReader.cs 13 Sep 2003 10:23:10 -0000 1.16
--- TlsReader.cs 14 Sep 2003 10:49:09 -0000 1.17
***************
*** 389,392 ****
--- 389,394 ----
processHandshakeMessage(message);
}
+ // Update handshakes of current messages
+ this.session.HandshakeHashes.Update(message.GetBytes());
break;
***************
*** 405,408 ****
--- 407,412 ----
{
short val = base.ReadInt16();
+
+
return System.Net.IPAddress.HostToNetworkOrder(val);
|
|
From: <car...@us...> - 2003-09-13 11:10:48
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake In directory sc8-pr-cvs1:/tmp/cvs-serv1678 Modified Files: TlsClientKeyExchange.cs TlsServerCertificate.cs Log Message: Minor changes Index: TlsClientKeyExchange.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsClientKeyExchange.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** TlsClientKeyExchange.cs 1 Sep 2003 10:21:20 -0000 1.4 --- TlsClientKeyExchange.cs 13 Sep 2003 11:10:45 -0000 1.5 *************** *** 58,62 **** // Write the preMasterSecret encrypted ! Write(formatter.CreateKeyExchange(preMasterSecret)); // Create master secret --- 58,63 ---- // Write the preMasterSecret encrypted ! byte[] buffer = formatter.CreateKeyExchange(preMasterSecret); ! Write(buffer); // Create master secret Index: TlsServerCertificate.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsServerCertificate.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** TlsServerCertificate.cs 12 Sep 2003 23:49:35 -0000 1.4 --- TlsServerCertificate.cs 13 Sep 2003 11:10:45 -0000 1.5 *************** *** 61,65 **** #endregion ! #region PRIVATE_METHODS protected override void Parse() --- 61,65 ---- #endregion ! #region PROTECTED_METHODS protected override void Parse() |
|
From: <car...@us...> - 2003-09-13 11:10:00
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source In directory sc8-pr-cvs1:/tmp/cvs-serv1514 Modified Files: TlsSession.cs Log Message: Minor changes Index: TlsSession.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsSession.cs,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** TlsSession.cs 13 Sep 2003 10:23:10 -0000 1.14 --- TlsSession.cs 13 Sep 2003 11:09:56 -0000 1.15 *************** *** 164,168 **** // Send client hello writer.WriteRecord(TlsHandshakeType.ClientHello); - writer.Flush(); // Read server response --- 164,167 ---- *************** *** 181,185 **** // Send Client Key Exchange writer.WriteRecord(TlsHandshakeType.ClientKeyExchange); - writer.Flush(); // Now initialize session cipher with the generated keys --- 180,183 ---- |
|
From: <car...@us...> - 2003-09-13 10:23:51
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake In directory sc8-pr-cvs1:/tmp/cvs-serv24995 Modified Files: TlsServerFinished.cs Log Message: - Improved message read - Improved stream close. - Removed BufferedStreams use. Index: TlsServerFinished.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsServerFinished.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** TlsServerFinished.cs 12 Sep 2003 23:49:35 -0000 1.4 --- TlsServerFinished.cs 13 Sep 2003 10:23:47 -0000 1.5 *************** *** 39,43 **** base.UpdateSession(); ! Session.HelloDone = true; } --- 39,43 ---- base.UpdateSession(); ! Session.HandshakeFinished = true; } |
|
From: <car...@us...> - 2003-09-13 10:23:14
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source
In directory sc8-pr-cvs1:/tmp/cvs-serv24890
Modified Files:
TlsReader.cs TlsSession.cs TlsSessionSettings.cs
Log Message:
- Improved message read
- Improved stream close.
- Removed BufferedStreams use.
Index: TlsReader.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsReader.cs,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** TlsReader.cs 13 Sep 2003 07:48:49 -0000 1.15
--- TlsReader.cs 13 Sep 2003 10:23:10 -0000 1.16
***************
*** 133,148 ****
else
{
! MemoryStream ms = new MemoryStream();
!
! // This will wait until data is readed
! byte b = base.ReadByte();
! ms.WriteByte(b);
! while (session.NetworkStream.DataAvailable)
! {
! ms.WriteByte(base.ReadByte());
! }
! return ms.ToArray();
}
}
--- 133,153 ----
else
{
! return readFully();
! }
! }
! private byte[] readFully()
! {
! MemoryStream ms = new MemoryStream();
!
! // This will wait until data is readed
! byte b = base.ReadByte();
! ms.WriteByte(b);
! while (session.NetworkStream.DataAvailable)
! {
! ms.WriteByte(base.ReadByte());
}
+
+ return ms.ToArray();
}
***************
*** 332,336 ****
byte[] result = null;
! TlsStreamReader buffer = new TlsStreamReader(this.ReadBytes());
while (!buffer.EOF)
--- 337,341 ----
byte[] result = null;
! TlsStreamReader buffer = new TlsStreamReader(this.readFully());
while (!buffer.EOF)
Index: TlsSession.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsSession.cs,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** TlsSession.cs 12 Sep 2003 23:49:21 -0000 1.13
--- TlsSession.cs 13 Sep 2003 10:23:10 -0000 1.14
***************
*** 44,47 ****
--- 44,48 ----
private TlsSessionState state;
private bool helloDone;
+ private bool handshakeFinished;
private TlsSessionSettings settings;
private TlsCipherSuiteCollection supportedCiphers;
***************
*** 83,86 ****
--- 84,93 ----
}
+ internal bool HandshakeFinished
+ {
+ get { return handshakeFinished; }
+ set { handshakeFinished = value; }
+ }
+
internal bool IsSecure
{
***************
*** 192,196 ****
// Read server finished
! reader.ReadRecord();
// Clear Key Info
--- 199,206 ----
// Read server finished
! if (!this.handshakeFinished)
! {
! reader.ReadRecord();
! }
// Clear Key Info
***************
*** 306,319 ****
// Create the reader and the writer
! if (settings.UseBufferedStreams)
! {
! reader = new TlsReader(this, new BufferedStream(networkStream), settings.Encoding);
! writer = new TlsWriter(this, new BufferedStream(networkStream), settings.Encoding);
! }
! else
! {
! reader = new TlsReader(this, networkStream, settings.Encoding);
! writer = new TlsWriter(this, networkStream, settings.Encoding);
! }
}
private void closeStreams()
--- 316,321 ----
// Create the reader and the writer
! reader = new TlsReader(this, networkStream, settings.Encoding);
! writer = new TlsWriter(this, networkStream, settings.Encoding);
}
private void closeStreams()
***************
*** 332,335 ****
--- 334,339 ----
// Reset session information
+ this.helloDone = false;
+ this.handshakeFinished = false;
this.state = new TlsSessionState();
this.handshakeHashes = new TlsHandshakeHashes();
Index: TlsSessionSettings.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsSessionSettings.cs,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** TlsSessionSettings.cs 12 Sep 2003 12:47:11 -0000 1.5
--- TlsSessionSettings.cs 13 Sep 2003 10:23:10 -0000 1.6
***************
*** 32,36 ****
private TlsProtocol protocol;
private X509CertificateCollection certificates;
- private bool useBufferedStreams;
#endregion
--- 32,35 ----
***************
*** 68,77 ****
}
- public bool UseBufferedStreams
- {
- get { return useBufferedStreams; }
- set { useBufferedStreams = value; }
- }
-
#endregion
--- 67,70 ----
***************
*** 85,89 ****
this.serverPort = 443;
this.encoding = Encoding.Default;
- this.useBufferedStreams = true;
}
--- 78,81 ----
|
|
From: <car...@us...> - 2003-09-13 07:49:21
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake
In directory sc8-pr-cvs1:/tmp/cvs-serv343
Modified Files:
TlsServerHandshakeMessage.cs TlsServerHelloDone.cs
Log Message:
Changed received messages parsing, not finished and needs testing
Index: TlsServerHandshakeMessage.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsServerHandshakeMessage.cs,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TlsServerHandshakeMessage.cs 12 Sep 2003 23:49:35 -0000 1.3
--- TlsServerHandshakeMessage.cs 13 Sep 2003 07:49:12 -0000 1.4
***************
*** 60,68 ****
this.reader = reader;
- // skip first byte
- Reader.ReadByte();
-
// Parse message
! Parse();
}
--- 60,65 ----
this.reader = reader;
// Parse message
! this.Parse();
}
***************
*** 80,84 ****
{
this.session.HandshakeHashes.Update(reader.GetBytes());
- reader.Reset();
}
--- 77,80 ----
Index: TlsServerHelloDone.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsServerHelloDone.cs,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TlsServerHelloDone.cs 12 Sep 2003 23:49:35 -0000 1.3
--- TlsServerHelloDone.cs 13 Sep 2003 07:49:12 -0000 1.4
***************
*** 47,50 ****
--- 47,51 ----
protected override void Parse()
{
+ int length = Reader.ReadInt24();
}
|
|
From: <car...@us...> - 2003-09-13 07:48:55
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source
In directory sc8-pr-cvs1:/tmp/cvs-serv32692
Modified Files:
TlsReader.cs
Log Message:
Changed received messages parsing, not finished and needs testing
Index: TlsReader.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsReader.cs,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** TlsReader.cs 12 Sep 2003 23:49:21 -0000 1.14
--- TlsReader.cs 13 Sep 2003 07:48:49 -0000 1.15
***************
*** 330,385 ****
}
! 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:
! processHandshakeMessage(message);
! break;
! default:
! session.ThrowException("Unknown record received from server.");
! break;
}
--- 330,395 ----
}
! byte[] result = null;
! TlsStreamReader buffer = new TlsStreamReader(this.ReadBytes());
! 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 = message.GetBytes();
! break;
! case TlsContentType.Handshake:
! while (!message.EOF)
! {
! processHandshakeMessage(message);
! }
! break;
!
! default:
! session.ThrowException("Unknown record received from server.");
! break;
! }
!
! message.Reset();
}
|
|
From: <car...@us...> - 2003-09-12 23:49:39
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake
In directory sc8-pr-cvs1:/tmp/cvs-serv21627
Modified Files:
TlsServerCertificate.cs TlsServerCertificateRequest.cs
TlsServerFinished.cs TlsServerHandshakeMessage.cs
TlsServerHello.cs TlsServerHelloDone.cs
TlsServerKeyExchange.cs
Log Message:
Changed received messages parsing, not finished and needs testing
Index: TlsServerCertificate.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsServerCertificate.cs,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TlsServerCertificate.cs 1 Sep 2003 10:21:20 -0000 1.3
--- TlsServerCertificate.cs 12 Sep 2003 23:49:35 -0000 1.4
***************
*** 44,49 ****
#region CONSTRUCTORS
! public TlsServerCertificate(TlsSession session, byte[] data)
! : base(session, TlsHandshakeType.Certificate, data)
{
}
--- 44,49 ----
#region CONSTRUCTORS
! public TlsServerCertificate(TlsSession session, TlsStreamReader reader)
! : base(session, TlsHandshakeType.Certificate, reader)
{
}
***************
*** 68,72 ****
// Read Length
! int length = ReadInt24();
int count = 0;
--- 68,72 ----
// Read Length
! int length = Reader.ReadInt24();
int count = 0;
***************
*** 74,86 ****
{
// Skip next 3 bytes
! int skip = ReadInt24();
// Read certificate length
! int certLength = ReadInt24();
if (certLength > 0)
{
// Read certificate
! X509Certificate certificate = new X509Certificate(ReadBytes(certLength));
certificates.Add(certificate);
--- 74,86 ----
{
// Skip next 3 bytes
! int skip = Reader.ReadInt24();
// Read certificate length
! int certLength = Reader.ReadInt24();
if (certLength > 0)
{
// Read certificate
! X509Certificate certificate = new X509Certificate(Reader.ReadBytes(certLength));
certificates.Add(certificate);
Index: TlsServerCertificateRequest.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsServerCertificateRequest.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TlsServerCertificateRequest.cs 1 Sep 2003 10:21:20 -0000 1.2
--- TlsServerCertificateRequest.cs 12 Sep 2003 23:49:35 -0000 1.3
***************
*** 25,30 ****
#region CONSTRUCTORS
! public TlsServerCertificateRequest(TlsSession session, byte[] data)
! : base(session, TlsHandshakeType.ServerHello, data)
{
}
--- 25,30 ----
#region CONSTRUCTORS
! public TlsServerCertificateRequest(TlsSession session, TlsStreamReader reader)
! : base(session, TlsHandshakeType.ServerHello, reader)
{
}
Index: TlsServerFinished.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsServerFinished.cs,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TlsServerFinished.cs 1 Sep 2003 10:21:20 -0000 1.3
--- TlsServerFinished.cs 12 Sep 2003 23:49:35 -0000 1.4
***************
*** 26,31 ****
#region CONSTRUCTORS
! public TlsServerFinished(TlsSession session, byte[] data)
! : base(session, TlsHandshakeType.ServerHello, data)
{
}
--- 26,31 ----
#region CONSTRUCTORS
! public TlsServerFinished(TlsSession session, TlsStreamReader reader)
! : base(session, TlsHandshakeType.ServerHello, reader)
{
}
***************
*** 48,53 ****
protected override void Parse()
{
! int length = this.ReadInt24();
! byte[] serverPRF = this.ReadBytes(length);
TlsStreamWriter hashes = new TlsStreamWriter();
--- 48,53 ----
protected override void Parse()
{
! int length = Reader.ReadInt24();
! byte[] serverPRF = Reader.ReadBytes(length);
TlsStreamWriter hashes = new TlsStreamWriter();
Index: TlsServerHandshakeMessage.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsServerHandshakeMessage.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TlsServerHandshakeMessage.cs 1 Sep 2003 10:21:20 -0000 1.2
--- TlsServerHandshakeMessage.cs 12 Sep 2003 23:49:35 -0000 1.3
***************
*** 21,25 ****
namespace System.Security.Tls.Handshake
{
! internal abstract class TlsServerHandshakeMessage : TlsStreamReader
{
#region FIELDS
--- 21,25 ----
namespace System.Security.Tls.Handshake
{
! internal abstract class TlsServerHandshakeMessage
{
#region FIELDS
***************
*** 27,30 ****
--- 27,31 ----
private TlsSession session;
private TlsHandshakeType handshakeType;
+ private TlsStreamReader reader;
#endregion
***************
*** 42,45 ****
--- 43,51 ----
}
+ protected TlsStreamReader Reader
+ {
+ get { return reader; }
+ }
+
#endregion
***************
*** 48,58 ****
public TlsServerHandshakeMessage(TlsSession session,
TlsHandshakeType handshakeType,
! byte[] data) : base(data)
{
this.session = session;
this.handshakeType = handshakeType;
// skip first byte
! ReadByte();
// Parse message
--- 54,65 ----
public TlsServerHandshakeMessage(TlsSession session,
TlsHandshakeType handshakeType,
! TlsStreamReader reader)
{
this.session = session;
this.handshakeType = handshakeType;
+ this.reader = reader;
// skip first byte
! Reader.ReadByte();
// Parse message
***************
*** 72,77 ****
public virtual void UpdateSession()
{
! this.session.HandshakeHashes.Update(this.GetBytes());
! this.Reset();
}
--- 79,84 ----
public virtual void UpdateSession()
{
! this.session.HandshakeHashes.Update(reader.GetBytes());
! reader.Reset();
}
Index: TlsServerHello.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsServerHello.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TlsServerHello.cs 1 Sep 2003 10:21:20 -0000 1.2
--- TlsServerHello.cs 12 Sep 2003 23:49:35 -0000 1.3
***************
*** 36,41 ****
#region CONSTRUCTORS
! public TlsServerHello(TlsSession session, byte[] data)
! : base(session, TlsHandshakeType.ServerHello, data)
{
}
--- 36,41 ----
#region CONSTRUCTORS
! public TlsServerHello(TlsSession session, TlsStreamReader reader)
! : base(session, TlsHandshakeType.ServerHello, reader)
{
}
***************
*** 63,83 ****
{
// Read message length
! this.length = ReadInt24();
// Read protocol version
! this.protocol = (TlsProtocol)ReadShort();
// Read random - Unix time + Random bytes
! this.random = ReadBytes(32);
// Read Session id
! int length = (int)ReadByte();
if (length > 0)
{
! this.sessionId = ReadBytes(length);
}
// Read cipher suite
! short cipherCode = ReadShort();
if (Session.SupportedCiphers.IndexOf(cipherCode) == -1)
{
--- 63,83 ----
{
// Read message length
! this.length = Reader.ReadInt24();
// Read protocol version
! this.protocol = (TlsProtocol)Reader.ReadShort();
// Read random - Unix time + Random bytes
! this.random = Reader.ReadBytes(32);
// Read Session id
! int length = (int)Reader.ReadByte();
if (length > 0)
{
! this.sessionId = Reader.ReadBytes(length);
}
// Read cipher suite
! short cipherCode = Reader.ReadShort();
if (Session.SupportedCiphers.IndexOf(cipherCode) == -1)
{
***************
*** 88,92 ****
// Read compression methods ( always 0 )
! compressionMethod = ReadByte();
}
--- 88,92 ----
// Read compression methods ( always 0 )
! compressionMethod = Reader.ReadByte();
}
Index: TlsServerHelloDone.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsServerHelloDone.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TlsServerHelloDone.cs 1 Sep 2003 10:21:20 -0000 1.2
--- TlsServerHelloDone.cs 12 Sep 2003 23:49:35 -0000 1.3
***************
*** 25,30 ****
#region CONSTRUCTORS
! public TlsServerHelloDone(TlsSession session, byte[] data)
! : base(session, TlsHandshakeType.ServerHello, data)
{
}
--- 25,30 ----
#region CONSTRUCTORS
! public TlsServerHelloDone(TlsSession session, TlsStreamReader reader)
! : base(session, TlsHandshakeType.ServerHello, reader)
{
}
Index: TlsServerKeyExchange.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/Handshake/TlsServerKeyExchange.cs,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TlsServerKeyExchange.cs 1 Sep 2003 10:21:20 -0000 1.3
--- TlsServerKeyExchange.cs 12 Sep 2003 23:49:35 -0000 1.4
***************
*** 34,39 ****
#region CONSTRUCTORS
! public TlsServerKeyExchange(TlsSession session, byte[] data)
! : base(session, TlsHandshakeType.ServerKeyExchange, data)
{
verify();
--- 34,39 ----
#region CONSTRUCTORS
! public TlsServerKeyExchange(TlsSession session, TlsStreamReader reader)
! : base(session, TlsHandshakeType.ServerKeyExchange, reader)
{
verify();
***************
*** 59,77 ****
protected override void Parse()
{
! int length = this.ReadInt24();
rsaParams = new RSAParameters();
// Read modulus
! length = this.ReadShort();
! rsaParams.Modulus = this.ReadBytes(length);
// Read exponent
! length = this.ReadShort();
! rsaParams.Exponent = this.ReadBytes(length);
// Read signed params
! length = this.ReadShort();
! signedParams = this.ReadBytes(length);
}
--- 59,77 ----
protected override void Parse()
{
! int length = Reader.ReadInt24();
rsaParams = new RSAParameters();
// Read modulus
! length = Reader.ReadShort();
! rsaParams.Modulus = Reader.ReadBytes(length);
// Read exponent
! length = Reader.ReadShort();
! rsaParams.Exponent = Reader.ReadBytes(length);
// Read signed params
! length = Reader.ReadShort();
! signedParams = Reader.ReadBytes(length);
}
|
|
From: <car...@us...> - 2003-09-12 23:49:25
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source
In directory sc8-pr-cvs1:/tmp/cvs-serv21568
Modified Files:
TlsReader.cs TlsSession.cs TlsStreamReader.cs
TlsStreamWriter.cs
Log Message:
Changed received messages parsing, not finished and needs testing
Index: TlsReader.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsReader.cs,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** TlsReader.cs 12 Sep 2003 12:47:11 -0000 1.13
--- TlsReader.cs 12 Sep 2003 23:49:21 -0000 1.14
***************
*** 336,340 ****
int length = this.ReadShort();
! byte[] message = base.ReadBytes(length);
// Check that the message as a valid protocol version
--- 336,340 ----
int length = this.ReadShort();
! TlsStreamReader message = new TlsStreamReader(base.ReadBytes(length));
// Check that the message as a valid protocol version
***************
*** 354,358 ****
contentType != TlsContentType.ChangeCipherSpec)
{
! message = processCipherTextRecord(contentType, protocol, message);
}
}
--- 354,358 ----
contentType != TlsContentType.ChangeCipherSpec)
{
! message = new TlsStreamReader(processCipherTextRecord(contentType, protocol, message.GetBytes()));
}
}
***************
*** 362,366 ****
{
case TlsContentType.Alert:
! processAlert((TlsAlertLevel)message[0], (TlsAlertDescription)message[1]);
break;
--- 362,367 ----
{
case TlsContentType.Alert:
! processAlert((TlsAlertLevel)message.ReadByte(),
! (TlsAlertDescription)message.ReadByte());
break;
***************
*** 371,375 ****
case TlsContentType.ApplicationData:
! result = message;
break;
--- 372,376 ----
case TlsContentType.ApplicationData:
! result = message.GetBytes();
break;
***************
*** 397,406 ****
#region PRIVATE_METHODS
! private void processHandshakeMessage(byte[] data)
{
! TlsHandshakeType handshakeType = (TlsHandshakeType)data[0];
TlsServerHandshakeMessage message = null;
! message = session.CreateServerHandsakeMessage(handshakeType, data);
if (message == null)
{
--- 398,407 ----
#region PRIVATE_METHODS
! private void processHandshakeMessage(TlsStreamReader handMsg)
{
! TlsHandshakeType handshakeType = (TlsHandshakeType)handMsg.ReadByte();
TlsServerHandshakeMessage message = null;
! message = session.CreateServerHandsakeMessage(handshakeType, handMsg);
if (message == null)
{
***************
*** 440,445 ****
byte[] fragment)
{
! byte[] dcrFragment = null;
! byte[] dcrMAC = null;
// Decrypt message
--- 441,446 ----
byte[] fragment)
{
! byte[] dcrFragment = null;
! byte[] dcrMAC = null;
// Decrypt message
Index: TlsSession.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsSession.cs,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** TlsSession.cs 12 Sep 2003 18:44:30 -0000 1.12
--- TlsSession.cs 12 Sep 2003 23:49:21 -0000 1.13
***************
*** 243,267 ****
}
! internal TlsServerHandshakeMessage CreateServerHandsakeMessage(TlsHandshakeType type, byte[] data)
{
switch (type)
{
case TlsHandshakeType.Certificate:
! return new TlsServerCertificate(this, data);
case TlsHandshakeType.CertificateRequest:
! return new TlsServerCertificateRequest(this, data);
case TlsHandshakeType.ServerHello:
! return new TlsServerHello(this, data);
case TlsHandshakeType.ServerHelloDone:
! return new TlsServerHelloDone(this, data);
case TlsHandshakeType.ServerKeyExchange:
! return new TlsServerKeyExchange(this, data);
case TlsHandshakeType.Finished:
! return new TlsServerFinished(this, data);
default:
--- 243,267 ----
}
! internal TlsServerHandshakeMessage CreateServerHandsakeMessage(TlsHandshakeType type, TlsStreamReader handMsg)
{
switch (type)
{
case TlsHandshakeType.Certificate:
! return new TlsServerCertificate(this, handMsg);
case TlsHandshakeType.CertificateRequest:
! return new TlsServerCertificateRequest(this, handMsg);
case TlsHandshakeType.ServerHello:
! return new TlsServerHello(this, handMsg);
case TlsHandshakeType.ServerHelloDone:
! return new TlsServerHelloDone(this, handMsg);
case TlsHandshakeType.ServerKeyExchange:
! return new TlsServerKeyExchange(this, handMsg);
case TlsHandshakeType.Finished:
! return new TlsServerFinished(this, handMsg);
default:
Index: TlsStreamReader.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsStreamReader.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TlsStreamReader.cs 1 Sep 2003 10:19:44 -0000 1.2
--- TlsStreamReader.cs 12 Sep 2003 23:49:21 -0000 1.3
***************
*** 26,38 ****
internal class TlsStreamReader : BinaryReader
{
! #region CONSTRUCTORS
! public TlsStreamReader(Stream input) : base(input)
{
}
! public TlsStreamReader(Stream input, Encoding encoding) : base(input, encoding)
{
}
public TlsStreamReader(byte[] data) : base(new MemoryStream(data))
--- 26,65 ----
internal class TlsStreamReader : BinaryReader
{
! #region PROPERTIES
! public long Position
{
+ get
+ {
+ return ((MemoryStream)this.BaseStream).Position;
+ }
}
! public long Length
{
+ get
+ {
+ return ((MemoryStream)this.BaseStream).Length;
+ }
}
+
+ public bool EOF
+ {
+ get
+ {
+ if (this.Position < this.Length)
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+ }
+
+ #endregion
+
+ #region CONSTRUCTORS
public TlsStreamReader(byte[] data) : base(new MemoryStream(data))
Index: TlsStreamWriter.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PgSqlClient.Security.Tls/source/TlsStreamWriter.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TlsStreamWriter.cs 1 Sep 2003 10:19:44 -0000 1.2
--- TlsStreamWriter.cs 12 Sep 2003 23:49:21 -0000 1.3
***************
*** 32,43 ****
}
- public TlsStreamWriter(Stream output) : base(output)
- {
- }
-
- public TlsStreamWriter(Stream output, Encoding encoding) : base(output, encoding)
- {
- }
-
#endregion
--- 32,35 ----
|