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