2010-06-11 Jonathan Chambers <joncham@gmail.com>
[mono.git] / mcs / class / System / System.Security.Cryptography.X509Certificates / ChangeLog
1 2010-06-11 Jonathan Chambers  <joncham@gmail.com>
2
3         * X509Certificate2Collection.cs: Add {} around default switch case.
4
5 2010-05-10  Sebastien Pouliot  <sebastien@ximian.com>
6
7         * PublicKey.cs
8         * X500DistinguishedName.cs:
9         * X509BasicConstraintsExtension.cs:
10         * X509Certificate2Collection.cs:
11         * X509Certificate2.cs:
12         * X509Certificate2Enumerator.cs:
13         * X509Chain.cs:
14         * X509ChainElementCollection.cs:
15         * X509ChainElement.cs:
16         * X509ChainElementEnumerator.cs:
17         * X509ChainPolicy.cs:
18         * X509ChainStatus.cs:
19         * X509EnhancedKeyUsageExtension.cs:
20         * X509ExtensionCollection.cs:
21         * X509Extension.cs:
22         * X509ExtensionEnumerator.cs:
23         * X509KeyUsageExtension.cs:
24         * X509KeyUsageFlags.cs:
25         * X509NameType.cs:
26         * X509Store.cs:
27         * X509SubjectKeyIdentifierExtension.cs:
28                 Allow parts required to enable SSL to be built with
29                 the moonlight profile.
30         * X509_2_1_bootstrap.cs: New. Ease bootstrapping 2.1
31
32 2010-04-06  Geoff Norton  <gnorton@novell.com>
33
34         * OSX509Certificates.cs: Fix a crash when doing multiple certificate calls
35         Fix a rare but possible leak.
36
37 2010-03-16  Jb Evain  <jbevain@novell.com>
38
39         * X509Chain.cs: use MOONLIGHT symbol to disambiguate MonoTouch
40         and Moonlight code.
41
42 2010-03-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
43
44         * OSX509Certificates.cs: moved here from Mono.Security.
45
46 2009-07-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
47
48         * X509Chain.cs: revert my last change here since it caused 2 tests to
49         fail.
50
51 2009-07-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
52
53         * X509Certificate2.cs:
54         * X509Chain.cs: changes to make everything compile with latest changes
55         and fixed typo in IsChainComplete().
56
57 2008-06-26  Sebastien Pouliot  <sebastien@ximian.com>
58
59         * X509Certificate2.cs: Allow password-less ctor to (try to) open 
60         PKCS#12 files (with an empty password).
61         [Fix bug #403610]
62
63 2008-06-03  Sebastien Pouliot  <sebastien@ximian.com>
64
65         * X509Certificate2.cs: Allow PrivateKey property to be set to null.
66         [Fix bug #396620]
67
68 2008-05-18  Sebastien Pouliot  <sebastien@ximian.com>
69
70         * X509Chain.cs: Use String.IsNullOrEmpty inside 2.0 code.
71         [Found using Gendarme]
72
73 2008-04-09  Gert Driesen  <drieseng@users.sourceforge.net>
74
75         * X500DistinguishedName.cs: Fixed line endings.
76         * X509Chain.cs: Fixed line endings.
77
78 2008-01-13  Gert Driesen  <drieseng@users.sourceforge.net>
79
80         * X509Certificate2.cs: NotAfter and NotBefore must return local time.
81
82 2007-05-09  Sebastien Pouliot  <sebastien@ximian.com>
83
84         * X509Certificate2.cs: Leave a small stub (PrivateKey property) if
85         SECURITY_DEP isn't defined. This will let Mono.Security.dll build
86         correctly under 2.0 while enabling the use of X509Certificate2 to add
87         support for X.509 client certificates in SSL/TLS.
88
89 2006-12-07  Sebastien Pouliot  <sebastien@ximian.com>
90
91         * X500DistinguishedName.cs: Add an internal method to compare 
92         (canonized) DN so the class can be used in X509Chain.
93         * X509Certificate2.cs: Expose the internal certificate (from Mono.
94         Security.dll) as X509Certificate2 isn't complete enough to implement
95         chaining.
96         * X509Chain.cs: A (working) *subset( of RFC3280 path building and 
97         validation. 
98         * X509ChainElementCollection.cs: Add help method Contains and change
99         Add not to require a flag parameter.
100         * X509ChainElement.cs: Keeps flags compressed (as flags!) and add
101         a method to uncompress them when validation is complete.
102         * X509Store.cs: Expose the internal store (from Mono.Security.dll) as
103         internal. Map Trust and Root as the same store (for compatibility).
104
105 2006-11-24  Sebastien Pouliot  <sebastien@ximian.com>
106
107         * X509Certificate2.cs: Modified Verify to use CryptoConfig to create
108         the X509Chain used to verify the certificate. This makes it possible
109         to change the default chaining (certificate path creation and 
110         validation) algorithm.
111         * X509Chain.cs: Started implementation based on the options and error 
112         codes defined. Work in progress (incomplete and needs a lot more test
113         cases).
114         * X509ChainElementCollection.cs: Added internal methods to Add and
115         Clear the collection.
116         * X509ChainElement.cs: Implemented, MonoTODO removed.
117         * X509ChainPolicy.cs: Add missing checks on enum-based properties. 
118         Renamed fields to match guidelines.
119         * X509ChainStatus.cs: Provide a default StatusInformation value based 
120         on the Status.
121
122 2006-11-22  Sebastien Pouliot  <sebastien@ximian.com>
123
124         * X509Certificate2Collection.cs: Remove comment that proved to be 
125         false (unit tests prove otherwise).
126         * X509Store.cs: Integrate the new 2.0 stores with the existing stores
127         that Mono used since 1.0.
128
129 2006-11-17  Sebastien Pouliot  <sebastien@ximian.com>
130
131         * X509Certificate2Collection.cs: Implement Export (to DER encoded 
132         format), Find (for most X509FindType), Import (for single 
133         certificates), RemoveRange (but it's not transactional).
134         * X509Certificate2.cs: Fix Reset method to reset every field.
135         * X509ExtensionCollection.cs: Implement missing CopyTo. Fix exception
136         handling to match new unit tests.
137         * X509ExtensionEnumerator.cs: Fix recursion.
138         * X509SubjectKeyIdentifierExtension.cs: Add support for ctors
139         accepting a PublicKey instance.
140
141 2006-11-13  Sebastien Pouliot  <sebastien@ximian.com>
142
143         * X509Certificate2.cs: Throw a CryptographicException for (most) 
144         properties if the certificate is "empty". Implement GetNameInfo for
145         X509NameType.SimpleName, EmailName and DnsName. Add detection for 
146         X509ContentType.Pkcs7 in GetCertContentType.
147
148 2006-11-08  Sebastien Pouliot  <sebastien@ximian.com>
149
150         * X500DistinguishedName.cs: Fix most common cases. Some flags are 
151         still not supported.
152         * X509Certificate2.cs: Fix importing PKCS#12 certificates (with keys)
153         in some cases. Implement GetCertContentType for Cert, Pfx and Pkcs12.
154         Implement ToString methods.
155         * X509ExtensionCollection.cs: Add an internal ctor that can populate
156         the collection from extensions coming from an Mono.Security.X509.
157         X509Certificate. CryptoConfig is used to allow extensibility to the
158         X509Extension class.
159
160 2006-10-08  Sebastien Pouliot  <sebastien@ximian.com>
161
162         * X509Certificate2.cs: Ensure we can load certificates from read-only
163         files (fix bug #79616).
164
165 2006-10-05  Andrew Skiba  <andrews@mainsoft.com>
166
167         * X509CertificateCollection.cs: remove IEnumerable private imple-
168         mentation to match MSDN.
169         
170 2006-09-20  Atsushi Enomoto  <atsushi@ximian.com>
171
172         * X509Certificate2.cs : in .ctor(X509Certificate) call base copy .ctor()
173           as well. Fixed bug #79455.
174
175 2006-09-12  Sebastien Pouliot  <sebastien@ximian.com>
176
177         * PublicKey.cs: Never return the private key in the Key property, even
178         if it was available when creating the public key.
179
180 2006-09-11  Atsushi Enomoto  <atsushi@ximian.com>
181
182         * X509Certificate2.cs : implemented HasPrivateKey. Return null
183           when the corresponding RSA or DSA has no private key.
184
185 2006-09-05  Sebastien Pouliot  <sebastien@ximian.com>
186
187         * X509Certificate2.cs: Call import in ctor to be sure the private key
188         will be decoded. Last fix for #79269.
189
190 2006-08-02  Sebastien Pouliot  <sebastien@ximian.com>
191
192         * X509Certificate2.cs: A unrequired password can be supplied to the 
193         2.0 ctors. Fix bug #79028.
194
195 2006-08-02  Atsushi Enomoto  <atsushi@ximian.com>
196
197         * X509Certificate2.cs : .ctor(string, string) and .ctor(string,
198           SecureString) should call proper base constructor method for each.
199           Implemented IssuerName. Fixed bug #78986.
200
201 2006-03-11  Miguel de Icaza  <miguel@novell.com>
202
203         * X509Chain.cs: Flagged member as internal to avoid unused warning.
204
205         * X500DistinguishedName.cs: Comment out unused names and move
206         temporary unused variables inside the comments that were removed 
207
208 2005-11-24  Sebastien Pouliot  <sebastien@ximian.com>
209
210         * X500DistinguishedName.cs: Added validation (still missing parsing).
211         * X509Certificate2Enumerator.cs: Add missing IEnumerator.* methods.
212
213 2005-11-22  Sebastien Pouliot  <sebastien@ximian.com>
214
215         * PublicKey.cs: Completed implementation for both RSA and DSA public
216         keys.
217
218 2005-11-08  Sebastien Pouliot  <sebastien@ximian.com>
219
220         * OpenFlags.cs: Removed extra [Serializable] (not in 2.0).
221         * StoreLocation.cs: Removed extra [Serializable] (not in 2.0).
222         * StoreName.cs: Removed extra [Serializable] (not in 2.0).
223         * X500DistinguishedNameFlags.cs: Removed extra [Serializable] (!2.0).
224         * X509ChainStatusFlags.cs: Removed extra [Serializable] (not in 2.0).
225         * X509FindType.cs: Removed extra [Serializable] (not in 2.0).
226         * X509IncludeOption.cs: Removed extra [Serializable] (not in 2.0).
227         * X509RevocationFlag.cs: Removed extra [Serializable] (not in 2.0).
228         * X509RevocationMode.cs: Removed extra [Serializable] (not in 2.0).
229         * X509SubjectKeyIdentifierHashAlgorithm.cs: Removed extra 
230         [Serializable] (not in 2.0).
231         * X509VerificationFlags.cs: Removed extra [Serializable] (not in 2.0).
232
233 2005-09-27  Sebastien Pouliot  <sebastien@ximian.com>
234
235         * X509Certificate2Collection.cs: Class is not sealed. Removed Select 
236         methods (moved to a new class in System.Security.dll).
237         * X509Certificate2.cs: Removed Display methods (moved to a new class 
238         in System.Security.dll).
239         * X509SelectionFlag.cs: Removed. This enum is still in System.Security
240         * X509NameType.cs: Added new DnsFromAlternativeName value.
241
242 2005-09-26  Sebastien Pouliot  <sebastien@ximian.com>
243
244         * All classes, except X509CertificateCollection, moved from 
245         System.Security.dll assembly as part of 2.0 RC changes.
246
247 2005-04-27  Sebastien Pouliot  <sebastien@ximian.com>
248
249         * X509BasicConstraintsExtension.cs: Now throw ArgumentNullException in 
250         CopyFrom (fixed in beta2).
251         * X509CertificateEx.cs: Throw a CryptographicException in the RawData
252         property if no certificate is loaded in the instance.
253         * X509EnhancedKeyUsageExtension.cs: Now throw ArgumentNullException in 
254         CopyFrom (fixed in beta2).
255         * X509Extension.cs: Now throw ArgumentNullException in CopyFrom (fixed
256         in beta2).
257         * X509KeyUsageExtension.cs: Now throw ArgumentNullException in 
258         CopyFrom (fixed in beta2).
259         * X509Store.cs: Re-added certificate creation to get the exception.
260         * X509SubjectKeyIdentifierExtension.cs: Throw ArgumentNullException in
261         CopyFrom (fixed in beta2). Fix SubjectKeyIdentifier to return an empty
262         string (not null) after (unsucessful) decoding.
263
264 2005-04-26  Sebastien Pouliot  <sebastien@ximian.com>
265
266         * X509CertificateEx.cs: Used new features from Mono.Security.dll to 
267         load certificates and private keys from PKCS#12.
268
269 2005-04-24  Sebastien Pouliot  <sebastien@ximian.com>
270
271         * X509CertificateEx.cs: Added new constructors and Import methods that
272         accept SecureString for passwords. Added new property HasPrivateKey and
273         Verify method.
274         * X509CertificateExCollection.cs: Added new constructor that accept a
275         single X509Certificate2.
276         * X509EnhancedKeyUsageExtension.cs: Fixed compiler warnings.
277         * X509KeyUsageExtension.cs: Fixed new enum name for CrlSign. 
278         * X509KeyUsageFlags.cs: Fixed values and removed [Serializable].
279         * X509NameType.cs: Fixed values and removed [Serializable].
280         * X509Store.cs: Added new constructor that accept an IntPtr and the 
281         StoreHandle property. Fixed compiler warnings.
282
283 2005-04-23  Sebastien Pouliot  <sebastien@ximian.com>
284
285         * X509CertificateEx.cs, X509CertificateExCollection.cs, 
286         X509CertificateExEnumerator.cs, X509Chain.cs, X509ChainElement.cs,
287         X509ChainPolicy.cs, X509Store.cs: Changed all references of
288         X509CertificateEx to X509Certificate2 to match beta2.
289
290 2005-01-17  Sebastien Pouliot  <sebastien@ximian.com>
291
292         * X509BasicConstraintsExtension.cs: Completed implementation.
293         * X509Chain.cs: Updated to Dec CTP definitions.
294         * X509ChainPolicy.cs: Updated to Dec CTP definitions.
295         * X500DistinguishedNameFlags.cs: Added new ForceUTF8Encoding.
296         * X509EnhancedKeyUsageExtension.cs: New. Complete implementation.
297         * X509Extension.cs: Completed implementation.
298         * X509ExtensionCollection.cs: Updated to Dec CTP definitions.
299         * X509KeyUsageExtension.cs: Completed implementation.
300         * X509RevocationFlag.cs: Minus 1 on each member.
301         * X509SubjectKeyIdentifierExtension.cs: Completed implementation 
302         except for the new constructor accepting a public key.
303         * X509SubjectKeyIdentifierHashAlgorithm.cs: New enum.
304
305 2004-09-03  Tim Coleman <tim@timcoleman.com>
306         * X509KeyUsageExtension.cs: New stub class
307         * X509SubjectKeyIdentifierExtension.cs: New stub class
308         * PublicKey.cs X509BasicConstraintsExtension.cs X509CertificateEx.cs
309         * X509CertificateExCollection.cs X509Extension.cs
310         * X509ExtensionCollection.cs:
311                 Bring these more in line with 2.0
312
313 2004-07-08  Sebastien Pouliot  <sebastien@ximian.com>
314
315         * OpenFlags.cs: Fixed flags values. Added missing attributes.
316         * StoreLocation.cs: Fixed enum values. Added missing [Serializable].
317         * StoreName.cs: Fixed enum values. Added missing [Serializable].
318         * X500DistinguishedName.cs: New. X.501 DN.
319         * X500DistinguishedNameFlags.cs: New. X.501 DN flags.
320         * X509CertificateEx.cs: Updated to Fx 2.0 beta 1. Added MonoTODO.
321         * X509Chain.cs: Added missing Reset method.
322         * X509ChainStatusFlags.cs: Fixed flags values. Added missing attrs.
323         * X509Extension.cs: Fixed API.
324         * X509ExtensionCollection.cs: Fixed API and implemented.
325         * X509FindType.cs: Fixed enum values. Added missing [Serializable].
326         * X509IncludeOption.cs: Added missing [Serializable].
327         * X509KeyUsageFlags.cs: : Fixed flags values. Added missing attrs.
328         * X509NameType.cs: Fixed enum values. Added missing [Serializable].
329         * X509RevocationFlag.cs: Fixed enum values. Added missing [Serializable].
330         * X509RevocationMode.cs: Added missing [Serializable].
331         * X509SelectionFlag.cs: Added missing [Serializable].
332         * X509VerificationFlags.cs: Fixed flags values. Added missing attrs.
333
334 2004-07-07  Sebastien Pouliot  <sebastien@ximian.com>
335
336         * X509Store.cs: Removed old store code (as it has changed a lot in 
337         Mono.Security).
338
339 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
340
341         * X509CertificateCollection.cs: Fixed Contains which works by value
342         (i.e. not by object reference). Fixed Remove for null and unexisting
343         elements.
344
345 2003-12-07  Sebastien Pouliot  <spouliot@videotron.ca>
346
347         * PublicKey.cs: New (1.2). Class that encapsulate an ASN.1 encoded 
348         public key. 
349         * X509BasicConstraintsExtension.cs: New (1.2). X.509 certification 
350         extension for BasicConstraints.
351         * X509CertificateEx.cs: New (1.2). Augmented class to use X.509 
352         certificates.
353         * X509CertificateExCollection.cs: New (1.2). Collection class for 
354         X509CertificateEx.
355         * X509CertificateExEnumerator.cs: New (1.2). Enumerator class for 
356         X509CertificateEx.
357         * X509ChainElement.cs: New (1.2). Information (certificate, status, 
358         informations) for a member of a certificate chain.
359         * X509ChainElementCollection.cs: New (1.2). Collection class for 
360         X509ChainElement.
361         * X509ChainElementEnumerator.cs: New (1.2). Enumerator class for 
362         X509ChainElement.
363         * X509ChainStatus.cs: New (1.2). Chain status (many can apply to a 
364         single X509ChainElement).
365         * X509Extension.cs: New (1.2). Base class for all certificate 
366         extensions.
367         * X509ExtensionCollection.cs: New (1.2). Collection class for 
368         X509Extension.
369         * X509ExtensionEnumerator.cs: New (1.2). Enumerator class for 
370         X509Extension.
371
372 2003-11-08  Sebastien Pouliot  <spouliot@videotron.ca>
373
374         * OpenFlags.cs: New (1.2). Enumeration for certificate stores.
375         * StoreLocation.cs: New (1.2). Enumeration for certificate stores.
376         * StoreName.cs: New (1.2). Enumeration for certificate stores.
377         * X509Chain.cs: New (1.2). Class to build a certificate chain up to a 
378         trusted anchor.
379         * X509ChainElement.cs: New (1.2). Element from the chain (certificate,
380         status and information) - only stubbed for now.
381         * X509ChainElementCollection.cs: New (1.2). Collection class for 
382         X509ChainElement.
383         * X509ChainElementEnumerator.cs: New (1.2). Enumerator class for 
384         X509ChainElement.
385         * X509ChainPolicy.cs: New (1.2). Policy to build a certificate chain.
386         * X509ChainStatusFlags.cs: New (1.2). Enumeration for chain status.
387         * X509FindType.cs: New (1.2). Enumeration for how to find X.509 
388         certificates in stores.
389         * X509IncludeOption.cs: New (1.2). Enumeration for options about which
390         certificate(s) to store within a (pkcs7) structure.
391         * X509KeyUsageFlags.cs: New (1.2). Enumeration for specifying valid 
392         usage for a keypair.
393         * X509NameType.cs: New (1.2). Enumeration for different types of name
394         that can be present inside a certificate.
395         * X509RevocationFlag.cs: New (1.2). Enumeration for specifying which
396         certificates should be verified for revocation in a chain.
397         * X509RevocationMode.cs: New (1.2). Enumeration for specifying how the
398         revocation process should find it's informations.
399         * X509SelectionFlag.cs: New (1.2). Enumeration about how to select 
400         certificates (ui-related).
401         * X509Store.cs: New (1.2). X.509 certificate store access - not complete.
402         * X509VerificationFlags.cs: New (1.2). Enumeration for parameters 
403         affecting the verification of a certificate chain.
404
405 2003-03-01  Sebastien Pouliot  <spouliot@videotron.ca>
406
407         * X509CertificateCollection.cs: Fixed bugs in AddRange
408         (added the collection not the certificates in the collection).
409
410 2003-01-30  Sebastien Pouliot  <spouliot@videotron.ca>
411
412         * X509CertificateCollection.cs: Replaced the use of the private 
413         ArrayList by the protected InnerList (from CollectionBase) so
414         Count property now works.
415
416 2002-10-21  Miguel de Icaza  <miguel@ximian.com>
417
418         * X509CertificateCollection.cs (Add): New method.
419
420 2002-05-12  Lawrence Pit <loz@cable.a2000.nl>
421
422         * X509CertificateCollection.cs: implemented