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