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