[pgsqlclient-checkins] pgsqlclient_10/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls/Mono.Sec
Status: Inactive
                
                Brought to you by:
                
                    carlosga_fb
                    
                
            | 
      
      
      From: <car...@us...> - 2003-11-03 16:21:28
      
     | 
| Update of /cvsroot/pgsqlclient/pgsqlclient_10/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls.Handshake/Mono.Security.Protocol.Tls.Handshake.Client
In directory sc8-pr-cvs1:/tmp/cvs-serv4208
Modified Files:
	TlsClientCertificate.cs TlsClientCertificateVerify.cs 
	TlsServerKeyExchange.cs 
Log Message:
Added changes to signatures handling code (not finished)
Index: TlsClientCertificate.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls.Handshake/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificate.cs,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** TlsClientCertificate.cs	3 Nov 2003 12:35:56 -0000	1.8
--- TlsClientCertificate.cs	3 Nov 2003 16:21:25 -0000	1.9
***************
*** 59,64 ****
  		protected override void ProcessAsTls1()
  		{
- 			#warning "Send only the appropiate type of certificate"
- 
  			if (Session.Settings.Certificates == null ||
  				Session.Settings.Certificates.Count == 0)
--- 59,62 ----
Index: TlsClientCertificateVerify.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls.Handshake/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** TlsClientCertificateVerify.cs	3 Nov 2003 12:35:56 -0000	1.8
--- TlsClientCertificateVerify.cs	3 Nov 2003 16:21:25 -0000	1.9
***************
*** 63,67 ****
  			foreach (X509Certificate cert in Session.Settings.Certificates)
  			{
! 				HashAlgorithm			hash = new MD5SHA1CryptoServiceProvider();
  				X509.X509Certificate	c	 = new X509.X509Certificate(cert.GetRawCertData());
  				RSA						rsa	 = c.RSA;
--- 63,67 ----
  			foreach (X509Certificate cert in Session.Settings.Certificates)
  			{
! 				MD5SHA1CryptoServiceProvider hash = new MD5SHA1CryptoServiceProvider();
  				X509.X509Certificate	c	 = new X509.X509Certificate(cert.GetRawCertData());
  				RSA						rsa	 = c.RSA;
***************
*** 80,108 ****
  
  				// Write the signature
! 				RSAPKCS1SignatureFormatter sf = new RSAPKCS1SignatureFormatter(rsa);				
! 				switch (c.SignatureAlgorithm) 
! 				{
! 					// MD2 with RSA encryption 
! 					case "1.2.840.113549.1.1.2":
! 						// maybe someone installed MD2 ?
! 						sf.SetHashAlgorithm("MD2");
! 						break;
! 					
! 					// MD5 with RSA encryption 
! 					case "1.2.840.113549.1.1.4":
! 						sf.SetHashAlgorithm("MD5");
! 						break;
! 					
! 					// SHA-1 with RSA Encryption 
! 					case "1.2.840.113549.1.1.5":
! 						sf.SetHashAlgorithm("SHA1");
! 						break;
! 					
! 					default:
! 						throw this.Session.CreateException("Unsupported hash algorithm: " + c.SignatureAlgorithm);
! 				}
! 
! 				#warning "Seems that for this we need the private key"
! 				Write(sf.CreateSignature(hash.Hash));
  			}
  		}
--- 80,84 ----
  
  				// Write the signature
! 				Write(hash.CreateSignature(rsa));
  			}
  		}
Index: TlsServerKeyExchange.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls/Mono.Security.Protocol.Tls.Handshake/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** TlsServerKeyExchange.cs	3 Nov 2003 10:33:50 -0000	1.9
--- TlsServerKeyExchange.cs	3 Nov 2003 16:21:25 -0000	1.10
***************
*** 90,94 ****
  		private void verifySignature()
  		{
! 			HashAlgorithm hash = new MD5SHA1CryptoServiceProvider();
  
  			// Create server params array
--- 90,94 ----
  		private void verifySignature()
  		{
! 			MD5SHA1CryptoServiceProvider hash = new MD5SHA1CryptoServiceProvider();
  
  			// Create server params array
***************
*** 106,114 ****
  
  			// Verify Signature
- 			RSA rsa = new RSACryptoServiceProvider(rsaParams.Modulus.Length << 3);
- 			rsa.ImportParameters(rsaParams);
- 			
  			X509Certificate certificate = this.Session.Context.ServerSettings.ServerCertificates[0];
! 			certificate.CheckSignature(hash.Hash, "SHA1", this.signedParams);
  		}
  
--- 106,116 ----
  
  			// Verify Signature
  			X509Certificate certificate = this.Session.Context.ServerSettings.ServerCertificates[0];
! 
! 			RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(rsaParams.Modulus.Length << 3);
! 			rsa.ImportParameters(rsaParams);
! 
! 			byte[] sign = hash.CreateSignature(rsa);
! 			hash.VerifySignature(rsa, this.signedParams);
  		}
  
 |