[corlib] Improve CancellationTokenSource test
[mono.git] / mcs / class / Mono.Security / Mono.Security.Protocol.Tls / ChangeLog
index 817b69fc0dd36fef02719743f1abfc4d48ccbad9..e80407398f27650edb95dacea21f6134dc2b87d1 100644 (file)
@@ -1,3 +1,264 @@
+2010-07-23  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * ClientSessionCache.cs: Do not let the ValidityInterval be 
+       controlled by an environment variable for Moonlight
+       * HttpsClientStream.cs: Simplify code for Moonlight profile
+
+2010-05-10  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * CipherSuite.cs:
+       * DebugHelper.cs:
+       * RecordProtocol.cs:
+       * SslClientStream.cs:
+               Let them compile for Moonlight (where the files are 
+               compiled inside System.dll)
+
+2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+       * Context.cs:
+       * SslStreamBase.cs:
+       * RecordProtocol.cs: differentiate a received 'CloseNotify' alert from
+       one that we sent. Disposing the stream will try to send the
+       'CloseNotify' alert, if it hasn't already, and ignore any errors. This
+       is needed for FTPS to work.
+
+2010-03-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+       * SslStreamBase.cs:
+       * SslClientStream.cs:
+       * SslServerStream.cs: modify the 2.0 callback to return more info.
+
+2010-03-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+       * HttpsClientStream.cs: use Address instead
+       of RequestUri to get the right host name when the request is
+       redirected.
+
+       * SslStreamBase.cs:
+       * SslClientStream.cs:
+       * SslServerStream.cs:
+       added a new callback for certificate validation that gets all the
+       certificates received from the server/client. The callee should
+       build the chain and validate it.
+
+2009-10-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+       * ServerContext.cs:
+       * SslServerStream.cs: add new parameter that forces sending the
+       CertificateRequest record. Make sure we raise the client certificate
+       validation event when it is requested or required.
+
+2009-07-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+       * HttpsClientStream.cs: if there's only an ICertificatePolicy and no
+       ServerCertificateValicationCallback, don't fail.
+
+2009-07-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+       * HttpsClientStream.cs: invoke the ServerCertificateValidationCallback
+       in the 2.0 profile. If there's a CertificatePolicy, it is run before
+       the 2.0 callback.
+
+2007-09-12  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * Context.cs: Clear key info memory (not just nullify). Fix bug #82819
+
+2007-08-16  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * RecordProtocol.cs, SslStreamBase.cs: Ensure nothing (even the same
+       thread) can confuse the record decoding code. Fix bug #82145 (LDAP) 
+       which uses several thread over a single SslClientStream instance.
+
+2007-05-23 Gonzalo Paniagua Javier <gonzalo.mono@gmail.com>
+
+       * Context.cs: fix the calculation of the unix time.
+
+2007-05-09  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * HttpsClientStream.cs: Add support for client certificates from
+       HttpWebRequest if it uses X509Certificate2 instance (which requires
+       using 2.0 profile) and if the private key is available.
+       * SslStreamBase.cs: Fix warning in 2.0 because Stream now implements
+       Dispose. Rework Close (in 2.0) to avoid infinite recursion.
+
+2006-12-08  Sebastien Pouliot  <sebastien@ximian.com> 
+
+       * ClientSessionCache.cs: Fix cache to be really used. Original patch
+       by Roy Versteeg. Fix bug #80175.
+
+2006-12-08  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * ClientSessionCache.cs: Check for a new environment variable to 
+       control the cache validity period (MONO_TLS_SESSION_CACHE_TIMEOUT).
+       Fix bug #80174.
+
+2006-09-11  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * CipherSuite.cs: Avoid creating a CryptoStream and a MemoryStream in
+       EncryptRecord (removing the need to do a keysetup each time). Add
+       helper methods to write inside byte buffers. Decrypt the data in
+       place (without allocating new memory) as the result will always be
+       smaller than the original. Avoid TlsStream in CreatePremasterSecret 
+       method. All HMAC access are done with the Negotiating parameters.
+       * ClientRecordProtocol.cs: Set HandshakeState to None if we receive
+       a HelloRequest during an existing session. Remove overidden method
+       ProcessChangeCipherSpec. Skip memory allocation if possible.
+       * Context.cs: Add new SecurityParameters for current, negotiating, 
+       read and write (actually only two different instance exists). Change
+       readSequenceNumber and writeSequenceNumber to ulong to match specs.
+       Remove all properties that are moved/replaced with SecurityParameters.
+       Added methods to Start and End a switch of the security parameters.
+       * RecordProtocol.cs: Add code to ProcessChangeCipherSpec (not abstract
+       anymore). Remove ReadShort and it's use. Deal with null alerts in 
+       SendAlert method (internal error). Change code to deal with 
+       SendChangeCipherSpec inside an existing (encrypted) session. Update 
+       Cipher to use the correct one (mostly Read.Cipher or Negotiating.Cipher
+       for ProcessCipherSpecV2Buffer method).
+       * SecurityParameters.cs: New. Deal with all parameters that changes
+       between negotiations.
+       * ServerRecordProtocol.cs: Remove method ProcessChangeCipherSpec.
+       * SslCipherSuite.cs: Don't use TlsStream when computing MAC. Set the
+       MAC keys to the Negotiating security parameters.
+       * SslClientStream.cs: Change calls from Cipher to Negotiating.Cipher.
+       * SslServerStream.cs: Change calls from Cipher to Negotiating.Cipher.
+       Remove debugging dead code (DateTime).
+       * SslStreamBase.cs: Change calls from Cipher to Current.Cipher. Reuse
+       existing memory buffer.
+       * TlsCipherSuite.cs: Don't use TlsStream when computing MAC. Set the
+       MAC keys to the Negotiating security parameters.
+       * TlsClientSettings.cs: Comment code cause compiler warnings.
+       * TlsStream.cs: Avoid/reduce memory allocations when reading or 
+       writing small integer values to the stream.
+
+2006-09-07  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * HttpsClientStream.cs: Honor ServicePointManager.SecurityProtocol to
+       select between SSL3, TLS1 or, by default, auto. Great for testing :)
+
+2006-06-08  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * ClientRecordProtocol.cs: Avoid a NRE when the server request a
+       re-negotiation of the security parameters. Possible fix for #78597.
+
+2006-04-21  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * SslCipherSuite.cs: Enable abbreviated handshakes for SSL3 too.
+
+2006-04-12  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * ClientSessionCache.cs: Deal with empty (null) master secret, that 
+       can find their ways into the cache, and treat them as invalid. Fix
+       bug #78085.
+
+2006-04-10  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * ClientSessionCache.cs: The session id can be zero-length (like our 
+       own server class).
+       * SslServerStream.cs: Adapt code to fixes made in cipher suite and
+       message processing changes in client code.
+
+2006-03-16  Sebastien Pouliot  <sebastien@ximian.com>
+       * CipherSuiteFactory.cs: Fix bad key exchange values for non-export
+       cihpers. Most certificates have "too much" usages by default so this
+       was hidden from view.
+       * SslStreamBase.cs: Safety net. Throw an exception if we're waiting 
+       for more than five (5) minutes for an async read or write to complete.
+
+2006-03-16  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * ClientSessionCache.cs: New. Handle a client-side session cache to 
+       enable the use of abbreviated handshake whenever possible. This will
+       reduce the number of negotiation (a very CPU intensive process) done
+       with the same host.
+       * Context.cs: Add a property for AbbreviatedHandshake.
+       * RecordProtocol.cs: Don't send Finished record from ChangeCipherSpec
+       as this won't work if the message flow change.
+       * SslClientStream.cs: Line endings.
+       * SslServerStream.cs: Throw an exception if ReceiveRecord return null
+       or an empty buffer (i.e. communication ended with client). Fix #76254.
+       * SslStreamBase.cs: Re-add synchronous implementations for Read and 
+       Write.
+       * TlsCipherSuite.cs: Update the client-side session cache with the 
+       mastersecret.
+       * TlsStream.cs: Avoid possible buffer underun reading bytes (found by
+       Gonzalo).
+
+2006-03-08  Sebastien Pouliot  <sebastien@ximian.com>
+  
+       * SslStreamBase.cs: Re-implemented the synchronous versions of Read
+       and Write methods so they don't use the async code.
+
+2006-03-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * SslStreamBase.cs: avoid creating the ManualResetEvent whenever
+       possible. Don't lock on an instance of an object that the user can get.
+
+2006-03-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * RecordProtocol.cs: avoid creating the ManualResetEvent whenever
+       possible. Don't lock on an instance of an object that the user can get.
+
+2006-03-02  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * RecordProtocol.cs: Fix possible endless loop (#77663). Remove hack
+       for an old, fixed, MCS bug (#67711).
+
+2005-10-06  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * ClientRecordProtocol.cs: Update HandshakeMessages after each 
+       message. Fix bug #76258.
+       * RecordProtocol.cs: Remove writing into the HandshakeMessages stream
+       at this stage. We may need the data before that. Fix bug #76258.
+       * ServerRecordProtocol.cs: Update HandshakeMessages after each 
+       message. Fix bug #76258.
+       * SslServerStream.cs: Changed check for the presence of client 
+       certificates during handshake.
+
+2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * SslStreamBase.cs, ServerRecordProtocol.cs, SslClientStream.cs,
+       ClientRecordProtocol.cs, RecordProtocol.cs, SslServerStream.cs:
+       Re-written async support for Ssl[Client|Server]Stream from JD Conley
+       <jd.conley@coversant.net> with minor changes. Fix bug #75687 (and a 
+       lot of other known problems).
+
+2005-07-01  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * ServerContext.cs: Build the list of trusted certificates from all
+       the trusted root for the current user and the local machine.
+       * SslServerStream.cs: Add support for client certificate (and the 
+       callback for optional mutual authentication with SSL3).
+
+2005-06-22  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * SslClientStream.cs: Removed failsafe timeout of 5 minutes as some
+       protocols can go idle for longer than this.
+
+2005-06-14  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * SslClientStream.cs: Add support for _optional_ mutual authentication.
+       SSL3 and TLS1 deals differently with this. SSL3 tested with OpenSSL,
+       TSL1 tested with OpenSSL and LDAPS/AD.
+
+2005-06-06  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * Alert.cs: Add NoCertificate (41) which _should_ be used in SSL3
+       if we don't want to send a certificate when requested by a server
+       (e.g. in the case the mutual authentication is optional).
+       * CipherSuite.cs: Fixed recursive property. Changed type to short so
+       it can hold 256 bits (valid value). Fixed ctor so it doesn't assign
+       the it's own value.
+
+2005-05-13  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * SslClientStream.cs: Forgot to set the event in the previous fix.
+
+2005-05-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * SslClientStream.cs: check for the dispose in NetworkReadCallback.
+       Patch by Sebastien "Cryptoman" Pouliot.
+
 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
 
        * SslClientStream.cs: gotta call EndInvoke, not EndRead.
        * RecordProtocol.cs: Fix alert data that could leak into appplication 
        data (e.g. when closing the SSL session).
 
-2004-07-14  Carlos Guzman Alvarez  <carlosga@telefonica.net>\r
-\r
-       * Removed duplicate license header file from\r
-       all source files.\r
-\r
-2004-07-14  Sebastien Pouliot  <sebastien@ximian.com>\r
-\r
-       * SslClientStream.cs: Changed lock to "new object()" and not \r
-       String.Empty (as the read/write locks points becomes the same).\r
-       * SslServerStream.cs: Changed lock to "new object()" and not \r
-       String.Empty (as the read/write locks points becomes the same).\r
-\r
-2004-07-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>\r
-\r
-       * HttpsClientStream.cs: get an HttpWebRequest so that we can use the\r
-       ServicePoint it has. No need to get the host now.\r
-\r
-2004-05-09 Carlos Guzman Alvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/Alert.cs:\r
-       * Mono.Security.Protocol.Tls/CipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls/CipherSuiteCollection.cs:\r
-       * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:\r
-       * Mono.Security.Protocol.Tls/Context.cs:\r
-       * Mono.Security.Protocol.Tls/RecordProtocol.cs:\r
-       * Mono.Security.Protocol.Tls/SecurityCompressionType.cs:\r
-       * Mono.Security.Protocol.Tls/ServerRecordProtocol.cs:\r
-       * Mono.Security.Protocol.Tls/SslServerStream.cs:\r
-       * Mono.Security.Protocol.Tls/TlsClientSettings.cs:\r
-\r
-               - Changes for fix FxCop Rules.\r
-\r
-               - Reworked CipherSuiteCollection class.\r
-\r
-\r
-2004-04-21 Carlos Guzman Alvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/DebugHelper.cs:\r
-\r
-               - New class.\r
-\r
-       * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:\r
-       * Mono.Security.Protocol.Tls/RecordProtocol.cs:\r
-       * Mono.Security.Protocol.Tls/Context.cs:\r
-       * Mono.Security.Protocol.Tls/Context.cs:\r
-       * Mono.Security.Protocol.Tls/SslCipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls/SslClientStream.cs:\r
-\r
-               - Added debug capabilities.\r
-\r
-       * Mono.Security.Protocol.Tls/ServerContext.cs:\r
-\r
-               - Added initialization of requested CertificateTypes and CA's\r
-\r
-2004-04-16 Carlos Guzman Alvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/TlsException.cs:\r
-\r
-               - Make it public until npgsql people can fix their sources.\r
-\r
-2004-03-19 Carlos Guzman Alvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/TlsServerSettings.cs:\r
-\r
-               - Added new CertificateRSA property.\r
-\r
-               - Added new UpdateCertfificateRSA method.\r
-\r
-       * Mono.Security.Protocol.Tls/CipherSuite.cs:\r
-\r
-               - Removed CertificateRSA() method.      \r
-\r
-2004-03-19  Sebastien Pouliot  <sebastien@ximian.com>\r
-\r
-       * CipherSuite.cs: Fixed PRF generation when secret is an odd number of \r
-       bytes (section 5 in RFC2246).\r
-       * CipherSuiteFactory.cs: Added algorithms RSA_EXPORT_WITH_RC4_40_MD5,\r
-       RSA_EXPORT_WITH_RC2_CBC_40_MD5, RSA_EXPORT_WITH_DES40_CBC_SHA,\r
-       RSA_EXPORT_WITH_RC4_56_MD5, RSA_EXPORT_WITH_RC2_CBC_56_MD5,\r
-       RSA_EXPORT_WITH_DES_CBC_56_SHA and RSA_EXPORT_WITH_RC4_56_SHA to both\r
-       SSL3 and TLS1 protocols.\r
-       * SslCipherSuite.cs: Fixed key generation for exportable ciphers.\r
-       * TlsCipherSuite.cs: Fixed key generation for exportable ciphers.\r
-\r
-2004-03-16 Carlos Guzman Alvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/SslCipherSuite.cs:\r
-\r
-               - Added changes for allow it to work as server or client.\r
-\r
-2004-03-15 Carlos Guzman Alvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/TlsStream.cs:\r
-       * Mono.Security.Protocol.Tls/CipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls/SslHandshakeHash.cs:\r
-       * Mono.Security.Protocol.Tls/RecordProtocol.cs:\r
-\r
-               - Use Buffer.BlockCopy instead of System.Array.Copy\r
-\r
-2004-03-10 Carlos Guzman Alvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/Ciphersuite.cs:\r
-\r
-               - Added generation of the Server encryption algorithms.\r
-\r
-               - Modified encryption/decription methods for work\r
-               as client or server as needed.\r
-\r
-       * Mono.Security.Protocol.Tls/RecordProtocol.cs:\r
-       * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:\r
-       * Mono.Security.Protocol.Tls/ServerRecordProtocol.cs:\r
-\r
-               - Added new ProcessChangeCipherSpec method.\r
-\r
-       * Mono.Security.Protocol.Tls/Context.cs:\r
-\r
-               - Added new PrintBuffer method ( for debug ).\r
-\r
-       * Mono.Security.Protocol.Tls/SslClientStream.cs:\r
-       * Mono.Security.Protocol.Tls/SslServerStream.cs:\r
-\r
-               - Callback cleanup.\r
-\r
-2004-03-06 Carlos Guzman Alvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/SslServerStream.cs:\r
-\r
-               - Initial implementation of the doHandshake method.\r
-\r
-        - Added initial events implementation.\r
-\r
-       * Mono.Security.Protocol.Tls/Ciphersuite.cs:\r
-       * Mono.Security.Protocol.Tls/TlsCiphersuite.cs:\r
-       * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:\r
-       * Mono.Security.Protocol.Tls/ServerRecordProtocol.cs:\r
-       * Mono.Security.Protocol.Tls/SslClientStream.cs:\r
-       * Mono.Security.Protocol.Tls/TlsServerSettings.cs:\r
-       * Mono.Security.Protocol.Tls/TlsClientSettings.cs:\r
-       * Mono.Security.Protocol.Tls/ClientContext.cs:\r
-\r
-               - Changes for make use of the renamed classes and enums.\r
-\r
-       * Mono.Security.Protocol.Tls/TlsContentType.cs:\r
-\r
-               - Renamed to ContentType.cs ( Enum and file )\r
\r
-       * Mono.Security.Protocol.Tls/TlsCiphersuiteCollection.cs:\r
-\r
-               - Renamed to CiphersuiteCollection.cs ( Class and file )\r
-\r
-       * Mono.Security.Protocol.Tls/TlsCiphersuiteFactory.cs:\r
-\r
-               - Renamed to CiphersuiteCollection.cs ( Class and file )\r
-\r
-       * Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs:\r
-\r
-               - Renamed to SslHandshakeHash.cs ( Class and file )\r
-\r
-       * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:\r
-\r
-               - Renamed to SslCipherSuite.cs ( Class and file )\r
-\r
-2004-02-26 Carlos Guzman Alvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/HandshakeState.cs:\r
-\r
-               - New file.\r
-\r
-       * Mono.Security.Protocol.Tls/SslClientStream.cs:\r
-       * Mono.Security.Protocol.Tls/SslServerStream.cs:\r
-       * Mono.Security.Protocol.Tls/Context.cs:\r
-       * Mono.Security.Protocol.Tls/ClientContext.cs:\r
-       * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:\r
-\r
-               - Added changes for better handling of ClientHelloRequest messages.\r
-\r
-2004-02-25  Sebastien Pouliot  <sebastien@ximian.com>\r
-\r
-       * HttpsClientStream.cs: New. Internal glue class between System.dll \r
-       WebConnection and SslClientStream to reduce reflection.\r
-       * SslClientStream.cs: RaiseServerCertificateValidation is now virtual\r
-       to allow HttpsClientStream to override it.\r
-\r
-2004-02-24 Carlos Guzman Alvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/RecordProtocol.cs:\r
-       * Mono.Security.Protocol.Tls/SslClientStream.cs:\r
-       * Mono.Security.Protocol.Tls/SslServerStream.cs:\r
-\r
-               - Reimplementation of TLS/SSL Alert Protocol.\r
-\r
-2004-02-20 Carlos Guzmán Álvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls.Handshake.Client/SslClientCertificate.cs:\r
-\r
-        - Improved exception handling.\r
-\r
-2004-02-18 Carlos Guzmán Álvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/CipherAlgorithmType.cs:\r
-       * Mono.Security.Protocol.Tls/HashAlgorithmType.cs:\r
-       * Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs:\r
-\r
-               - Added Serializable attribute.\r
-\r
-       * Mono.Security.Protocol.Tls/CipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls/TlsContext.cs:\r
-\r
-               - Added some optimizations proposed by Sebastien Pouliot.\r
-\r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:\r
-\r
-               - Changes on Common Name detection and certificate error handling ( Thanks to Sebastien Pouliot for his feedback ).\r
-\r
-2004-02-18  Sebastien Pouliot  <sebastien@ximian.com>\r
-\r
-       * SslClientStream.cs: Fixed (inverted) condition for ServerCertificate.\r
-       * SecurityProtocolType.cs: Added [Serializable] to enum to match MS \r
-       implementation.\r
-\r
-2004-02-17 Carlos Guzmán Álvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/SslClientStream.cs:\r
-\r
-               - Added changes to security properties for check that the handshake is finished.\r
-\r
-       * Mono.Security.Protocol.Tls/SslClientStream.cs:\r
-\r
-        - Added changes for bring async methods to work ( Thanks to Sebastien Pouliot )\r
-\r
-        - Reworked the record fragmentation.\r
-\r
-        - Fix for send the close notify alert in the Close method\r
-        only if the Handshake is fully negotiated.\r
-\r
-\r
-2004-02-16 Carlos Guzmán Álvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/TlsCipherSuiteFactory.cs:\r
-\r
-        - Changed ciphersuites order of preference ( Thanks to Sebastien Pouliot for his feedback ).\r
-\r
-2004-02-15 Carlos Guzmán Álvarez  <carlosga@telefonica.net>\r
\r
-       * Mono.Security.Protocol.Tls/SslClientStream.cs:\r
\r
-               - Added specific control od available data for Network Streams\r
-               on Read ( Thanks to Francisco Figueiredo Jr. for his feedback ).\r
\r
-               - Removed test code.\r
-\r
-2004-02-14 Carlos Guzmán Álvarez  <carlosga@telefonica.net>\r
-\r
-    * Mono.Security.Protocol.Tls/SslClientStream.cs:\r
-\r
-        - Removed test code.\r
-\r
-2003-11-17 Carlos Guzmán Álvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/SslClientStream.cs:\r
-\r
-               Removed ReadByte method, use innerStream.ReadByte() method instead.\r
-\r
-2003-11-13 Carlos Guzmán Álvarez  <carlosga@telefonica.net>\r
-\r
-       * Added implementation of an SslClientStream class similar to the MS .NET Framework 1.2 documentation.\r
-\r
-               The next files are no more needed:\r
-\r
-                       - TlsSession.cs\r
-\r
-                       - TlsNetworkStream.cs\r
-\r
-                       - TlsSocket.cs\r
-\r
-                       - TlsSessionState.cs\r
-\r
-               The next files are renamed:\r
-\r
-                       - TlsSessionSettings.cs -> TlsClientSettings.cs\r
-\r
-                       - TlsSessionContext.cs -> TlsContext.cs\r
-\r
-               The next files are new:\r
-\r
-                       - SslClientStream.cs ( the name is non definitive yet )\r
-\r
-               The next files where changed to reflect the new canges:\r
-\r
-                       - TlsHandshakeMessage.cs\r
-\r
-                       - TlsClientCertificate.cs\r
-\r
-                       - TlsClientCertificateVerify.cs\r
-\r
-                       - TlsClientFinished.cs\r
-\r
-                       - TlsClientHello.cs\r
-\r
-                       - TlsClientKeyExchange.cs\r
-\r
-                       - TlsServerCertificate.cs\r
-\r
-                       - TlsServerCertificateRequest.cs\r
-\r
-                       - TlsServerFinished.cs\r
-\r
-                       - TlsServerHello.cs\r
-\r
-                       - TlsServerHelloDone.cs\r
-\r
-                       - TlsServerKeyExchange.cs\r
-\r
-                       - TlsAlert.cs\r
-\r
-                       - TlsCloseNotifyAlert.cs\r
-\r
-               \r
-2003-11-12 Carlos Guzmán Álvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls.Alerts/TlsAlert.cs:\r
-       \r
-               - Changes for give full error message only in debug mode ( Thanks to Sebastién Pouliot. )\r
-               \r
-       * Mono.Security.Protocol.Tls/TlsProtocol.cs:\r
-       \r
-               - Renamed to SecurityProtocolType.cs ( for match .NET 1.2 )\r
-       \r
-       * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:\r
-       \r
-               - Renamed to MD5SHA1.cs ( Thanks to Sebastién Pouliot. )\r
-               \r
-       * Mono.Security.Cryptography/TlsCompressionMethod.cs:\r
-       \r
-               - Renamed to SecurityCompressionType.\r
-               \r
-       * Mono.Security.Protocol.Tls/CipherAlgorithmType.cs:\r
-       * Mono.Security.Protocol.Tls/HashAlgorithmType.cs:\r
-       * Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs:\r
-       \r
-               - New enumerations that matches .NET 1.2 definitions with some minor differences.\r
-       \r
-       * Mono.Security.Protocol.Tls/CipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls/TlsSessionContext.cs:\r
-       \r
-               - Added changes for make use of new enumerations.\r
-       \r
-       * Mono.Security.Protocol.Tls/TlsClientStream.cs:\r
-       \r
-               - Added new informative properties that matches .NET 1.2 SslClientStream\r
-               ( Not all the properties are implemented yet ).\r
-\r
-\r
-2003-11-10 Carlos Guzmán Álvarez  <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls.Alerts/TlsAlert.cs:\r
-\r
-               - Fixed invalid alert message.\r
-\r
-       * Mono.Security.Protocol.Tls/CipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:\r
-       * Mono.Security.Cryptography/HMAC.cs:\r
-       * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:\r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:\r
-\r
-               - Changed ( Thanks to Sebastién Pouliot for his feedback )\r
-\r
-                       SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();\r
-                       MD5CryptoServiceProvider sha = new MD5CryptoServiceProvider();\r
-\r
-                       to\r
-\r
-                       HashAlgorithm sha = SHA1.Create();\r
-                       HashAlgorithm md5 = MD5.Create(); \r
-\r
-2003-11-04 Carlos Guzmán Álvarez <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/CipherSuite.cs:\r
-\r
-               - Added custom padding for record encryption.\r
-\r
-\r
-2003-11-03 Carlos Guzmán Álvarez <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls.Handshake/TlsHandshakeMessages.cs:\r
-       \r
-               - Removed file.\r
-\r
-       * Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs:\r
-       \r
-               - New class for handshake hashes calculation on SSL3 protocol.\r
-\r
-       * Mono.Security.Protocol.Tls/TlsSessionContext.cs:\r
-       \r
-               - Fixed mac keys clearing for SSL3 protocol.\r
-\r
-       * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs:\r
-       \r
-               - Added changes for make use of new TlsSslHandshakeHash class.\r
-       \r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs:\r
-       \r
-               - Added initial implementation for SSL3 protocol.\r
-       \r
-       * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:\r
-       \r
-               - New class for md5-sha hash calculation.\r
-                                                       \r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs:\r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs:\r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:\r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsHandshakeMessage.cs:\r
-       \r
-               - Make use of new MD5SHA1CryptoServiceProvider class.\r
-               \r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:\r
-       \r
-               - Added initial implementation (not finished).\r
-                       \r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:\r
-       \r
-               - Minor change to message processing.\r
-\r
-               - Changed verify method name to verifySignature.\r
-                       \r
-       * Mono.Security.Protocol.Tls/TlsSessionContext.cs:\r
-       \r
-               - Changed handshakeHashes member to be an TlsStream.\r
-\r
-2003-10-28 Carlos Guzmán Álvarez <carlosga@telefonica.net>\r
-\r
-       * Mono.Security.Protocol.Tls/CipherSuite.cs:\r
-       * Mono.Security.Protocol.Tls/TlsSessionSettings.cs:\r
-       * Mono.Security.Protocol.Tls/TlsServerSettings.cs:\r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:\r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs:\r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:\r
-       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:\r
-\r
-               - Added changes for make use of X509 classes from mono.\r
-\r
-2003-10-23 Carlos Guzmán Álvarez <carlosga@telefonica.net>\r
-\r
-       * Added partial implementation of SSL3 protocol ( not finished yet ).\r
-\r
-       * TlsAbstractCipherSuite.cs: Renamed to CipherSuite.cs.\r
-\r
-       * Removed AssemblyInfo.cs file.\r
-\r
-2003-10-21 Carlos Guzmán Álvarez <carlosga@telefonica.net>\r
-\r
-       TlsCipherSuiteFactory.cs: Changed names of private methods.\r
-\r
-       TlsSslCipherSuite.cs: Replaced implementations of key generation methods with a throw new NotSupportedException().\r
-\r
-\r
-2003-10-20  Carlos Guzmán Álvarez  <carlosga@telefonica.net>\r
-\r
-       TlsCupherSuite.cs: Fixed padding length calculation on record encryption.\r
-       \r
-       TlsSessionContext.cs:   Added new CompressionMethod property.\r
-                                       Added new MAX_FRAGMENT_SIZE constant.\r
-\r
-       TlsSession.cs: Removed MaxFragmentSize property.\r
-\r
-       TlsSocket.cs: Replaced use of TlsSesison.MaxFragmentSize by TlsSessionContext.MAX_FAGMENT_SIZE\r
-       \r
-       TlsSessionSettings.cs: Added new CompressionMethod property.\r
-\r
-       * Abstracted CipherSuite classes for allow work with other protocol versions.\r
-\r
-       * Added new files :\r
-\r
-               TlsAbstractCipherSuite.cs \r
-                       \r
-               TlsSslCipherSuite.cs\r
-\r
-               TlsCipherSuiteFactory.cs\r
-\r
-               TlsCompressionMethod.cs\r
-\r
-       * Added new cipher suites definitions based on RFC3268 - (http://www.ietf.org/rfc/rfc3268.txt)\r
-\r
-       * Added two new supported ciphersuites for TLS protocol:\r
-\r
-               TLS_RSA_WITH_AES_256_CBC_SHA\r
-\r
-               TLS_RSA_WITH_AES_128_CBC_SHA\r
-\r
-       * Moved key generation stuff to specific cipher suite classes.\r
-\r
-2003-10-20  Pedro Martínez Juliá  <yoros@wanadoo.es>\r
-\r
-       * AssemblyInfo.cs: commented out KeyFile reference.\r
-\r
-       * TlsSession.cs: changed Math.Pow for System.Math.Pow because of MCS\r
-       bug with namespace resolving.\r
-\r
+2004-07-14  Carlos Guzman Alvarez  <carlosga@telefonica.net>
+
+       * Removed duplicate license header file from
+       all source files.
+
+2004-07-14  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * SslClientStream.cs: Changed lock to "new object()" and not 
+       String.Empty (as the read/write locks points becomes the same).
+       * SslServerStream.cs: Changed lock to "new object()" and not 
+       String.Empty (as the read/write locks points becomes the same).
+
+2004-07-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * HttpsClientStream.cs: get an HttpWebRequest so that we can use the
+       ServicePoint it has. No need to get the host now.
+
+2004-05-09 Carlos Guzman Alvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/Alert.cs:
+       * Mono.Security.Protocol.Tls/CipherSuite.cs:
+       * Mono.Security.Protocol.Tls/CipherSuiteCollection.cs:
+       * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
+       * Mono.Security.Protocol.Tls/Context.cs:
+       * Mono.Security.Protocol.Tls/RecordProtocol.cs:
+       * Mono.Security.Protocol.Tls/SecurityCompressionType.cs:
+       * Mono.Security.Protocol.Tls/ServerRecordProtocol.cs:
+       * Mono.Security.Protocol.Tls/SslServerStream.cs:
+       * Mono.Security.Protocol.Tls/TlsClientSettings.cs:
+
+               - Changes for fix FxCop Rules.
+
+               - Reworked CipherSuiteCollection class.
+
+
+2004-04-21 Carlos Guzman Alvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/DebugHelper.cs:
+
+               - New class.
+
+       * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
+       * Mono.Security.Protocol.Tls/RecordProtocol.cs:
+       * Mono.Security.Protocol.Tls/Context.cs:
+       * Mono.Security.Protocol.Tls/Context.cs:
+       * Mono.Security.Protocol.Tls/SslCipherSuite.cs:
+       * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:
+       * Mono.Security.Protocol.Tls/SslClientStream.cs:
+
+               - Added debug capabilities.
+
+       * Mono.Security.Protocol.Tls/ServerContext.cs:
+
+               - Added initialization of requested CertificateTypes and CA's
+
+2004-04-16 Carlos Guzman Alvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/TlsException.cs:
+
+               - Make it public until npgsql people can fix their sources.
+
+2004-03-19 Carlos Guzman Alvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/TlsServerSettings.cs:
+
+               - Added new CertificateRSA property.
+
+               - Added new UpdateCertfificateRSA method.
+
+       * Mono.Security.Protocol.Tls/CipherSuite.cs:
+
+               - Removed CertificateRSA() method.      
+
+2004-03-19  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * CipherSuite.cs: Fixed PRF generation when secret is an odd number of 
+       bytes (section 5 in RFC2246).
+       * CipherSuiteFactory.cs: Added algorithms RSA_EXPORT_WITH_RC4_40_MD5,
+       RSA_EXPORT_WITH_RC2_CBC_40_MD5, RSA_EXPORT_WITH_DES40_CBC_SHA,
+       RSA_EXPORT_WITH_RC4_56_MD5, RSA_EXPORT_WITH_RC2_CBC_56_MD5,
+       RSA_EXPORT_WITH_DES_CBC_56_SHA and RSA_EXPORT_WITH_RC4_56_SHA to both
+       SSL3 and TLS1 protocols.
+       * SslCipherSuite.cs: Fixed key generation for exportable ciphers.
+       * TlsCipherSuite.cs: Fixed key generation for exportable ciphers.
+
+2004-03-16 Carlos Guzman Alvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/SslCipherSuite.cs:
+
+               - Added changes for allow it to work as server or client.
+
+2004-03-15 Carlos Guzman Alvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/TlsStream.cs:
+       * Mono.Security.Protocol.Tls/CipherSuite.cs:
+       * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:
+       * Mono.Security.Protocol.Tls/SslHandshakeHash.cs:
+       * Mono.Security.Protocol.Tls/RecordProtocol.cs:
+
+               - Use Buffer.BlockCopy instead of System.Array.Copy
+
+2004-03-10 Carlos Guzman Alvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/Ciphersuite.cs:
+
+               - Added generation of the Server encryption algorithms.
+
+               - Modified encryption/decription methods for work
+               as client or server as needed.
+
+       * Mono.Security.Protocol.Tls/RecordProtocol.cs:
+       * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
+       * Mono.Security.Protocol.Tls/ServerRecordProtocol.cs:
+
+               - Added new ProcessChangeCipherSpec method.
+
+       * Mono.Security.Protocol.Tls/Context.cs:
+
+               - Added new PrintBuffer method ( for debug ).
+
+       * Mono.Security.Protocol.Tls/SslClientStream.cs:
+       * Mono.Security.Protocol.Tls/SslServerStream.cs:
+
+               - Callback cleanup.
+
+2004-03-06 Carlos Guzman Alvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/SslServerStream.cs:
+
+               - Initial implementation of the doHandshake method.
+
+        - Added initial events implementation.
+
+       * Mono.Security.Protocol.Tls/Ciphersuite.cs:
+       * Mono.Security.Protocol.Tls/TlsCiphersuite.cs:
+       * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
+       * Mono.Security.Protocol.Tls/ServerRecordProtocol.cs:
+       * Mono.Security.Protocol.Tls/SslClientStream.cs:
+       * Mono.Security.Protocol.Tls/TlsServerSettings.cs:
+       * Mono.Security.Protocol.Tls/TlsClientSettings.cs:
+       * Mono.Security.Protocol.Tls/ClientContext.cs:
+
+               - Changes for make use of the renamed classes and enums.
+
+       * Mono.Security.Protocol.Tls/TlsContentType.cs:
+
+               - Renamed to ContentType.cs ( Enum and file )
+       * Mono.Security.Protocol.Tls/TlsCiphersuiteCollection.cs:
+
+               - Renamed to CiphersuiteCollection.cs ( Class and file )
+
+       * Mono.Security.Protocol.Tls/TlsCiphersuiteFactory.cs:
+
+               - Renamed to CiphersuiteCollection.cs ( Class and file )
+
+       * Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs:
+
+               - Renamed to SslHandshakeHash.cs ( Class and file )
+
+       * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
+
+               - Renamed to SslCipherSuite.cs ( Class and file )
+
+2004-02-26 Carlos Guzman Alvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/HandshakeState.cs:
+
+               - New file.
+
+       * Mono.Security.Protocol.Tls/SslClientStream.cs:
+       * Mono.Security.Protocol.Tls/SslServerStream.cs:
+       * Mono.Security.Protocol.Tls/Context.cs:
+       * Mono.Security.Protocol.Tls/ClientContext.cs:
+       * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
+
+               - Added changes for better handling of ClientHelloRequest messages.
+
+2004-02-25  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * HttpsClientStream.cs: New. Internal glue class between System.dll 
+       WebConnection and SslClientStream to reduce reflection.
+       * SslClientStream.cs: RaiseServerCertificateValidation is now virtual
+       to allow HttpsClientStream to override it.
+
+2004-02-24 Carlos Guzman Alvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/RecordProtocol.cs:
+       * Mono.Security.Protocol.Tls/SslClientStream.cs:
+       * Mono.Security.Protocol.Tls/SslServerStream.cs:
+
+               - Reimplementation of TLS/SSL Alert Protocol.
+
+2004-02-20 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls.Handshake.Client/SslClientCertificate.cs:
+
+        - Improved exception handling.
+
+2004-02-18 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/CipherAlgorithmType.cs:
+       * Mono.Security.Protocol.Tls/HashAlgorithmType.cs:
+       * Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs:
+
+               - Added Serializable attribute.
+
+       * Mono.Security.Protocol.Tls/CipherSuite.cs:
+       * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:
+       * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
+       * Mono.Security.Protocol.Tls/TlsContext.cs:
+
+               - Added some optimizations proposed by Sebastien Pouliot.
+
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:
+
+               - Changes on Common Name detection and certificate error handling ( Thanks to Sebastien Pouliot for his feedback ).
+
+2004-02-18  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * SslClientStream.cs: Fixed (inverted) condition for ServerCertificate.
+       * SecurityProtocolType.cs: Added [Serializable] to enum to match MS 
+       implementation.
+
+2004-02-17 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/SslClientStream.cs:
+
+               - Added changes to security properties for check that the handshake is finished.
+
+       * Mono.Security.Protocol.Tls/SslClientStream.cs:
+
+        - Added changes for bring async methods to work ( Thanks to Sebastien Pouliot )
+
+        - Reworked the record fragmentation.
+
+        - Fix for send the close notify alert in the Close method
+        only if the Handshake is fully negotiated.
+
+
+2004-02-16 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/TlsCipherSuiteFactory.cs:
+
+        - Changed ciphersuites order of preference ( Thanks to Sebastien Pouliot for his feedback ).
+
+2004-02-15 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
+       * Mono.Security.Protocol.Tls/SslClientStream.cs:
+               - Added specific control od available data for Network Streams
+               on Read ( Thanks to Francisco Figueiredo Jr. for his feedback ).
+               - Removed test code.
+
+2004-02-14 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
+
+    * Mono.Security.Protocol.Tls/SslClientStream.cs:
+
+        - Removed test code.
+
+2003-11-17 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/SslClientStream.cs:
+
+               Removed ReadByte method, use innerStream.ReadByte() method instead.
+
+2003-11-13 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
+
+       * Added implementation of an SslClientStream class similar to the MS .NET Framework 1.2 documentation.
+
+               The next files are no more needed:
+
+                       - TlsSession.cs
+
+                       - TlsNetworkStream.cs
+
+                       - TlsSocket.cs
+
+                       - TlsSessionState.cs
+
+               The next files are renamed:
+
+                       - TlsSessionSettings.cs -> TlsClientSettings.cs
+
+                       - TlsSessionContext.cs -> TlsContext.cs
+
+               The next files are new:
+
+                       - SslClientStream.cs ( the name is non definitive yet )
+
+               The next files where changed to reflect the new canges:
+
+                       - TlsHandshakeMessage.cs
+
+                       - TlsClientCertificate.cs
+
+                       - TlsClientCertificateVerify.cs
+
+                       - TlsClientFinished.cs
+
+                       - TlsClientHello.cs
+
+                       - TlsClientKeyExchange.cs
+
+                       - TlsServerCertificate.cs
+
+                       - TlsServerCertificateRequest.cs
+
+                       - TlsServerFinished.cs
+
+                       - TlsServerHello.cs
+
+                       - TlsServerHelloDone.cs
+
+                       - TlsServerKeyExchange.cs
+
+                       - TlsAlert.cs
+
+                       - TlsCloseNotifyAlert.cs
+
+               
+2003-11-12 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls.Alerts/TlsAlert.cs:
+       
+               - Changes for give full error message only in debug mode ( Thanks to Sebastién Pouliot. )
+               
+       * Mono.Security.Protocol.Tls/TlsProtocol.cs:
+       
+               - Renamed to SecurityProtocolType.cs ( for match .NET 1.2 )
+       
+       * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:
+       
+               - Renamed to MD5SHA1.cs ( Thanks to Sebastién Pouliot. )
+               
+       * Mono.Security.Cryptography/TlsCompressionMethod.cs:
+       
+               - Renamed to SecurityCompressionType.
+               
+       * Mono.Security.Protocol.Tls/CipherAlgorithmType.cs:
+       * Mono.Security.Protocol.Tls/HashAlgorithmType.cs:
+       * Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs:
+       
+               - New enumerations that matches .NET 1.2 definitions with some minor differences.
+       
+       * Mono.Security.Protocol.Tls/CipherSuite.cs:
+       * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:
+       * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
+       * Mono.Security.Protocol.Tls/TlsSessionContext.cs:
+       
+               - Added changes for make use of new enumerations.
+       
+       * Mono.Security.Protocol.Tls/TlsClientStream.cs:
+       
+               - Added new informative properties that matches .NET 1.2 SslClientStream
+               ( Not all the properties are implemented yet ).
+
+
+2003-11-10 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls.Alerts/TlsAlert.cs:
+
+               - Fixed invalid alert message.
+
+       * Mono.Security.Protocol.Tls/CipherSuite.cs:
+       * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
+       * Mono.Security.Cryptography/HMAC.cs:
+       * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:
+
+               - Changed ( Thanks to Sebastién Pouliot for his feedback )
+
+                       SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
+                       MD5CryptoServiceProvider sha = new MD5CryptoServiceProvider();
+
+                       to
+
+                       HashAlgorithm sha = SHA1.Create();
+                       HashAlgorithm md5 = MD5.Create(); 
+
+2003-11-04 Carlos Guzmán Álvarez <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/CipherSuite.cs:
+
+               - Added custom padding for record encryption.
+
+
+2003-11-03 Carlos Guzmán Álvarez <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls.Handshake/TlsHandshakeMessages.cs:
+       
+               - Removed file.
+
+       * Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs:
+       
+               - New class for handshake hashes calculation on SSL3 protocol.
+
+       * Mono.Security.Protocol.Tls/TlsSessionContext.cs:
+       
+               - Fixed mac keys clearing for SSL3 protocol.
+
+       * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs:
+       
+               - Added changes for make use of new TlsSslHandshakeHash class.
+       
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs:
+       
+               - Added initial implementation for SSL3 protocol.
+       
+       * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:
+       
+               - New class for md5-sha hash calculation.
+                                                       
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs:
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs:
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsHandshakeMessage.cs:
+       
+               - Make use of new MD5SHA1CryptoServiceProvider class.
+               
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:
+       
+               - Added initial implementation (not finished).
+                       
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:
+       
+               - Minor change to message processing.
+
+               - Changed verify method name to verifySignature.
+                       
+       * Mono.Security.Protocol.Tls/TlsSessionContext.cs:
+       
+               - Changed handshakeHashes member to be an TlsStream.
+
+2003-10-28 Carlos Guzmán Álvarez <carlosga@telefonica.net>
+
+       * Mono.Security.Protocol.Tls/CipherSuite.cs:
+       * Mono.Security.Protocol.Tls/TlsSessionSettings.cs:
+       * Mono.Security.Protocol.Tls/TlsServerSettings.cs:
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs:
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:
+       * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:
+
+               - Added changes for make use of X509 classes from mono.
+
+2003-10-23 Carlos Guzmán Álvarez <carlosga@telefonica.net>
+
+       * Added partial implementation of SSL3 protocol ( not finished yet ).
+
+       * TlsAbstractCipherSuite.cs: Renamed to CipherSuite.cs.
+
+       * Removed AssemblyInfo.cs file.
+
+2003-10-21 Carlos Guzmán Álvarez <carlosga@telefonica.net>
+
+       TlsCipherSuiteFactory.cs: Changed names of private methods.
+
+       TlsSslCipherSuite.cs: Replaced implementations of key generation methods with a throw new NotSupportedException().
+
+
+2003-10-20  Carlos Guzmán Álvarez  <carlosga@telefonica.net>
+
+       TlsCupherSuite.cs: Fixed padding length calculation on record encryption.
+       
+       TlsSessionContext.cs:   Added new CompressionMethod property.
+                                       Added new MAX_FRAGMENT_SIZE constant.
+
+       TlsSession.cs: Removed MaxFragmentSize property.
+
+       TlsSocket.cs: Replaced use of TlsSesison.MaxFragmentSize by TlsSessionContext.MAX_FAGMENT_SIZE
+       
+       TlsSessionSettings.cs: Added new CompressionMethod property.
+
+       * Abstracted CipherSuite classes for allow work with other protocol versions.
+
+       * Added new files :
+
+               TlsAbstractCipherSuite.cs 
+                       
+               TlsSslCipherSuite.cs
+
+               TlsCipherSuiteFactory.cs
+
+               TlsCompressionMethod.cs
+
+       * Added new cipher suites definitions based on RFC3268 - (http://www.ietf.org/rfc/rfc3268.txt)
+
+       * Added two new supported ciphersuites for TLS protocol:
+
+               TLS_RSA_WITH_AES_256_CBC_SHA
+
+               TLS_RSA_WITH_AES_128_CBC_SHA
+
+       * Moved key generation stuff to specific cipher suite classes.
+
+2003-10-20  Pedro Martínez Juliá  <yoros@wanadoo.es>
+
+       * AssemblyInfo.cs: commented out KeyFile reference.
+
+       * TlsSession.cs: changed Math.Pow for System.Math.Pow because of MCS
+       bug with namespace resolving.
+