2413ceebd8b025148228487d3217b6ad7b68b99e
[mono.git] / mcs / class / Mono.Security / Mono.Security.Protocol.Tls / ChangeLog
1 2009-10-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2
3         * ServerContext.cs:
4         * SslServerStream.cs: add new parameter that forces sending the
5         CertificateRequest record. Make sure we raise the client certificate
6         validation event when it is requested or required.
7
8 2009-07-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
9
10         * HttpsClientStream.cs: if there's only an ICertificatePolicy and no
11         ServerCertificateValicationCallback, don't fail.
12
13 2009-07-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
14
15         * HttpsClientStream.cs: invoke the ServerCertificateValidationCallback
16         in the 2.0 profile. If there's a CertificatePolicy, it is run before
17         the 2.0 callback.
18
19 2007-09-12  Sebastien Pouliot  <sebastien@ximian.com>
20
21         * Context.cs: Clear key info memory (not just nullify). Fix bug #82819
22
23 2007-08-16  Sebastien Pouliot  <sebastien@ximian.com>
24
25         * RecordProtocol.cs, SslStreamBase.cs: Ensure nothing (even the same
26         thread) can confuse the record decoding code. Fix bug #82145 (LDAP) 
27         which uses several thread over a single SslClientStream instance.
28
29 2007-05-23 Gonzalo Paniagua Javier <gonzalo.mono@gmail.com>
30
31         * Context.cs: fix the calculation of the unix time.
32
33 2007-05-09  Sebastien Pouliot  <sebastien@ximian.com>
34
35         * HttpsClientStream.cs: Add support for client certificates from
36         HttpWebRequest if it uses X509Certificate2 instance (which requires
37         using 2.0 profile) and if the private key is available.
38         * SslStreamBase.cs: Fix warning in 2.0 because Stream now implements
39         Dispose. Rework Close (in 2.0) to avoid infinite recursion.
40
41 2006-12-08  Sebastien Pouliot  <sebastien@ximian.com> 
42
43         * ClientSessionCache.cs: Fix cache to be really used. Original patch
44         by Roy Versteeg. Fix bug #80175.
45
46 2006-12-08  Sebastien Pouliot  <sebastien@ximian.com>
47
48         * ClientSessionCache.cs: Check for a new environment variable to 
49         control the cache validity period (MONO_TLS_SESSION_CACHE_TIMEOUT).
50         Fix bug #80174.
51
52 2006-09-11  Sebastien Pouliot  <sebastien@ximian.com>
53
54         * CipherSuite.cs: Avoid creating a CryptoStream and a MemoryStream in
55         EncryptRecord (removing the need to do a keysetup each time). Add
56         helper methods to write inside byte buffers. Decrypt the data in
57         place (without allocating new memory) as the result will always be
58         smaller than the original. Avoid TlsStream in CreatePremasterSecret 
59         method. All HMAC access are done with the Negotiating parameters.
60         * ClientRecordProtocol.cs: Set HandshakeState to None if we receive
61         a HelloRequest during an existing session. Remove overidden method
62         ProcessChangeCipherSpec. Skip memory allocation if possible.
63         * Context.cs: Add new SecurityParameters for current, negotiating, 
64         read and write (actually only two different instance exists). Change
65         readSequenceNumber and writeSequenceNumber to ulong to match specs.
66         Remove all properties that are moved/replaced with SecurityParameters.
67         Added methods to Start and End a switch of the security parameters.
68         * RecordProtocol.cs: Add code to ProcessChangeCipherSpec (not abstract
69         anymore). Remove ReadShort and it's use. Deal with null alerts in 
70         SendAlert method (internal error). Change code to deal with 
71         SendChangeCipherSpec inside an existing (encrypted) session. Update 
72         Cipher to use the correct one (mostly Read.Cipher or Negotiating.Cipher
73         for ProcessCipherSpecV2Buffer method).
74         * SecurityParameters.cs: New. Deal with all parameters that changes
75         between negotiations.
76         * ServerRecordProtocol.cs: Remove method ProcessChangeCipherSpec.
77         * SslCipherSuite.cs: Don't use TlsStream when computing MAC. Set the
78         MAC keys to the Negotiating security parameters.
79         * SslClientStream.cs: Change calls from Cipher to Negotiating.Cipher.
80         * SslServerStream.cs: Change calls from Cipher to Negotiating.Cipher.
81         Remove debugging dead code (DateTime).
82         * SslStreamBase.cs: Change calls from Cipher to Current.Cipher. Reuse
83         existing memory buffer.
84         * TlsCipherSuite.cs: Don't use TlsStream when computing MAC. Set the
85         MAC keys to the Negotiating security parameters.
86         * TlsClientSettings.cs: Comment code cause compiler warnings.
87         * TlsStream.cs: Avoid/reduce memory allocations when reading or 
88         writing small integer values to the stream.
89
90 2006-09-07  Sebastien Pouliot  <sebastien@ximian.com>
91
92         * HttpsClientStream.cs: Honor ServicePointManager.SecurityProtocol to
93         select between SSL3, TLS1 or, by default, auto. Great for testing :)
94
95 2006-06-08  Sebastien Pouliot  <sebastien@ximian.com>
96
97         * ClientRecordProtocol.cs: Avoid a NRE when the server request a
98         re-negotiation of the security parameters. Possible fix for #78597.
99
100 2006-04-21  Sebastien Pouliot  <sebastien@ximian.com>
101
102         * SslCipherSuite.cs: Enable abbreviated handshakes for SSL3 too.
103
104 2006-04-12  Sebastien Pouliot  <sebastien@ximian.com>
105
106         * ClientSessionCache.cs: Deal with empty (null) master secret, that 
107         can find their ways into the cache, and treat them as invalid. Fix
108         bug #78085.
109
110 2006-04-10  Sebastien Pouliot  <sebastien@ximian.com>
111
112         * ClientSessionCache.cs: The session id can be zero-length (like our 
113         own server class).
114         * SslServerStream.cs: Adapt code to fixes made in cipher suite and
115         message processing changes in client code.
116
117 2006-03-16  Sebastien Pouliot  <sebastien@ximian.com>
118  
119         * CipherSuiteFactory.cs: Fix bad key exchange values for non-export
120         cihpers. Most certificates have "too much" usages by default so this
121         was hidden from view.
122         * SslStreamBase.cs: Safety net. Throw an exception if we're waiting 
123         for more than five (5) minutes for an async read or write to complete.
124
125 2006-03-16  Sebastien Pouliot  <sebastien@ximian.com>
126
127         * ClientSessionCache.cs: New. Handle a client-side session cache to 
128         enable the use of abbreviated handshake whenever possible. This will
129         reduce the number of negotiation (a very CPU intensive process) done
130         with the same host.
131         * Context.cs: Add a property for AbbreviatedHandshake.
132         * RecordProtocol.cs: Don't send Finished record from ChangeCipherSpec
133         as this won't work if the message flow change.
134         * SslClientStream.cs: Line endings.
135         * SslServerStream.cs: Throw an exception if ReceiveRecord return null
136         or an empty buffer (i.e. communication ended with client). Fix #76254.
137         * SslStreamBase.cs: Re-add synchronous implementations for Read and 
138         Write.
139         * TlsCipherSuite.cs: Update the client-side session cache with the 
140         mastersecret.
141         * TlsStream.cs: Avoid possible buffer underun reading bytes (found by
142         Gonzalo).
143
144 2006-03-08  Sebastien Pouliot  <sebastien@ximian.com>
145   
146        * SslStreamBase.cs: Re-implemented the synchronous versions of Read
147        and Write methods so they don't use the async code.
148
149 2006-03-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
150
151         * SslStreamBase.cs: avoid creating the ManualResetEvent whenever
152         possible. Don't lock on an instance of an object that the user can get.
153
154 2006-03-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
155
156         * RecordProtocol.cs: avoid creating the ManualResetEvent whenever
157         possible. Don't lock on an instance of an object that the user can get.
158
159 2006-03-02  Sebastien Pouliot  <sebastien@ximian.com>
160
161         * RecordProtocol.cs: Fix possible endless loop (#77663). Remove hack
162         for an old, fixed, MCS bug (#67711).
163
164 2005-10-06  Sebastien Pouliot  <sebastien@ximian.com>
165
166         * ClientRecordProtocol.cs: Update HandshakeMessages after each 
167         message. Fix bug #76258.
168         * RecordProtocol.cs: Remove writing into the HandshakeMessages stream
169         at this stage. We may need the data before that. Fix bug #76258.
170         * ServerRecordProtocol.cs: Update HandshakeMessages after each 
171         message. Fix bug #76258.
172         * SslServerStream.cs: Changed check for the presence of client 
173         certificates during handshake.
174
175 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
176
177         * SslStreamBase.cs, ServerRecordProtocol.cs, SslClientStream.cs,
178         ClientRecordProtocol.cs, RecordProtocol.cs, SslServerStream.cs:
179         Re-written async support for Ssl[Client|Server]Stream from JD Conley
180         <jd.conley@coversant.net> with minor changes. Fix bug #75687 (and a 
181         lot of other known problems).
182
183 2005-07-01  Sebastien Pouliot  <sebastien@ximian.com>
184
185         * ServerContext.cs: Build the list of trusted certificates from all
186         the trusted root for the current user and the local machine.
187         * SslServerStream.cs: Add support for client certificate (and the 
188         callback for optional mutual authentication with SSL3).
189
190 2005-06-22  Sebastien Pouliot  <sebastien@ximian.com>
191
192         * SslClientStream.cs: Removed failsafe timeout of 5 minutes as some
193         protocols can go idle for longer than this.
194
195 2005-06-14  Sebastien Pouliot  <sebastien@ximian.com>
196
197         * SslClientStream.cs: Add support for _optional_ mutual authentication.
198         SSL3 and TLS1 deals differently with this. SSL3 tested with OpenSSL,
199         TSL1 tested with OpenSSL and LDAPS/AD.
200
201 2005-06-06  Sebastien Pouliot  <sebastien@ximian.com>
202
203         * Alert.cs: Add NoCertificate (41) which _should_ be used in SSL3
204         if we don't want to send a certificate when requested by a server
205         (e.g. in the case the mutual authentication is optional).
206         * CipherSuite.cs: Fixed recursive property. Changed type to short so
207         it can hold 256 bits (valid value). Fixed ctor so it doesn't assign
208         the it's own value.
209
210 2005-05-13  Sebastien Pouliot  <sebastien@ximian.com>
211
212         * SslClientStream.cs: Forgot to set the event in the previous fix.
213
214 2005-05-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
215
216         * SslClientStream.cs: check for the dispose in NetworkReadCallback.
217         Patch by Sebastien "Cryptoman" Pouliot.
218
219 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
220
221         * SslClientStream.cs: gotta call EndInvoke, not EndRead.
222
223 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
224
225         * SslClientStream.cs: MemoryStream does not implement proper Begin*
226         methods, so we need this to prevent infinite recursion if we have a
227         callback that calls BeginRead.
228
229 2005-04-13  Sebastien Pouliot  <sebastien@ximian.com>
230
231         * RecordProtocol.cs: Some API changes so a record can be decoded from
232         any supplied stream (not just the inner network stream).
233         * SslClientStream.cs: BeginRead is now truly async if the Negotiate is
234         called from BeginWrite (where it should be in most case).
235         * SslServerStream.cs: Adapted to API changes in RecordProtocol.cs.
236
237 2005-04-12  Sebastien Pouliot  <sebastien@ximian.com>
238
239         * SslHandshakeHash.cs: Changed "SslHash" to "MD5SHA1". Fix #71696.
240
241 2005-04-10  Sebastien Pouliot  <sebastien@ximian.com>
242
243         * HttpsClientStream.cs: Added a TrustFailure property so a 
244         WebException can now report TrustFailure correctly. Fix bug 74286.
245
246 2005-04-07  Sebastien Pouliot  <sebastien@ximian.com>
247
248         * SslCipherSuite.cs: Fix calculation (sequence number) for the server
249         side stream. Patch by Brian Ritchie.
250
251 2005-02-04  Sebastien Pouliot  <sebastien@ximian.com>
252
253         * Reverting last changes in SslClientStream and RecordProtocol. This
254         break when sending large files back and forth (echo test).
255
256 2005-02-02  Sebastien Pouliot  <sebastien@ximian.com>
257
258         * SslClientStream.cs: Throw exception when we receive a null record.
259         * RecordProtocol.cs: Added code to avoid blocking and endless loops
260         if the data is incomplete or missing - even in the case the server
261         side doesn't close the connection (see new cutcli tool).
262
263 2004-12-15  Sebastien Pouliot  <sebastien@ximian.com>
264
265         * CipherSuite.cs: Removed unused MD5 and SHA1 instances created in 
266         PRF method (fix compilation warnings).
267
268 2004-12-13  Sebastien Pouliot  <sebastien@ximian.com>
269
270         * SslClientStream.cs: New internal property, ServerCertificates, to
271         "easily" retreive the server's certificate chain using reflection.
272
273 2004-11-23  Sebastien Pouliot  <sebastien@ximian.com>
274
275         * RecordProtocol.cs: Fixed ClientHelloV2 support.
276
277 2004-11-10  Sebastien Pouliot  <sebastien@ximian.com>
278
279         * CipherSuiteFactory.cs: Activated RSA_WITH_AES_256_CBC_SHA as it is
280         supported by some browsers.
281         * ContentType.cs: Removed ClientHelloV2 from the enum as it is not a
282         "true" content type (it just looks so where we're processing it).
283         * Context.cs: Added support to switch protocol (e.g. SSL2->SSL3 or 
284         SSL2->TLS1). Contributed by Carlos Guzman Alvarez.
285         * RecordProtocol.cs: Added support for ClientHelloV2 message 
286         (contributed by Carlos Guzman Alvarez). This is a Handshake message
287         so it must be MACed. Also fixed the challenge length because some
288         browsers implementation don't interpret "This value must be 32." as
289         having 32 bytes.
290
291 2004-10-05  Sebastien Pouliot  <sebastien@ximian.com>
292
293         * SslClientStream.cs: Changed InputBuffer to internal (was protected).
294
295 2004-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
296
297         * HttpsClientStream.cs: the .ctor receives a pre-read buffer now.
298         * SslClientStream.cs: added InputBuffer property.
299
300 2004-09-23  Sebastien Pouliot  <sebastien@ximian.com>
301
302         * RecordProtocol.cs: Fix alert data that could leak into appplication 
303         data (e.g. when closing the SSL session).
304
305 2004-07-14  Carlos Guzman Alvarez  <carlosga@telefonica.net>
306
307         * Removed duplicate license header file from
308         all source files.
309
310 2004-07-14  Sebastien Pouliot  <sebastien@ximian.com>
311
312         * SslClientStream.cs: Changed lock to "new object()" and not 
313         String.Empty (as the read/write locks points becomes the same).
314         * SslServerStream.cs: Changed lock to "new object()" and not 
315         String.Empty (as the read/write locks points becomes the same).
316
317 2004-07-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
318
319         * HttpsClientStream.cs: get an HttpWebRequest so that we can use the
320         ServicePoint it has. No need to get the host now.
321
322 2004-05-09 Carlos Guzman Alvarez  <carlosga@telefonica.net>
323
324         * Mono.Security.Protocol.Tls/Alert.cs:
325         * Mono.Security.Protocol.Tls/CipherSuite.cs:
326         * Mono.Security.Protocol.Tls/CipherSuiteCollection.cs:
327         * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
328         * Mono.Security.Protocol.Tls/Context.cs:
329         * Mono.Security.Protocol.Tls/RecordProtocol.cs:
330         * Mono.Security.Protocol.Tls/SecurityCompressionType.cs:
331         * Mono.Security.Protocol.Tls/ServerRecordProtocol.cs:
332         * Mono.Security.Protocol.Tls/SslServerStream.cs:
333         * Mono.Security.Protocol.Tls/TlsClientSettings.cs:
334
335                 - Changes for fix FxCop Rules.
336
337                 - Reworked CipherSuiteCollection class.
338
339
340 2004-04-21 Carlos Guzman Alvarez  <carlosga@telefonica.net>
341
342         * Mono.Security.Protocol.Tls/DebugHelper.cs:
343
344                 - New class.
345
346         * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
347         * Mono.Security.Protocol.Tls/RecordProtocol.cs:
348         * Mono.Security.Protocol.Tls/Context.cs:
349         * Mono.Security.Protocol.Tls/Context.cs:
350         * Mono.Security.Protocol.Tls/SslCipherSuite.cs:
351         * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:
352         * Mono.Security.Protocol.Tls/SslClientStream.cs:
353
354                 - Added debug capabilities.
355
356         * Mono.Security.Protocol.Tls/ServerContext.cs:
357
358                 - Added initialization of requested CertificateTypes and CA's
359
360 2004-04-16 Carlos Guzman Alvarez  <carlosga@telefonica.net>
361
362         * Mono.Security.Protocol.Tls/TlsException.cs:
363
364                 - Make it public until npgsql people can fix their sources.
365
366 2004-03-19 Carlos Guzman Alvarez  <carlosga@telefonica.net>
367
368         * Mono.Security.Protocol.Tls/TlsServerSettings.cs:
369
370                 - Added new CertificateRSA property.
371
372                 - Added new UpdateCertfificateRSA method.
373
374         * Mono.Security.Protocol.Tls/CipherSuite.cs:
375
376                 - Removed CertificateRSA() method.      
377
378 2004-03-19  Sebastien Pouliot  <sebastien@ximian.com>
379
380         * CipherSuite.cs: Fixed PRF generation when secret is an odd number of 
381         bytes (section 5 in RFC2246).
382         * CipherSuiteFactory.cs: Added algorithms RSA_EXPORT_WITH_RC4_40_MD5,
383         RSA_EXPORT_WITH_RC2_CBC_40_MD5, RSA_EXPORT_WITH_DES40_CBC_SHA,
384         RSA_EXPORT_WITH_RC4_56_MD5, RSA_EXPORT_WITH_RC2_CBC_56_MD5,
385         RSA_EXPORT_WITH_DES_CBC_56_SHA and RSA_EXPORT_WITH_RC4_56_SHA to both
386         SSL3 and TLS1 protocols.
387         * SslCipherSuite.cs: Fixed key generation for exportable ciphers.
388         * TlsCipherSuite.cs: Fixed key generation for exportable ciphers.
389
390 2004-03-16 Carlos Guzman Alvarez  <carlosga@telefonica.net>
391
392         * Mono.Security.Protocol.Tls/SslCipherSuite.cs:
393
394                 - Added changes for allow it to work as server or client.
395
396 2004-03-15 Carlos Guzman Alvarez  <carlosga@telefonica.net>
397
398         * Mono.Security.Protocol.Tls/TlsStream.cs:
399         * Mono.Security.Protocol.Tls/CipherSuite.cs:
400         * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:
401         * Mono.Security.Protocol.Tls/SslHandshakeHash.cs:
402         * Mono.Security.Protocol.Tls/RecordProtocol.cs:
403
404                 - Use Buffer.BlockCopy instead of System.Array.Copy
405
406 2004-03-10 Carlos Guzman Alvarez  <carlosga@telefonica.net>
407
408         * Mono.Security.Protocol.Tls/Ciphersuite.cs:
409
410                 - Added generation of the Server encryption algorithms.
411
412                 - Modified encryption/decription methods for work
413                 as client or server as needed.
414
415         * Mono.Security.Protocol.Tls/RecordProtocol.cs:
416         * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
417         * Mono.Security.Protocol.Tls/ServerRecordProtocol.cs:
418
419                 - Added new ProcessChangeCipherSpec method.
420
421         * Mono.Security.Protocol.Tls/Context.cs:
422
423                 - Added new PrintBuffer method ( for debug ).
424
425         * Mono.Security.Protocol.Tls/SslClientStream.cs:
426         * Mono.Security.Protocol.Tls/SslServerStream.cs:
427
428                 - Callback cleanup.
429
430 2004-03-06 Carlos Guzman Alvarez  <carlosga@telefonica.net>
431
432         * Mono.Security.Protocol.Tls/SslServerStream.cs:
433
434                 - Initial implementation of the doHandshake method.
435
436         - Added initial events implementation.
437
438         * Mono.Security.Protocol.Tls/Ciphersuite.cs:
439         * Mono.Security.Protocol.Tls/TlsCiphersuite.cs:
440         * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
441         * Mono.Security.Protocol.Tls/ServerRecordProtocol.cs:
442         * Mono.Security.Protocol.Tls/SslClientStream.cs:
443         * Mono.Security.Protocol.Tls/TlsServerSettings.cs:
444         * Mono.Security.Protocol.Tls/TlsClientSettings.cs:
445         * Mono.Security.Protocol.Tls/ClientContext.cs:
446
447                 - Changes for make use of the renamed classes and enums.
448
449         * Mono.Security.Protocol.Tls/TlsContentType.cs:
450
451                 - Renamed to ContentType.cs ( Enum and file )
452  
453         * Mono.Security.Protocol.Tls/TlsCiphersuiteCollection.cs:
454
455                 - Renamed to CiphersuiteCollection.cs ( Class and file )
456
457         * Mono.Security.Protocol.Tls/TlsCiphersuiteFactory.cs:
458
459                 - Renamed to CiphersuiteCollection.cs ( Class and file )
460
461         * Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs:
462
463                 - Renamed to SslHandshakeHash.cs ( Class and file )
464
465         * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
466
467                 - Renamed to SslCipherSuite.cs ( Class and file )
468
469 2004-02-26 Carlos Guzman Alvarez  <carlosga@telefonica.net>
470
471         * Mono.Security.Protocol.Tls/HandshakeState.cs:
472
473                 - New file.
474
475         * Mono.Security.Protocol.Tls/SslClientStream.cs:
476         * Mono.Security.Protocol.Tls/SslServerStream.cs:
477         * Mono.Security.Protocol.Tls/Context.cs:
478         * Mono.Security.Protocol.Tls/ClientContext.cs:
479         * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
480
481                 - Added changes for better handling of ClientHelloRequest messages.
482
483 2004-02-25  Sebastien Pouliot  <sebastien@ximian.com>
484
485         * HttpsClientStream.cs: New. Internal glue class between System.dll 
486         WebConnection and SslClientStream to reduce reflection.
487         * SslClientStream.cs: RaiseServerCertificateValidation is now virtual
488         to allow HttpsClientStream to override it.
489
490 2004-02-24 Carlos Guzman Alvarez  <carlosga@telefonica.net>
491
492         * Mono.Security.Protocol.Tls/RecordProtocol.cs:
493         * Mono.Security.Protocol.Tls/SslClientStream.cs:
494         * Mono.Security.Protocol.Tls/SslServerStream.cs:
495
496                 - Reimplementation of TLS/SSL Alert Protocol.
497
498 2004-02-20 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
499
500         * Mono.Security.Protocol.Tls.Handshake.Client/SslClientCertificate.cs:
501
502         - Improved exception handling.
503
504 2004-02-18 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
505
506         * Mono.Security.Protocol.Tls/CipherAlgorithmType.cs:
507         * Mono.Security.Protocol.Tls/HashAlgorithmType.cs:
508         * Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs:
509
510                 - Added Serializable attribute.
511
512         * Mono.Security.Protocol.Tls/CipherSuite.cs:
513         * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:
514         * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
515         * Mono.Security.Protocol.Tls/TlsContext.cs:
516
517                 - Added some optimizations proposed by Sebastien Pouliot.
518
519         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:
520
521                 - Changes on Common Name detection and certificate error handling ( Thanks to Sebastien Pouliot for his feedback ).
522
523 2004-02-18  Sebastien Pouliot  <sebastien@ximian.com>
524
525         * SslClientStream.cs: Fixed (inverted) condition for ServerCertificate.
526         * SecurityProtocolType.cs: Added [Serializable] to enum to match MS 
527         implementation.
528
529 2004-02-17 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
530
531         * Mono.Security.Protocol.Tls/SslClientStream.cs:
532
533                 - Added changes to security properties for check that the handshake is finished.
534
535         * Mono.Security.Protocol.Tls/SslClientStream.cs:
536
537         - Added changes for bring async methods to work ( Thanks to Sebastien Pouliot )
538
539         - Reworked the record fragmentation.
540
541         - Fix for send the close notify alert in the Close method
542         only if the Handshake is fully negotiated.
543
544
545 2004-02-16 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
546
547         * Mono.Security.Protocol.Tls/TlsCipherSuiteFactory.cs:
548
549         - Changed ciphersuites order of preference ( Thanks to Sebastien Pouliot for his feedback ).
550
551 2004-02-15 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
552  
553         * Mono.Security.Protocol.Tls/SslClientStream.cs:
554  
555                 - Added specific control od available data for Network Streams
556                 on Read ( Thanks to Francisco Figueiredo Jr. for his feedback ).
557  
558                 - Removed test code.
559
560 2004-02-14 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
561
562     * Mono.Security.Protocol.Tls/SslClientStream.cs:
563
564         - Removed test code.
565
566 2003-11-17 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
567
568         * Mono.Security.Protocol.Tls/SslClientStream.cs:
569
570                 Removed ReadByte method, use innerStream.ReadByte() method instead.
571
572 2003-11-13 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
573
574         * Added implementation of an SslClientStream class similar to the MS .NET Framework 1.2 documentation.
575
576                 The next files are no more needed:
577
578                         - TlsSession.cs
579
580                         - TlsNetworkStream.cs
581
582                         - TlsSocket.cs
583
584                         - TlsSessionState.cs
585
586                 The next files are renamed:
587
588                         - TlsSessionSettings.cs -> TlsClientSettings.cs
589
590                         - TlsSessionContext.cs -> TlsContext.cs
591
592                 The next files are new:
593
594                         - SslClientStream.cs ( the name is non definitive yet )
595
596                 The next files where changed to reflect the new canges:
597
598                         - TlsHandshakeMessage.cs
599
600                         - TlsClientCertificate.cs
601
602                         - TlsClientCertificateVerify.cs
603
604                         - TlsClientFinished.cs
605
606                         - TlsClientHello.cs
607
608                         - TlsClientKeyExchange.cs
609
610                         - TlsServerCertificate.cs
611
612                         - TlsServerCertificateRequest.cs
613
614                         - TlsServerFinished.cs
615
616                         - TlsServerHello.cs
617
618                         - TlsServerHelloDone.cs
619
620                         - TlsServerKeyExchange.cs
621
622                         - TlsAlert.cs
623
624                         - TlsCloseNotifyAlert.cs
625
626                 
627 2003-11-12 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
628
629         * Mono.Security.Protocol.Tls.Alerts/TlsAlert.cs:
630         
631                 - Changes for give full error message only in debug mode ( Thanks to Sebastién Pouliot. )
632                 
633         * Mono.Security.Protocol.Tls/TlsProtocol.cs:
634         
635                 - Renamed to SecurityProtocolType.cs ( for match .NET 1.2 )
636         
637         * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:
638         
639                 - Renamed to MD5SHA1.cs ( Thanks to Sebastién Pouliot. )
640                 
641         * Mono.Security.Cryptography/TlsCompressionMethod.cs:
642         
643                 - Renamed to SecurityCompressionType.
644                 
645         * Mono.Security.Protocol.Tls/CipherAlgorithmType.cs:
646         * Mono.Security.Protocol.Tls/HashAlgorithmType.cs:
647         * Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs:
648         
649                 - New enumerations that matches .NET 1.2 definitions with some minor differences.
650         
651         * Mono.Security.Protocol.Tls/CipherSuite.cs:
652         * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:
653         * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
654         * Mono.Security.Protocol.Tls/TlsSessionContext.cs:
655         
656                 - Added changes for make use of new enumerations.
657         
658         * Mono.Security.Protocol.Tls/TlsClientStream.cs:
659         
660                 - Added new informative properties that matches .NET 1.2 SslClientStream
661                 ( Not all the properties are implemented yet ).
662
663
664 2003-11-10 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
665
666         * Mono.Security.Protocol.Tls.Alerts/TlsAlert.cs:
667
668                 - Fixed invalid alert message.
669
670         * Mono.Security.Protocol.Tls/CipherSuite.cs:
671         * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
672         * Mono.Security.Cryptography/HMAC.cs:
673         * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:
674         * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:
675
676                 - Changed ( Thanks to Sebastién Pouliot for his feedback )
677
678                         SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
679                         MD5CryptoServiceProvider sha = new MD5CryptoServiceProvider();
680
681                         to
682
683                         HashAlgorithm sha = SHA1.Create();
684                         HashAlgorithm md5 = MD5.Create(); 
685
686 2003-11-04 Carlos Guzmán Álvarez <carlosga@telefonica.net>
687
688         * Mono.Security.Protocol.Tls/CipherSuite.cs:
689
690                 - Added custom padding for record encryption.
691
692
693 2003-11-03 Carlos Guzmán Álvarez <carlosga@telefonica.net>
694
695         * Mono.Security.Protocol.Tls.Handshake/TlsHandshakeMessages.cs:
696         
697                 - Removed file.
698
699         * Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs:
700         
701                 - New class for handshake hashes calculation on SSL3 protocol.
702
703         * Mono.Security.Protocol.Tls/TlsSessionContext.cs:
704         
705                 - Fixed mac keys clearing for SSL3 protocol.
706
707         * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
708         * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs:
709         
710                 - Added changes for make use of new TlsSslHandshakeHash class.
711         
712         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs:
713         
714                 - Added initial implementation for SSL3 protocol.
715         
716         * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:
717         
718                 - New class for md5-sha hash calculation.
719                                                         
720         * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs:
721         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs:
722         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:
723         * Mono.Security.Protocol.Tls.Handshake.Client/TlsHandshakeMessage.cs:
724         
725                 - Make use of new MD5SHA1CryptoServiceProvider class.
726                 
727         * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:
728         
729                 - Added initial implementation (not finished).
730                         
731         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:
732         
733                 - Minor change to message processing.
734
735                 - Changed verify method name to verifySignature.
736                         
737         * Mono.Security.Protocol.Tls/TlsSessionContext.cs:
738         
739                 - Changed handshakeHashes member to be an TlsStream.
740
741 2003-10-28 Carlos Guzmán Álvarez <carlosga@telefonica.net>
742
743         * Mono.Security.Protocol.Tls/CipherSuite.cs:
744         * Mono.Security.Protocol.Tls/TlsSessionSettings.cs:
745         * Mono.Security.Protocol.Tls/TlsServerSettings.cs:
746         * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:
747         * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs:
748         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:
749         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:
750
751                 - Added changes for make use of X509 classes from mono.
752
753 2003-10-23 Carlos Guzmán Álvarez <carlosga@telefonica.net>
754
755         * Added partial implementation of SSL3 protocol ( not finished yet ).
756
757         * TlsAbstractCipherSuite.cs: Renamed to CipherSuite.cs.
758
759         * Removed AssemblyInfo.cs file.
760
761 2003-10-21 Carlos Guzmán Álvarez <carlosga@telefonica.net>
762
763         TlsCipherSuiteFactory.cs: Changed names of private methods.
764
765         TlsSslCipherSuite.cs: Replaced implementations of key generation methods with a throw new NotSupportedException().
766
767
768 2003-10-20  Carlos Guzmán Álvarez  <carlosga@telefonica.net>
769
770         TlsCupherSuite.cs: Fixed padding length calculation on record encryption.
771         
772         TlsSessionContext.cs:   Added new CompressionMethod property.
773                                         Added new MAX_FRAGMENT_SIZE constant.
774
775         TlsSession.cs: Removed MaxFragmentSize property.
776
777         TlsSocket.cs: Replaced use of TlsSesison.MaxFragmentSize by TlsSessionContext.MAX_FAGMENT_SIZE
778         
779         TlsSessionSettings.cs: Added new CompressionMethod property.
780
781         * Abstracted CipherSuite classes for allow work with other protocol versions.
782
783         * Added new files :
784
785                 TlsAbstractCipherSuite.cs 
786                         
787                 TlsSslCipherSuite.cs
788
789                 TlsCipherSuiteFactory.cs
790
791                 TlsCompressionMethod.cs
792
793         * Added new cipher suites definitions based on RFC3268 - (http://www.ietf.org/rfc/rfc3268.txt)
794
795         * Added two new supported ciphersuites for TLS protocol:
796
797                 TLS_RSA_WITH_AES_256_CBC_SHA
798
799                 TLS_RSA_WITH_AES_128_CBC_SHA
800
801         * Moved key generation stuff to specific cipher suite classes.
802
803 2003-10-20  Pedro Martínez Juliá  <yoros@wanadoo.es>
804
805         * AssemblyInfo.cs: commented out KeyFile reference.
806
807         * TlsSession.cs: changed Math.Pow for System.Math.Pow because of MCS
808         bug with namespace resolving.
809