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