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