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