2010-07-16  Sebastien Pouliot  <sebastien@ximian.com>

	* MD2Managed.cs:
	* MD4Managed.cs:
		Increment ibStart in HashCore

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

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

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: Sync with corlib. Fix ANSIX923 padding check
	(#366623)

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

	* 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  Randolph Chung  <tausq@debian.org>

	* CryptoConvert.cs: Add DSA blob conversion functions.

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: Normalize the private key X integer, not it's ASN.1
	container, to 20 bytes.

2006-10-04  Sebastien Pouliot  <sebastien@ximian.com>

	* PKCS1.cs: Remove compatibility block where all padding wasn't 
	verified (can't find the original test case for it). Note: the 
	existing implementation wasn't affected by CVE-2006-4339, aka RSA 
	PKCS#1 1.5 signature forgery (but we're stronger without it).

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: Backport NRE fix from mscorlib.dll.

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).

2006-02-28  Sebastien Pouliot  <sebastien@ximian.com>

	* CryptoConvert.cs: Make sure we can import a keypair into our RSA 
	instance (even if the key store isn't available). See bug #77559.
	* PKCS8.cs: Make sure we can import a keypair into our RSA instance
	(even if the key store isn't available). See bug #77559.

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

	* SymmetricTransform.cs: Synched with corlib version (IV behaviour for
	NET_2_0). Virtualized some methods (like Dispose). Fix bug #76801.

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

	* KeyPairPersistence.cs: Use PlatformID.Unix under NET_2_0. 
	* PKCS8.cs: In sync with corlib;

2005-04-18  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* Null.cs: New "null" symmetric encryption for debugging. This class 
	isn't (and shouldn't be) built by default.
	* SymmetricTransform.cs: Fixed a division by zero if someone changes 
	the feedback value to 0.
	* SHA224Managed.cs: Fixed warning about unused private constant.

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

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

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

	* MD2Managed.cs: Removed memory allocation from the transform method.
	* MD4Managed.cs: Moved memoty allocation to constructor (from init).
	* SHA224Managed.cs: Fixed bug #73404 which gaves bad results when the
	digested data is longer than 2^32 bits.

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

	* 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-11-10  Sebastien Pouliot  <sebastien@ximian.com>

	* RC4.cs: Fixed RC4 for compatibility with .NET 2.0. The algorithm is 
	OK but the check for IV, unused for stream ciphers, has changed.

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: In synch with corlib. KeySize is now always a 
	multiple of 8 bits. Fix #66929.

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

	* CryptoConvert.cs: In synch with corlib version. Fixed all level 4 
	compilation warnings.
	* KeyPairPersistence.cs: In synch with corlib version. Fixed all level
	4 compilation warnings.
	* PKCS1.cs: In synch with corlib version. Fixed all level 4 
	compilation warnings.
	* SHA224Managed.cs: Fixed all level 4 compilation warnings.

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

	* SHA224.cs: New. Abstract class for all SHA224 implementations.
	* SHA224Managed.cs: New. Managed implementation of SHA224 (a SHA256
	derivate) as specified in RFC3874 and FIPS 180-2 Change Notice.

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>

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

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

	* PKCS8.cs: Fixed negative Version check.
	* MD2Managed.cs: Added readonly to static array constants.
	* MD4Managed.cs: Removed unrequired memory allocation in MD4Transform.

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

	* CryptoConvert.cs: Added support for truncated, but still valid, RSA
	private key blob. Fix #57941 (couldn't sign with nunit key).
	* RSAManaged.cs: Normalized the size of D when not present. This 
	allows us to output a compatible base64 representation of 1024bits 0.

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

	* SymmetricTransform.cs: Fixed bug when offset > 0 in destination 
	buffer.

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

	* CryptoConvert.cs: FxCop-ized. Sealed class. Use Buffer.BlockCopy.
	* CryptoTools.cs: FxCop-ized. Sealed KeyBuilder class. Delay creation
	of RNG object. Use Buffer.BlockCopy.
	* DiffieHellman.cs: FxCop-ized. Removed public constructor.
	* DiffieHellmanManaged.cs: FxCop-ized. Actualized with changes from
	BigInteger.
	* KeyPairPersistance.cs: FxCop-ized. Updated version for management
	of keypairs.
	* MD2Managed.cs: Use Buffer.BlockCopy instead of Array.Copy.
	* PKCS1.cs: FxCop-ized. Sealed class. Use Buffer.BlockCopy instead of
	Array.Copy. Also includes endian patches from Bernie Solomon.
	* PKCS8.cs: FxCop-ized. Sealed class. 
	* RSAManaged.cs: FxCop-ized. Actualized with changes from BigInteger.
	* SymmetricTransform.cs: Use Buffer.BlockCopy instead of Array.Copy.

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

	* CryptoConvert.cs: Synched with corlib version to get endian fixes 
	from Bernie Solomon.

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-03-10  Sebastien Pouliot  <sebastien@ximian.com>

	* PKCS8.cs: Added EncodeRSA, EncodeDSA and completed GetBytes() so it
	is now possible to encode PKCS8 files (this is required to encode 
	PKCS12 files).

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

	* ARC4Managed.cs: Removed all % 256 (modulo) because typecasting to 
	byte already ensure the result would be correct (as suggested by 
	Technoboy). Now use KeyBuilder to create new keys.

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

	* DHKeyGeneration.cs: New. Enumuration of possible key generation for
	Diffie-Hellman. Contributed by Pieter Philippaerts (mentalis.org).
	* DHParameters.cs: New. Structure to hold the different elements of a
	Diffie-Hellman key. Contributed by Pieter Philippaerts (mentalis.org).
	* DiffieHellman.cs: New. Astract class as base for all Diffie-Hellman
	implementations. Contributed by Pieter Philippaerts (mentalis.org).
	* DiffieHellmanManaged.cs: New. Managed implementation of the Diffie-
	Hellman key agreement algorithm. Contributed by Pieter Philippaerts.

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

	* PKCS1.cs: New. Copied from corlib. Required for RSAManaged.
	* RSAManaged.cs: New. Copied from corlib. Required for TLS - some
	parts (MD5SHA1) cannot work with the default RSACryptoServiceProvider.

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

	* CryptoTools.cs: New. Copied from corlib to offer the sames services
	to symmetric algorithms in Mono.Security assembly.
	* KeyPairPersistance.cs: Provides a similar to CryptoAPI persistence 
	mechanism for keypairs (based on CspParameters).
	* SymmetricTransform.cs: New. Copied from corlib to offer the sames 
	services to symmetric algorithms in Mono.Security assembly.

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-11-27  Sebastien Pouliot  <spouliot@videotron.ca>

	* MD4.cs: New. Asbtract class for all MD4 implementations. WARNING:
	The MD4 algorithm is BROKEN (collisions) and SHOULDN'T be used in 
	NEW designs. However some higher level algorithms (like NTLM) requires 
	MD4 (and may even be secure using it). YOU'RE WARNED!
	* MD4Managed.cs: New. Managed implementation of MD4 (RFC1320).
	* PKCS8.cs: New. Added Private-Key Information Syntax Standard as a 
	building block for PKCS12.

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-06-19  Nick Drochak <ndrochak@gol.com>

	* CryptoConvert.cs: Work around for mcs? bug 45127.

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

	* ARC4Managed.cs: New. Implementation of the Alleged RC4(tm)
	stream cipher in managed code (required for SSL/TLS).
	* CryptoConvert.cs: New. Helper class to help convert between
	Windows crypto structures and .NET crypto classes (required
	for security tools).
	* MD2.cs: New. Abstract class for all MD2 hash implementations.
	* MD2Managed.cs: New. Managed implementation of the MD2 hash
	algorithm (required for old, but still valid, X.509 certificates).
	* RC4.cs: New. Abstract class for all RC4 stream cipher 
	implementations.
