2003-01-25 Sebastien Pouliot * CryptographicException.cs: Default HResult to CORSEC_E_CRYPTO (0x80131430) as documented. * CryptographicUnexpectedOperationException.cs: Default HResult to CORSEC_E_CRYPTO_UNEX_OPER (0x80131431) as documented. 2003-01-20 Sebastien Pouliot * CipherMode.cs: Added missing [Serializable] to enum. * CspProviderFlags.cs: Added missing [Serializable] to enum. * FromBase64Transform.cs: Added missing [Serializable] to enum. * PaddingMode.cs: Added missing [Serializable] to enum. 2003-01-19 Sebastien Pouliot * CryptoTools.cs: Added internal class BlockProcessor to help implementation of block-based algorithms (like MAC and HMAC). * HMACSHA1.cs: Refactored to remove dependencies on CryptoStream, better constructors and Dispose support. * MACTripleDES.cs: Refactored to reuse new HMACSHA1 stuff, better constructors. 2003-01-18 Sebastien Pouliot * HMACSHA1.cs: Now use KeyBuilder to build the default key. 2003-01-12 Sebastien Pouliot * MACTripleDES.cs: Now working (the problem was with my stream usage which was removed for performance reason). * TripleDES.cs: Fixed key generation (wasn't called and returned null). 2003-01-09 Sebastien Pouliot * RNGCryptoServiceProvider.cs: Changed methods interacting with the runtime as Internal. This will allow to make the class Windows-compatible by doing a switch at runtime. 2003-01-05 Sebastien Pouliot * CryptoAPITransform.cs: Removed all TODO. This class will not be used by Mono. MS uses it with CryptoServiceProvider classes to provide a common ICryptoTransform access to CryptoAPI. 2003-01-03 Sebastien Pouliot * RC2CryptoServiceProvider.cs: Now about 2 time faster by inlining methods and changing to UInt16 (instead of UInt32). 2003-01-02 Sebastien Pouliot * RijndaelManaged.cs: Now 7 (encrypt) to 10 (decrypt) times faster by removing allocation inside intensively called methods, using pre- calculated tables instead of Mult_GF methods and inlining most methods. 2002-12-31 Sebastien Pouliot * AsymmetricAlgorithm.cs: Removed ValidKeySize (method only present in SymmetricAlgorithm). * DSA.cs: Change ZeroizePrivateKey from protected to internal. * DSACryptoServiceProvider.cs: Added some case where we need to check for keypairGenerated. * RSA.cs: Change ZeroizePrivateKey from protected to internal. * RSACryptoServiceProvider.cs: Key were never generated with the default (no parameter) constructor. Now checks for keypairGenerated in methods. * SignatureDescription.cs: Added CreateDeformatter in RSAPKCS1SHA1- SignatureDescription to please corcompare (it just call it's ancestor). 2002-12-30 Sebastien Pouliot * CryptoStream.cs: Implemented core. Not sure about many details - but it run the samples now (#30256). * CryptoStreamMode.cs: Added [Serializable] to enum declaration. * SymmetricAlgorithm.cs: Made some changes required for CryptoStream and to match more closely MS implementation. Also added little optimizations in TransformBlock. 2002-12-27 Sebastien Pouliot * CryptoTools.cs: New. Shared classes for cryptography. Now includes a KeyBuilder to generate symmetric keys and IV. * DES.cs: Modified Key validation. * DESCryptoServiceProvider.cs: Implemented Key and IV using KeyBuilder. * RC2CryptoServiceProvider.cs: Implemented Key and IV using KeyBuilder (and removed TODO). * RijndaelManaged.cs: Implemented Key and IV using KeyBuilder (and removed TODO). * SHA384Managed.cs: Changed code to remove compiler warning. * SHA512Managed.cs: Changed code to remove compiler warning. * SymmetricAlgorithm.cs: Removed TODO on IV. * TripleDESCryptoServiceProvider.cs: Implemented Key and IV using KeyBuilder (and removed TODO). 2002-11-20 Sebastien Pouliot * AsymmetricSignatureDeformatter.cs: Added exception handling in VerifySignature (moved from RSAPKCS1SignatureDeformatter). * AsymmetricSignatureFormatter.cs: Added exception handling in CreateSignature (moved from RSAPKCS1SignatureFormatter). * CryptoAPITransform.cs: Removed "= false" assignation from a private member (because this created an unwanted "ghost" constructor) and modified Dispose declaration. * HashAlgorithm.cs: Removed destructor. Disposing unmanaged ressources is the responsability of each class (not an abstract class). * RSAPKCS1SignatureDeformatter.cs: Removed a VerifySignature method which was present in the base class AsymmetricSignatureDeformatter. * RSAPKCS1SignatureFormatter.cs: Removed a CreateSignature method which was present in the base class AsymmetricSignatureFormatter. * SHA1Managed.cs: Removed sealed from class declaration. Removed destructor and Dispose method as class is fully managed. * ToBase64Transform.cs: Added virtual to property CanReuseTransform. 2002-11-17 Sebastien Pouliot * CryptoConfig.cs: Added full classes name for MapNameToOID. * PKCS1.cs: New. Internal class for the various primitives defined in PKCS#1 v.2.1. * PKCS1MaskGenerationFunction.cs: Modified to use PKCS1.cs. * RSA.cs: Added internal class RSAHandler (which implements IHandler interface for MiniParser) to import RSA keypairs from XML strings. * RSACryptoServiceProvider.cs: Crypto implemented using BigInteger. Key generation is VERY LONG. * RSAOAEPKeyExchangeDeformatter.cs: Completed using PKCS1. Not sure of the results as this is not available in all versions of Windows. * RSAOAEPKeyExchangeFormatter.cs: Completed using PKCS1. Not sure of the results as this is not available in all versions of Windows. * RSAPKCS1KeyExchangeDeformatter.cs: Completed using PKCS1. * RSAPKCS1KeyExchangeFormatter.cs: Completed using PKCS1. * RSAPKCS1SignatureDeformatter.cs: Completed using PKCS1. * RSAPKCS1SignatureFormatter.cs: Completed using PKCS1. 2002-11-17 Sebastien Pouliot * MiniParser.cs: Added explicit cast in order to compile with mcs. 2002-11-16 Sebastien Pouliot * AsymmetricAlgorithm.cs: Added internal class AsymmetricParameters (which implements the IReader interface for MiniParser). Corrected Dispose declaration. * BigInteger.cs: New. Internal class for handling BIG integers for asymmetric crypto (both RSA and DSA). Thanks to Chew Keong TAN ! * CryptoConfig.cs: Added XMLDSIG URLs in CreateFromName. Will dynamically load System.Security.dll, when required, to return instance of those classes. Also CryptoConfig can now create any object (e.g. System.IO.MemoryStream) ! * DSA.cs: Added internal class DSAHandler (which implements IHandler interface for MiniParser) to import DSA keypairs from XML strings. * DSACryptoServiceProvider.cs: Crypto fully implemented using BigInteger. Key generation (group) is VERY long. * MiniParser.cs: New. Minimal XML parser by Sergey Chaban. Used to import keypairs in XML strings. * SignatureDescription.cs: Removed local CreateFromName (to use CryptoConfig - which actually can create anything). Added internal classes DSASignatureDescription and RSAPKCS1SHA1SignatureDescription. 2002-11-15 Sebastien Pouliot * CryptographicUnexpectedOperationException.cs: Forgot it last time! * FromBase64Transform.cs: Added missing virtual to CanReuseTransform. Changed Dispose(). * HashAlgorithm.cs: Changed Dispose(). * MD5CryptoServiceProvider.cs: Added destructor and Dipose(bool). * PasswordDeriveBytes.cs: Changed some declaration from protected to private. * RC2.cs: Added valid keysize check in EffectiveKeySize. * RC2CryptoServiceProvider.cs: Overriden EffectiveKeySize to match corlib declarations. * RSAOAEPKeyExchangeDeformatter.cs: Changed some declaration from protected to private. * RSAOAEPKeyExchangeFormatter.cs: Changed some declaration from protected to private. * RSAPKCS1KeyExchangeDeformatter.cs: Changed some declaration from protected to private. * RSAPKCS1KeyExchangeFormatter.cs: Changed some declaration from protected to private. * RSAPKCS1SignatureDeformatter.cs: Changed some declaration from protected to private. * RSAPKCS1SignatureFormatter.cs: Changed some declaration from protected to private. * SHA1CryptoServiceProvider.cs: Moved SHA1 code to SHA1Internal. SHA1CryptoServiceProvider now use SHA1Internal. Added Dispose and destructor. * SHA1Managed.cs: New. Use SHA1Internal. Same as SHA1CryptoServiceProvider but is required for binary compatibility. * SHA256Managed.cs: Changed some declaration from protected to private. * SHA384Managed.cs: Changed some declaration from protected to private. * SHA512Managed.cs: Changed some declaration from protected to private. * SymmetricAlgorithm.cs: Added Clear(), changed Dispose() and added virtual to Dispose(bool). * ToBase64Transform.cs: Added missing virtual to CanReuseTransform. Changed Dispose(). * TripleDESCryptoServiceProvider.cs: Added missing sealed to class declaration. 2002-11-03 Sebastien Pouliot * CryptoAPITransform.cs: Added missing CanReuseTransform property, Clear method, destructor and IDisposable support. * CryptographicException.cs: Added missing protected constructor. * CryptographicUnexpectedOperationException.cs: Added missing protected constructor. * ICryptoTransform.cs: Added missing CanReuseTransform property. * FromBase64Transform.cs: Added missing CanReuseTransform property, Clear method, destructor and IDisposable support. * SymmetricAlgorithm.cs: Implement IDisposable. * ToBase64Transform.cs: Added missing CanReuseTransform property, Clear method, destructor and IDisposable support. 2002-11-02 Sebastien Pouliot * SignatureDescription.cs: Updated class to match unit test results * X509Certificate.cs: REMOVED! Wrong namespace. An almost complete implementation is now in System.Security.Cryptography.X509Certificates 2002-11-01 Sebastien Pouliot * bouncycastle.txt: Bouncy Castle JCE License. * SHA384Managed.cs: Hash implementation based on BouncyCastle JCE. * SHA512Managed.cs: Hash implementation based on BouncyCastle JCE. 2002-10-30 Sebastien Pouliot * DSASignatureDeformatter.cs: Fully implemented - however it requires a functionnal DSA implementation to work. * DSASignatureFormatter.cs: Fully implemented - however it requires a functionnal DSA implementation to work. 2002-10-25 Sebastien Pouliot * PasswordDeriveBytes.cs: New. PKCS#5 key derivation (PBKDF1) works up to HashSize length (but MS support longer keys) 2002-10-24 Sebastien Pouliot * RSACryptoServiceProvider.cs: New. Implemented most logic expect crypto * RSAOAEPKeyExchangeDeformatter.cs: New. Stub. * RSAOAEPKeyExchangeFormatter.cs: New. Stub. * RSAPKCS1KeyExchangeDeformatter.cs: New. Stub. * RSAPKCS1KeyExchangeFormatter.cs: New. 98% implemented but still require RSA.DecryptValue (not supported in MS .NET Framework) * RSAPKCS1SignatureDeformatter.cs: New. Stub. * RSAPKCS1SignatureFormatter.cs: New. Stub. 2002-10-23 Sebastien Pouliot * SymmetricAlgorithm.cs: Fixed CFB mode (do encryption while decrypting!) * TripleDESCryptoServiceProvider.cs: Ajusted for CFB. 2002-10-22 Sebastien Pouliot * RjindaelManaged.cs: Fixed decryption for 192 and 256 bit block size 2002-10-21 Gonzalo Paniagua Javier * RC2CryptoServiceProvider.cs: fixed end of lines (changed from \r to \n). 2002-10-20 Sebastien Pouliot * SymmetricAlgorithm.cs: Added better Dispose support * DES.cs: Now only contains the abstract DES class. * DESCryptoServiceProvider.cs: Added the DESTransform class (inherited from SymmetricTransform) based the old DESCore and DESTransformBase code * RC2.cs: Fixed EffectiveKeySize == 0 * RC2CryptoServiceProvider.cs: Added the RC2Transform class (inherited from SymmetricTransform) based on the old RC2lImpl code. Unrolled some loops. * RjindaelManaged.cs: Few more optimizations while looking for decrypting bug * TripleDESCryptoServiceProvider.cs: New. Implement TripleDESTransform from DESTransform (non-optimal but working :-). 2002-10-19 Sebastien Pouliot * SymmetricAlgorithm.cs: Added new class SymmetricTransform to avoid duplicating CipherMode (currently ECB, CBC) and PaddingMode functionalities in every crytographic algorithm implementation. * RijndaelManaged.cs: Added the RjindaelTransform class (inherited from SymmetricTransform) based the old RijndaelImpl / RijndaelController code. Fixed encryption for block size 192, 256, there is still a problem decrypting block size 192, 256. Unrolled some loops + littl'optimizations * PKCS1MaskGenerationMethod.cs: Removed Array.Reverse in I2OSP to be compatible with MS implementation (however we are now failing the PKCS#1 test vector) + added some more checks (null, overflow, ...) * AsymmetricAlgorithm.cs: Commented XMLDocument stuff to end the cyclic dependency (corlib->System.Xml->corlib) * RSA.cs: Commented FromXmlString stuff to end the cyclic dependency * DSA.cs: Commented FromXmlString stuff to end the cyclic dependency * RC2.cs: Create using CryptoConfig * TripleDES.cs: Marked class public. Added LegalKeySizes and LegalBlockSizes 2002-10-14 Sebastien Pouliot * MD5.cs: Create using CryptoConfig, set HashSizeValue, removed TODO. * Rijndael.cs: Create using CryptoConfig. Removed TODO. * RSAParameters.cs: Modulus must be serialized. Removed TODO. * SHA256.cs: Create using CryptoConfig, set HashSizeValue, removed TODO. * SHA384.cs: Create using CryptoConfig, set HashSizeValue, removed TODO. * SHA512.cs: Create using CryptoConfig, set HashSizeValue, removed TODO. * FromBase64Transform.cs: Removed ToString() * ToBase64Transform.cs: Removed ToString() * SymmetricAlgorithm.cs: Create using CryptoConfig, set default Mode and Padding, added Clear, Dispose * TripleDES.cs: New. Abstract class. * MaskGenerationMethod.cs: New. Abstract class. * PKCS1MaskGenerationMethod.cs: New. Implement PKCS#1 MGF (currently not compatible with MS implementation - but not sure the bug is mine!). 2002-10-13 Sebastien Pouliot * HashAlgorithm.cs: Added Dispose() to HashAlgorithm because it inherits ICryptoTransform * KeyedHashAlgorithm.cs: New implementation * HMACSHA1.cs: New (include a generic HMACAlgorithm as internal class) * MACTripleDES.cs: New (missing core implementation on generic MACAlgorithm) * CryptoStream.cs: Added limited functionalities to support HMACSHA1 2002-10-12 Sebastien Pouliot * DSA.cs: changed constructor to public from internal (like MS) * HashAlgorithm.cs: Completed ComputeHash methods * SHA1.cs: Added HashSizeValue = 160 2002-10-12 Sebastien Pouliot * ICryptoTransform.cs: Now inherits from IDisposable * RC2CryptoServiceProvider.cs: Added Dispose() to RC2Impl because it inherits ICryptoTransform * CryptoAPITransform.cs: Added Dispose() to CryptoAPITransform... ICryptoTransform * RijndaelManaged.cs: Added Dispose() to RijndaelController...ICryptoTransform * FromBase64Transform.cs: Added Dispose() to FromBase64Transform...ICryptoTransform * ToBase64Transform.cs: Added Dispose() to ToBase64Transform...ICryptoTransform * DESCryptoServiceProvider.cs: Added Dispose() to DESTransformBase...ICryptoTransform 2002-10-11 Duncan Mak * DESCryptoServiceProvider.cs: Removed unnecessary Dispose (). 2002-10-11 Sebastien Pouliot * DES.cs: Create() using CryptoConfig, fix #30256 * DESCryptoServiceProvider.cs: fix #30256 * RandomNumberGenerator.cs: uncomment in Create(rng) for CryptoConfig 2002-10-10 Sebastien Pouliot * AsymmetricAlgorithm.cs: Inherit from IDisposable, common support from XML import * DSA.cs: FromXmlString() keypair import, Create() using CryptoConfig * RSA.cs: FromXmlString() keypair import, Create() using CryptoConfig * DSACryptoServiceProvider.cs: Added Dispose() 2002-10-09 Sebastien Pouliot * CryptoConfig.cs: New implementation 2002-10-05 Andrew Birkett * RC2CryptoServiceProvider.cs: New implementation * RC2.cs: New implementation 2002-09-22 Andrew Birkett * RijndaelManaged.cs: Added faster case for multiplication by 2 in GF(8) 2002-09-22 Andrew Birkett * RijndaelManaged.cs: BlockSize now reports size in bytes. * ICryptoTransform.cs: Updated comments - BlockSizes are in bytes, unlike elsewhere. 2002-09-19 Andrew Birkett * Rijndael.cs: Create() now gives you a RijndaelManaged object * RijndaelManaged.cs: Added dummy GenerateKey until we have a proper RNG. * SymmetricAlgorithm.cs: Updated comments 2002-09-15 Andrew Birkett * RijndaelManaged.cs: Added support for CBC-mode, PKCS7/Zero padding. * SymmetricAlgorithm.cs: IV size must match block size, not key size. Key property now sets KeySizeValue correctly in bits. 2002-09-11 Andrew Birkett * RijndaelManaged.cs: Implemented ECB-mode Rijndael cipher. * Rijndael.cs: Set valid key/block sizes. * SymmetricAlgorithm.cs: Remove throw from ctr so we can instantiate derived classes. Fixes to key sizes so they are measured in bits. * KeySizes.cs: Updated comments to emphasize that sizes are in bits. 2002-06-29 Martin Baulig * AsymmetricAlgorithm.cs: Removed a duplicate semicolon to make it compile. 2002-05-19 Martin Baulig * FromBase64Transform.cs (TransformFinalBlock): The return value of `DoTransform' tells us the number of bytes actually written - if it's smaller than `res', copy it to a smaller array. 2002-02-21 Mark Crichton * RNGCryptoServiceProvider.cs: New file. * RandomNumberGenerator.cs: Constructor is now marked public. 2002-02-13 Dan Lewis * DSACryptoServiceProvider.cs, SHA384Managed.cs, SHA512Managed.cs, Rijndael.cs, RSA.cs, RSAParameters.cs : New files (stubs) Mon Feb 11 13:26:17 CET 2002 Paolo Molaro * X509Certificates: dummy class. 2002-01-10 Duco Fijma * Create (trivial) implementation of RandomNumberGenerator 2002-01-05 Ravi Pratap * CryptoAPITransform.cs, DESCryptoProvider.cs : MonoTODO attribute decoration. * HashAlgorithm.cs, MD5.cs, SHA1.cs, SHA256.cs, SHA384.cs : Ditto. * SHA512.cs, SymmetricAlgorithm.cs, ToBase64Transform.cs, AsymmetricAlgorithm.cs, CryptoStream.cs, DSA.cs, DSASignatureDeformatter.cs, DSASignatureFormatter.cs, SignatureDescription.cs : Ditto. Wed Nov 14 17:04:30 CET 2001 Paolo Molaro * MD5CryptoServiceProvider.cs, SHA1CryptoServiceProvider.cs, SHA256Managed.cs: CLSCompliant updates. 2001-10-11 Thomas Neidhart * CryptoAPITransform.cs: Initial version * CryptoStream.cs: Initial version * CspParameter.cs: Initial version * CspProviderFlags.cs: Initial version * DSA.cs: Initial version * DSAParameters.cs: Initial version * DSASignatureDeformatter.cs: Initial version * DSASignatureFormatter.cs: Initial version * DeriveBytes.cs: Initial version 2001-10-06 Thomas Neidhart * AsymmetricAlgorithm.cs: Inital version * AsymmetricKeyExchangeDeformatter.cs: Initial version * AsymmetricKeyExchangeFormatter.cs: Initial version * AsymmetricSignatureDeformatter.cs: Initial version * AsymmetricSignatureFormatter.cs: Initial version * PaddingMode.cs: Added PaddingMode.None * SignatureDescription.cs: Initial version * CryptographicException.cs: Initial version * CryptographicUnknownOperationException.cs: Initial version * SymmetricAlgorithm.cs: Implemented CreateDecryptor, CreateEncryptor and Create() methods. 2001-08-20 Sergey Chaban * DES.cs encryption core is about 30% faster than previous version. * DESCryptoServiceProvider.cs added PKCS-5 padding. 2001-08-09 Sergey Chaban * ToBase64Transform.cs: Base64Table now supports both encoding and decoding tables. As a result Table was renamed to EncodeTable and DecodeTable was added. * FromBase64Transform.cs: Initial check-in. * DES.cs: Initial check-in. * DESCryptoServiceProvider.cs: Initial check-in. 2001-08-01 Matthew S. Ford * CipherMode.cs: Initial version. * CryptoStreamMode.cs: Initial version. * HashAlgorithm.cs: Initial version. * ICryptoTransform.cs: Initial version. * KeySizes.cs: Initial version. * MD5.cs: Initial version. * MD5CryptoServiceProvider.cs: Initial version. * PaddingMode.cs: Initial version. * SHA1.cs: Initial version. * SHA1CryptoServiceProvider.cs: Initial version. * SHA256.cs: Initial version. * SHA256Managed.cs: Initial version. * SHA384.cs: Initial version. * SHA512.cs: Initial version.