2010-03-12 Jb Evain <jbevain@novell.com>
[mono.git] / mcs / class / Mono.Security / Mono.Security.Protocol.Tls.Handshake.Client / ChangeLog
1 2010-03-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2
3         * TlsServerCertificate.cs: chain is built and validated in
4         System.dll now.
5
6 2010-03-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
7
8         * TlsServerCertificate.cs:
9         added a new callback for certificate validation that gets all the
10         certificates received from the server/client. The callee should
11         build the chain and validate it.
12
13 2009-08-20  Sebastien Pouliot  <sebastien@ximian.com>
14
15         * TlsServerCertificate.cs: If no usage information is available then
16         assume it's ok for SSL since we'll (later) check that the CN contains
17         a host name (that match the server) and such a certificate wouldn't
18         be much useful for anything but SSL/TLS. Fix the new stmp.gmail.com
19         certificate usage failure.
20
21 2007-12-15  Sebastien Pouliot  <sebastien@ximian.com>
22
23         * TlsServerCertificate.cs: Add support for wilcard (*) when matching
24         the target host with the certificate. Fix bug #346812
25
26 2007-05-22  Sebastien Pouliot  <sebastien@ximian.com>
27
28         * TlsClientCertificate.cs: If possible avoid to export the private key
29         (it could be non-exportable in a different RSA class implementation).
30         Patch from Roy Versteeg to fix #81592.
31         * TlsClientCertificateVerify.cs: Add chain support for x.509 client 
32         certificates. Based on Roy Versteeg patch to fix #80557.
33
34 2006-12-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
35
36         * TlsServerCertificate.cs: typo.
37
38 2006-09-11  Sebastien Pouliot  <sebastien@ximian.com>
39
40         * TlsClientFinished.cs: Use Write.Cipher instead of Cipher. Remove 
41         usage of TlsStream in ProcessAsSsl3.
42         * TlsClientKeyExchange.cs: Use Negotiating.Cipher instead of Cipher.
43         Refactor to avoid code duplication between SSL3 and TLS.
44         * TlsServerCertificate.cs: Use Negotiating.Cipher instead of Cipher.
45         * TlsServerFinished.cs: Use Current.Cipher instead of Cipher. Use 
46         Compare to test client and server digests equality. Remove usage of 
47         TlsStream in ProcessAsSsl3.
48         * TlsServerHello.cs: Use Negotiating.Cipher instead of Cipher. Remove
49         usage of TlsStream to reduce memory allocations. Remove method 
50         CompareSessionId and use the new base class Compare method instead.
51
52 2006-03-16  Sebastien Pouliot  <sebastien@ximian.com>
53
54         * TlsClientHello.cs: Check to see if we already have a known session
55         (past or concurrent) with the same target host. If so the use this
56         session id to try to resume (i.e. abbreviated handshake).
57         * TlsServerFinished.cs: Don't reset the hasndshake stream here. The 
58         stream must be resetted once BOTH the client and the server are done.
59         The order of message can be different if we use an abbreviated 
60         handshake sequence which leads to an invalid handshake.
61         * TlsServerHello.cs: Add this session info to the client cache. If the
62         server sends the same session id (as we supplied) then we MUST do an 
63         abbreviated handshake.
64
65 2005-11-23  Sebastien Pouliot  <sebastien@ximian.com>
66
67         * TlsServerCertificate.cs: Add support for Netscape Server Gated 
68         Crypto (2.16.840.1.113730.4) as a valid server-side EKU OID. Fix bug
69         #76804.
70
71 2005-06-14  Sebastien Pouliot  <sebastien@ximian.com>
72
73         * TlsClientCertificate.cs: Add support for _optional_ mutual 
74         authentication. SSL3 and TLS1 deals differently with this. SSL3 tested
75         with OpenSSL, TSL1 tested with OpenSSL and LDAPS/AD.
76
77 2005-04-12  Sebastien Pouliot  <sebastien@ximian.com>
78
79         * TlsClientCertificateVerify.cs: Add missing data length (16 bits - 
80         not to be confused with the record 24 bits length) before the RSA
81         signature of the MD5SHA1 hash. Fix #71696.
82
83 2004-05-11 Carlos Guzman Alvarez  <carlosga@telefonica.net>
84
85         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:
86
87                 - Added fix for better handling of exceptions when
88                 building the X509 Certificate chain.
89
90 2004-04-22  Sebastien Pouliot  <sebastien@ximian.com>
91
92         * TlsClientCertificateVerify.cs: Use Buffer.BlockCopy instead of 
93         Array.Copy.
94         * TlsServerCertificate.cs: Changed KeyUsage to KeyUsages and CertType 
95         to CertTypes.
96
97 2004-03-19  Sebastien Pouliot  <sebastien@ximian.com>
98
99         * TlsClientKeyExchange.cs: Fixed key pair used to encrypt pre-master
100         secret for exportable ciphers - must use the public key received in 
101         ServerKeyExchange.
102
103 2004-03-10 Carlos Guzman Alvarez  <carlosga@telefonica.net>
104
105         * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:
106         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificateRequest.cs:
107         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs:
108         * Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificateVerify.cs:
109         * Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificateRequest.cs:
110         * Mono.Security.Protocol.Tls.Handshake.Server/TlsServerFinished.cs:
111
112                 - Fixed meesage type definition.
113
114 2004-03-04 Carlos Guzman Alvarez  <carlosga@telefonica.net>
115
116         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHelloDone.cs:
117         * Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHelloDone.cs:
118
119         - Fixed message type.
120
121 2004-02-26  Sebastien Pouliot  <sebastien@ximian.com>
122
123         * TlsServerCertificate.cs: Certificate validation has been activated.
124
125 2004-02-26 Carlos Guzman Alvarez  <carlosga@telefonica.net>
126
127         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs:
128
129                 - Added changes for better handling of ClientHelloRequest messages.
130
131 2004-02-21  Carlos Guzman Alvarez  <carlosga@telefonica.net>
132
133     * TlsServerHello: Fix for handle SecurityProtocolType.Default.
134
135 2004-02-20  Sebastien Pouliot  <sebastien@ximian.com>
136
137         * TlsServerCertificate.cs: Added code to validate the server X.509
138         certificate (identity, usage) and it's chain to a trusted root.
139         Note that the verification is commented for the time being.
140
141 2004-02-14 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
142
143     * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:
144
145         - Removed test code.
146
147 2003-11-17 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
148
149         * Mono.Security.Protocol.Tls/SslClientStream.cs:
150
151                 Removed ReadByte method, use innerStream.ReadByte() method instead.
152
153 2003-11-13 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
154
155         * Added implementation of an SslClientStream class similar to the MS .NET Framework 1.2 documentation.
156
157                 The next files are no more needed:
158
159                         - TlsSession.cs
160
161                         - TlsNetworkStream.cs
162
163                         - TlsSocket.cs
164
165                         - TlsSessionState.cs
166
167                 The next files are renamed:
168
169                         - TlsSessionSettings.cs -> TlsClientSettings.cs
170
171                         - TlsSessionContext.cs -> TlsContext.cs
172
173                 The next files are new:
174
175                         - SslClientStream.cs ( the name is non definitive yet )
176
177                 The next files where changed to reflect the new canges:
178
179                         - TlsHandshakeMessage.cs
180
181                         - TlsClientCertificate.cs
182
183                         - TlsClientCertificateVerify.cs
184
185                         - TlsClientFinished.cs
186
187                         - TlsClientHello.cs
188
189                         - TlsClientKeyExchange.cs
190
191                         - TlsServerCertificate.cs
192
193                         - TlsServerCertificateRequest.cs
194
195                         - TlsServerFinished.cs
196
197                         - TlsServerHello.cs
198
199                         - TlsServerHelloDone.cs
200
201                         - TlsServerKeyExchange.cs
202
203                         - TlsAlert.cs
204
205                         - TlsCloseNotifyAlert.cs
206
207                 
208 2003-11-12 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
209
210         * Mono.Security.Protocol.Tls.Alerts/TlsAlert.cs:
211         
212                 - Changes for give full error message only in debug mode ( Thanks to Sebastién Pouliot. )
213                 
214         * Mono.Security.Protocol.Tls/TlsProtocol.cs:
215         
216                 - Renamed to SecurityProtocolType.cs ( for match .NET 1.2 )
217         
218         * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:
219         
220                 - Renamed to MD5SHA1.cs ( Thanks to Sebastién Pouliot. )
221                 
222         * Mono.Security.Cryptography/TlsCompressionMethod.cs:
223         
224                 - Renamed to SecurityCompressionType.
225                 
226         * Mono.Security.Protocol.Tls/CipherAlgorithmType.cs:
227         * Mono.Security.Protocol.Tls/HashAlgorithmType.cs:
228         * Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs:
229         
230                 - New enumerations that matches .NET 1.2 definitions with some minor differences.
231         
232         * Mono.Security.Protocol.Tls/CipherSuite.cs:
233         * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:
234         * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
235         * Mono.Security.Protocol.Tls/TlsSessionContext.cs:
236         
237                 - Added changes for make use of new enumerations.
238         
239         * Mono.Security.Protocol.Tls/TlsClientStream.cs:
240         
241                 - Added new informative properties that matches .NET 1.2 SslClientStream
242                 ( Not all the properties are implemented yet ).
243
244
245 2003-11-10 Carlos Guzmán Álvarez  <carlosga@telefonica.net>
246
247         * Mono.Security.Protocol.Tls.Alerts/TlsAlert.cs:
248
249                 - Fixed invalid alert message.
250
251         * Mono.Security.Protocol.Tls/CipherSuite.cs:
252         * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
253         * Mono.Security.Cryptography/HMAC.cs:
254         * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:
255         * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:
256
257                 - Changed ( Thanks to Sebastién Pouliot for his feedback )
258
259                         SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
260                         MD5CryptoServiceProvider sha = new MD5CryptoServiceProvider();
261
262                         to
263
264                         HashAlgorithm sha = SHA1.Create();
265                         HashAlgorithm md5 = MD5.Create(); 
266
267 2003-11-04 Carlos Guzmán Álvarez <carlosga@telefonica.net>
268
269         * Mono.Security.Protocol.Tls/CipherSuite.cs:
270
271                 - Added custom padding for record encryption.
272
273
274 2003-11-03 Carlos Guzmán Álvarez <carlosga@telefonica.net>
275
276         * Mono.Security.Protocol.Tls.Handshake/TlsHandshakeMessages.cs:
277         
278                 - Removed file.
279
280         * Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs:
281         
282                 - New class for handshake hashes calculation on SSL3 protocol.
283
284         * Mono.Security.Protocol.Tls/TlsSessionContext.cs:
285         
286                 - Fixed mac keys clearing for SSL3 protocol.
287
288         * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
289         * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs:
290         
291                 - Added changes for make use of new TlsSslHandshakeHash class.
292         
293         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs:
294         
295                 - Added initial implementation for SSL3 protocol.
296         
297         * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:
298         
299                 - New class for md5-sha hash calculation.
300                                                         
301         * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs:
302         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs:
303         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:
304         * Mono.Security.Protocol.Tls.Handshake.Client/TlsHandshakeMessage.cs:
305         
306                 - Make use of new MD5SHA1CryptoServiceProvider class.
307                 
308         * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:
309         
310                 - Added initial implementation (not finished).
311                         
312         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:
313         
314                 - Minor change to message processing.
315
316                 - Changed verify method name to verifySignature.
317                         
318         * Mono.Security.Protocol.Tls/TlsSessionContext.cs:
319         
320                 - Changed handshakeHashes member to be an TlsStream.
321
322 2003-10-28 Carlos Guzmán Álvarez <carlosga@telefonica.net>
323
324         * Mono.Security.Protocol.Tls/CipherSuite.cs:
325         * Mono.Security.Protocol.Tls/TlsSessionSettings.cs:
326         * Mono.Security.Protocol.Tls/TlsServerSettings.cs:
327         * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:
328         * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs:
329         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:
330         * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:
331
332                 - Added changes for make use of X509 classes from mono.
333
334 2003-10-23 Carlos Guzmán Álvarez <carlosga@telefonica.net>
335
336         * Added partial implementation of SSL3 protocol ( not finished yet ).