2011-10-18  Sebastien Pouliot  <sebastien@xamarin.com>

	Ensure private key flow from the mono store into the
	X509Certificate2 instance. Patch from bug #1201

2011-08-17  Miguel de Icaza  <miguel@gnome.org>

	updated copyrights

2011-08-12  Sebastien Pouliot  <sebastien@xamarin.com>

	Use 'as' for casting certificate extensions since we already deal
	with null and malformed extensions will throw, hard to debug, ICE
	when we just want to ignore them

2011-02-11  Sebastien Pouliot  <sebastien@ximian.com>

	Continue X509Chain processing even if the local machine directory
	does not exists

2010-10-05  Gonzalo Paniagua Javier  <gonzalo.mono@gmail.com>

	X509Chain always uses the LM store

	X509Chain will now add the LM store certificates always, even when
	the CU store is selected.

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
