2008-08-07  Sebastien Pouliot  <sebastien@ximian.com>

	* SymmetricTransform.cs: Make this (more) usable with SL2 limited
	crypto support.

2008-08-05  Sebastien Pouliot  <sebastien@ximian.com>

	* CryptoTools.cs: Make this usable with Silverlight 2.0 (NET_2_1)

2008-04-21  Sebastien Pouliot  <sebastien@ximian.com>

	* CryptoConvert.cs: Fix HMAC to respect start index inside an array.
	Patch by Kazuki Oikawa.

2008-03-13  Sebastien Pouliot  <sebastien@ximian.com>

	* CryptoConvert.cs: Re-order exception handling to report the most
	precise error to caller. Apply RSA extra check to DSA.
	* RSAManaged.cs: Test imported parameters to ensure the public and 
	private parts of the keypair match together.

2008-03-04  Sebastien Pouliot  <sebastien@ximian.com>

	* SymmetricTransform.cs: Fix ANSIX923 padding check (#366623) to be
	just like PKCS7 (but comparing to 0).

2008-02-03  Sebastien Pouliot  <sebastien@ximian.com>

	* DSAManaged.cs: Replace "" (found by Gendarme) with more useful text.
	* RSAManaged.cs: Replace "" (found by Gendarme) with more useful text.

2008-01-10  Sebastien Pouliot  <sebastien@ximian.com>

	* PKCS1.cs: Add a new method that optionally checks for badly 
	padding, technically invalid, PKCS#1 block. This is required to
	support timestamping verification for Authenticode (since the 
	main timestamping service does this). Fix for #350958

2007-11-18  Sebastien Pouliot  <sebastien@ximian.com>

	* RSAManaged.cs: Fix the rare case where the inverse of q modulo p 
	can result in bigint one byte shorter than expected, which could 
	mess up the export/import of the key.

2007-05-08  Sebastien Pouliot  <sebastien@ximian.com>

	* CryptoConvert.cs: Sync with Mono.Security version - mostly the patch
	from Randolph Chung to add DSA CAPI BLOB support.

2007-05-08  Randolph Chung  <tausq@debian.org>

	* DSAManaged.cs: Do not reject the input if only Y is null.
	Fixes #81558. [small edits from Sebastien]

2007-03-22  Sebastien Pouliot  <sebastien@ximian.com>

	* SymmetricTransform.cs: Before 2.0 an IndexOutOfRangeException was 
	thrown (for all unmanaged transforms) in case of an overflow.

2007-03-05  Sebastien Pouliot  <sebastien@ximian.com>

	* SymmetricTransform.cs: Fix KeepLastBlock to be true for decryption 
	with no padding or zero padding. Part of the fix for #81008.

2007-01-08  Sebastien Pouliot  <sebastien@ximian.com>

	* SymmetricTransform.cs: Fix #80439 again. This time we have tests for
	all ciphers, modes and padding.

2007-01-04  Sebastien Pouliot  <sebastien@ximian.com>

	* SymmetricTransform.cs: Fix previous fix (for #80439) as we were now
	too permissive.

2007-01-03  Sebastien Pouliot  <sebastien@ximian.com>

	* SymmetricTransform.cs: Reduce inputCount if larger than the output
	data can hold. Fix bug #80439.

2006-12-11  Sebastien Pouliot  <sebastien@ximian.com>

	* PKCS8.cs: Synchronize source with Mono.Security.dll

2006-09-27  Sebastien Pouliot  <sebastien@ximian.com>

	* RSAManaged.cs: Ensure that the results of Encrypt and Decrypt will
	always be the same length as the key. If smaller then we left pad the
	result with 0x00 (same integer, correct length for everyone). Fix bug
	#79502 where an LDAP/SSL server didn't like the missing byte.

2006-09-05  Sebastien Pouliot  <sebastien@ximian.com>

	* RSAManaged.cs: Fix a NRE when decrypting without a private key 
	(#79269). We now throw a CryptographicException with an appropriate
	text message.

2006-06-15  Sebastien Pouliot  <sebastien@ximian.com>

	* CryptoTools.cs: Fix offset in block processor. This fix the HMAC
	algorithms when large buffer where used (with multiple calls to
	TransformBlock).

2005-11-23  Sebastien Pouliot  <sebastien@ximian.com>

	* SymmetricTransform.cs: Virtualized some methods (like Dispose). Fix
	bug #76801.

2005-11-22  Sebastien Pouliot  <sebastien@ximian.com>

	* DSAManaged.cs: Don't export J if it wasn't imported (i.e. it was 
	calculated from the other parameters).

2005-10-21  Sebastien Pouliot  <sebastien@ximian.com>

	* SymmetricTransform.cs: Clone IV so it cannot be changed once the 
	transform starts. Generate a new IV if null is specified (not really
	useful but compatible with MS behaviour). Added a check for IV length
	on 2.0.

2005-05-26  Ben Maurer  <bmaurer@ximian.com>

	* KeyPairPersistence.cs: Lock *before* checking if things are null
	to prevent race conditions. Also, do not lock on typeof object.

2005-05-09  Sebastien Pouliot  <sebastien@ximian.com>

	* KeyPairPersistence.cs: Use PlatformID.Unix under NET_2_0. 

2005-04-27  Sebastien Pouliot  <sebastien@ximian.com>

	* PKCS8.cs: New. Copied from Mono.Security.dll to allow support of
	PKCS#12 files in X509Certificate for 2.0.

2005-04-18  Sebastien Pouliot  <sebastien@ximian.com>

	* SymmetricTransform.cs: Fixed a division by zero if someone changes 
	the feedback value to 0.

2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>

	* SymmetricTransform.cs: Fixed a padding bug affecting that can	occurs
	when no padding is used.

2005-01-11  Sebastien Pouliot  <sebastien@ximian.com>

	* DSAManaged.cs: PublicOnly now reports false when a key hasn't yet 
	been generated.
	* RSAManaged.cs: PublicOnly now reports false when a key hasn't yet 
	been generated.

2005-01-10  Sebastien Pouliot  <sebastien@ximian.com>

	* MACAlgorithm.cs: Added support for different padding modes (required
	in 2.0).
	* SymmetricTransform.cs: Added support for ANSI X9.23 padding and
	ISO 10126 padding modes (applies to all symmetric block ciphers).

2004-12-22  Sebastien Pouliot  <sebastien@ximian.com>

	* KeyPairPersistence.cs: Commented imperative asserts until it is 
	supported by the runtime.

2004-12-06  Sebastien Pouliot  <sebastien@ximian.com>

	* RSAManaged.cs: Implement key blinding for RSA decryption with, or
	without, using CRT.

2004-11-23  Sebastien Pouliot  <sebastien@ximian.com>

	* PKCS1.cs: Fix PKCS#1 v1.5 decryption when the ciphertext isn't 
	exactly the same of the public key (which happens sometimes on Fx 1.1
	probably because it doesn't do the last I2OSP operation to left pad
	the resulting big integer with zeros).

2004-10-28  Sebastien Pouliot  <sebastien@ximian.com>

	* KeyPairPersistence.cs: Added localization for exceptions messages.
	Also added more details (type and path) when an exception is thrown.

2004-09-29  Sebastien Pouliot  <sebastien@ximian.com>

	* RSAManaged.cs: KeySize is always a multiple of 8 bits (promotion to
	a bigger size if required) to match MS implementation (and other 
	issues like SSL).

2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>

	* CryptoConvert.cs: Fixed warning (l4) for unused variables.
	* KeyPairPersistence.cs: Fixed warning (l4) for unused variable.
	* PKCS1.cs: Added empty {} to fix warning about possible empty stmnt.

2004-07-07  Sebastien Pouliot  <sebastien@ximian.com>

	* MACAlgorithm.cs: Removed the hardcoded PaddingMode.Zeros as this is 
	now selectable in Fx 2.0.
	* SymmetricTransform.cs: Throw CryptographicException when CipherMode
	CTS or OFB is being used (to match MS implementation).

2004-06-23  Sebastien Pouliot  <sebastien@ximian.com>

	* SymmetricTransform.cs: Reduce by one the number of block when 
	decrypting. This operation was in CryptoStream before but is only
	required for decryption (which CryptoStream can't know). 
	Fix bug #60573.

2004-05-27  Sebastien Pouliot  <sebastien@ximian.com>

	* SymmetricTransform.cs: Fixed possible integer overflow. Added 
	missing exception handling in TransformBlock and TransformFinalBlock.

2004-05-01  Sebastien Pouliot  <sebastien@ximian.com>

	* CryptoConvert.cs: Synched with Mono.Security.dll. Fix bug #57941 
	(truncated key pair).
	* RSAManaged.cs: Synched with Mono.Security.dll. Fix bug #57941 
	(truncated key pair).

2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>

	* CryptoConvert.cs: In sync with Mono.Security.dll version.
	* CryptoTools.cs: In sync with Mono.Security.dll version.
	* DSAManaged.cs: Changed delegate to please FxCop.
	* PKCS1.cs: In sync with Mono.Security.dll version.
	* RSAManaged.cs: In sync with Mono.Security.dll version.
	* SymmetricTransform.cs: Fixed a bug when offset > 0 in destination
	buffer. Changed Array.Copy to Buffer.BlockCopy.

2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>

	* KeyPairPersistence.cs: Completed key pair protection for both
	Linux and Windows (protection done by runtime).

2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>

	* PKCS1.cs: Use BitConverterLE

2004-04-06  Bernie Solomon  <bernard@ugsolutions.com>

	* CryptoConvert.cs: Add private methods to always
	handle data as little endian (GetBytesLE, ToInt32LE, ToUInt32LE).

2004-03-23  Sebastien Pouliot  <sebastien@ximian.com>

	* CryptoConvert.cs: Added support for public keys preceded by an 
	header like the one generated by "sn -e".

2004-03-23  Sebastien Pouliot  <sebastien@ximian.com>

	* CryptoConvert.cs: Added exception for null and bad parameters.
	* RSAManaged.cs: CryptographicException thrown when trying to export
	the private key when only the public key is present (CRT aware).

2004-03-22  Sebastien Pouliot  <sebastien@ximian.com>

	* CryptoConvert.cs: Added new methods to convert [From|To]Hex. Added
	new version of FromCapiPublicKeyBlob with an integer offset.

2004-02-06  Sebastien Pouliot  <sebastien@ximian.com>

	* DSAManaged.cs: Added an event after key generation (so that
	DSACryptoServiceProvider can persist the keypair if required). Added
	PublicOnly property (like 1.2) so we do not have to catch an exception
	to know if a private key is present or not. Added a Random property so
	we do not always have to create a RNG instance (not always required).
	* RSAManaged.cs: Added an event after key generation (so that
	DSACryptoServiceProvider can persist the keypair if required). Added
	PublicOnly property (like 1.2) so we do not have to catch an exception
	to know if a private key is present or not.
	* SymmetricTransform.cs: This class was split from S.S.C.
	SymmetricAlgorithm.cs so it could be reused in Mono.Security 
	assembly for other symmetric algorithms transforms.

2004-02-05  Sebastien Pouliot  <sebastien@ximian.com>

	* KeyPairPersistence.cs: New. Class to persist keypairs in an XML
	format to mimic the CryptoAPI key containers.

2004-01-12  Sebastien Pouliot  <spouliot@videotron.ca>

	* CryptoConvert.cs: RSA doesn't start with a Q - at least that what
	a strongname told me. Sorry Ron :(

2003-12-15  Sebastien Pouliot  <spouliot@videotron.ca>

	* MACAlgorithm.cs: Fixed difference between 1.0 and 1.1 framework. 
	The 1.0 framework is adding an additional  padding block (empty) 
	to MAC when MACing an exact multiple of the TripleDES block size.
	* PKCS1.cs: Fixed a typo which prevented "lame" (without OID) 
	signature verification.

2003-10-30  Sebastien Pouliot  <spouliot@videotron.ca>

	* CryptoConvert.cs: Fixed strongname generation for small exponents 
	(like 17). Part of the fixed for bug #50341.

2003-10-17  Sebastien Pouliot  <spouliot@videotron.ca>

	* CryptoConvert.cs: Added from Mono.Security to support StrongNames.

2003-07-05  Sebastien Pouliot  <spouliot@videotron.ca>

	* DSAManaged.cs: Fixed bugs that appeared with the new unit tests.
	* RSAManaged.cs: Fixed bugs that appeared with the new unit tests.

2003-07-02  Zoltan Varga  <vargaz@freemail.hu>

	* PKCS1.cs DSAManaged.cs: Changed strange characters in comments to 
	human-readable ones, since they break XML export in monocov.

2003-06-15  Sebastien Pouliot <spouliot@motus.com>

	* RSAManaged.cs: Now includes CRT (Chinese Remainder Theorem) 
	optimization when using the private key (DecryptValue). This
	cut more than 5 seconds of nunit on my system (out of 14 sec
	for complete asymmetric tests). Thanks to Ben Maurer for help!

2003-06-11  Sebastien Pouliot <spouliot@motus.com>

	* DSAManaged.cs: Refactored from DSACryptoServiceProvider.cs. Cannot
	be reused outside [ms]corlib because DSA constructor is internal :-(

	* PKCS1.cs: Now support any hash algorithm when encoding PKCS 1.5
	(i.e. not limited to pre-calculated values for known hashes). Some
	other API changes to ease the use of other hash algorithms.

	* RSAManaged.cs: Refactored from RSACryptoServiceProvider.cs. This 
	class is required for custom PKCS#1 padding in SSL (which is not 
	possible using RSACryptoServiceProvider).

2003-05-12  Sebastien Pouliot  <spouliot@videotron.ca>

	* PKCS1.cs: Corrected I2OSP to match PKCS#1 v.2.1 test vector
	and fix the OAEP incompatibility issue.

2003-04-01  Sebastien Pouliot  <spouliot@videotron.ca>

	* PKCS1.cs: Corrected fix (partially) for the lame PKCS1 v1.5
	signatures done without specifying an OID.
	
2003-03-01  Sebastien Pouliot  <spouliot@videotron.ca>

	* PKCS1.cs: Fix for some (lame) PKCS1 v1.5 signatures done
	without specifying an OID.

2003-02-08  Sebastien Pouliot  <spouliot@videotron.ca>

	* CryptoTools.cs: Renamed namespace to match new location.
	* PKCS1.cs: Renamed namespace to match new location.
	* HMACAlgorithm.cs: New. Generic class to implement HMAC
	using any hash algorithm (was in S.S.C.HMACSHA1.cs).
	* MACAlgorithm.cs: New. Generic class to implement MAC
	using any symmetric algorithm (was in S.S.C.MACTripleDES.cs).

