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 ---- |