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