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