2004-02-09 Sebastien Pouliot <sebastien@ximian.com>
[mono.git] / mcs / class / corlib / System.Security.Cryptography / ChangeLog
1 2004-02-09  Sebastien Pouliot  <sebastien@ximian.com>
2
3         * DSACryptoServiceProvider.cs: Fixed support for key pair persistence.
4         It now requires (like MS) to call Clear to delete an existing 
5         container. PersistKeyInCsp default value also changes if a 
6         CspParameters is supplied (or not) to the constructor.
7         * RSACryptoServiceProvider.cs: Same fixes as DSA.
8
9 2004-02-08  Sebastien Pouliot  <sebastien@ximian.com>
10
11         * HashAlgorithm.cs: Changed the ComputeHash(Stream) method to (a) not
12         allocate the whole stream memory (big memory saver as suggested by
13         Peter Williams in bugzilla entry #54022) and (b) to never use Stream.
14         Length and Stream.Position because they aren't implemented for every
15         stream class (similar issue to the CryptoStream patch).
16         * MD5CryptoServiceProvider.cs: Moved a buffer allocation from 
17         ProcessBlock to constructor to reduce memory allocation. Optimization
18         suggested by Peter Williams in bugzilla entry #54024.
19
20 2004-02-06  Sebastien Pouliot  <sebastien@ximian.com>
21
22         * DSACryptoServiceProvider.cs: Added keypair persistence support.
23         Corrected dispose so object cannot be disposed multiple time. Added
24         PublicOnly property (as internal before 1.2, public after).
25         * RSACryptoServiceProvider.cs: Added keypair persistence support.
26         Corrected dispose so object cannot be disposed multiple time. Added
27         PublicOnly property (as internal before 1.2, public after).
28         * SymmetricAlgorithm.cs: Removed class SymmetricTransform from file
29         and moved it to Mono.Security.Cryptography namespace. The transform
30         class will also be included in Mono.Security assembly.
31
32 2004-02-06  David Sheldon <dave-mono@earth.li>
33
34   * FromBase64Transform.cs: Improved code layout to match coding style, 
35    and removed the Byte comparison with -1.
36
37 2004-02-04  Sebastien Pouliot  <sebastien@ximian.com>
38
39         * CryptoStream.cs: New implementation - should fix all known issues
40         with the class (Read/WriteByte, reading by non-multiple of the
41         block size, using Stream.Length and Stream.Position ...).
42         * SymmetricAlgorithm.cs: Return an empty array when there's nothing
43         to return (required for CryptoStream to work).
44
45 2004-01-31  David Sheldon      <dave-mono@earth.li>
46
47         * FromBase64Transform.cs: Removed needless catch and rethrow.
48
49 2004-01-31  David Sheldon      <dave-mono@earth.li>
50
51         * FromBase64Transform.cs: Fixes to what happens if a character in the
52         input stream is not in the lookup table. IndexOutOfRangeException was 
53         wrong.
54
55 2003-12-15  Sebastien Pouliot  <spouliot@videotron.ca>
56
57         * CryptoConfig.cs: Now use internal Environment.GetMachineConfigPath()
58         to find machine.config. Initialization removed from static constructor
59         to speed up 98% of software that do not requires it.
60         * SymmetricAlgorithm.cs: Fixed padding for None and Zeros modes. Unit
61         tests for padding modes are now in PaddingModeTest.cs.
62
63 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
64
65         * HMAC.cs: Fix compilation warnings.
66
67 2003-12-10  Mark Crichton  <crichton@gimp.org>
68
69         * RNGCryptoServiceProvider.cs: Removed icall to GetNonZeroBytes. Now
70         done with managed code.
71
72 2003-11-13  Sebastien Pouliot  <spouliot@videotron.ca>
73
74         * ProtectedData.cs: Added exceptions - core is still TODO.
75         * ProtectedMemory.cs: Added exceptions - core is still TODO.
76
77 2003-11-11  Sebastien Pouliot  <spouliot@videotron.ca>
78
79         * Rfc2898DeriveBytes.cs: Now handle resets and keys longer than 160 
80         bits (HMACSHA1 block size). Removed TODO.
81         * SymmetricAlgorithm.cs: Fixed decryption when inputOffset > 0.
82         [#50826].
83
84 2003-11-10  Sebastien Pouliot  <spouliot@videotron.ca>
85
86         * Rfc2898DeriveBytes.cs: Implementation for PKCS5 PBKDF2. It works
87         except for the Reset() part - which implies some kind of Resume.
88
89 2003-11-09  Sebastien Pouliot  <spouliot@videotron.ca>
90
91         * CryptoConfig.cs: Updated for RIPEMD160 and HMAC.
92         * CspKeyContainerInfo.cs: New (1.2). Information about CSP based key
93         containers.
94         * DataProtectionScope.cs: New (1.2). Enumeration for ProtectedData.
95         * HMAC.cs: New (1.2). Base class for all HMAC. Code is mostly copied 
96         from internal Mono.Security.Cryptography.HMACAlgorith.cs.
97         * HMACMD5.cs: New (1.2). HMAC implementation using MD5.
98         * HMACRIPEMD160.cs: New (1.2). HMAC implementation using RIPEMD160.
99         * HMACSHA1.cs: Modified to derive from HMAC for .NET 1.2.
100         * HMACSHA256.cs: New (1.2). HMAC implementation using SHA256.
101         * HMACSHA384.cs: New (1.2). HMAC implementation using SHA384.
102         * HMACSHA512.cs: New (1.2). HMAC implementation using SHA512.
103         * ICspAsymmetricAlgorithm.cs: New (1.2). Interface for CSP based 
104         asymmetric algorithm.
105         * KeyNumber.cs: New (1.2). Enumeration for CspKeyContainerInfo.
106         * MemoryProtectionScope.cs: New (1.2). Enumeration for ProtectedMemory.
107         * PaddingMode.cs: Added two new padding modes to enumeration (for 1.2).
108         * ProtectedData.cs: New (1.2). ProtectedData without protection (TODO).
109         * ProtectedMemory.cs: New (1.2). Stub for ProtectedMemory.
110         * Rfc2898DeriveBytes.cs: New (1.2). Stub for PKCS5 PBKDF2.
111
112 2003-11-08  Sebastien Pouliot  <spouliot@videotron.ca>
113
114         * RIPEMD160.cs: New (1.2). Abstract class for RIPEMD160 hash from 
115         Pieter Philippaerts (Pieter@mentalis.org)
116         * RIPEMD160Managed.cs: New (1.2). Implementation of the RIPEMD160 hash
117         algorithm from Pieter Philippaerts (Pieter@mentalis.org)
118
119 2003-10-07  Sebastien Pouliot  <spouliot@videotron.ca>
120
121         * CryptoStream.cs: Commented CanTransformMultipleBlocks
122         optimization - it simply doesn't work :(
123
124 2003-10-04  Sebastien Pouliot  <spouliot@videotron.ca>
125
126         * CryptoStream.cs: Fixed bug 49323. The CanTransformMultipleBlocks
127         optimization in Read has been fixed for partial blocks.
128
129 2003-09-11  Lluis Sanchez Gual  <lluis@ximian.com>
130
131         * CryptoStream.cs: Added [In,Out] attributes to Read method.
132
133 2003-08-24  Sebastien Pouliot  <spouliot@videotron.ca>
134
135         * SymmetricAlgorithm.cs: Fixed IV length exception for stream ciphers
136         (e.g. RC4) which don't uses IV. This needs more tests for small IV...
137
138 2003-08-09  Sebastien Pouliot  <spouliot@videotron.ca>
139
140         * SymmetricAlgorithm.cs: Re-introduced Lluis patch for PaddingMode.None 
141         and PaddingMode.Zeros (not PaddingMode.PKCS7).
142
143 2003-08-05  Sebastien Pouliot  <spouliot@videotron.ca>
144
145         * CryptoStream.cs: Closing bug #40689. The Write method was re-written.
146         * SymmetricAlgorithm.cs: Removed Lluis previous patch (it fails a unit
147         test) and corrected a bug in FinalDecrypt.
148         * RSACryptoServiceProvider.cs: Fixed different exceptions from .NET 1.0
149         and 1.1.
150
151 2003-07-31  Sebastien Pouliot  <spouliot@videotron.ca>
152
153         * CryptoStream.cs: Closing bug #46143. The Read method was re-written.
154
155 2003-07-30  Sebastien Pouliot  <spouliot@videotron.ca>
156
157         * CryptoStream.cs: Fixed bug #46143 (exception) - however we dont 
158         returns the same result as MS. Class needs to be re-written.
159
160 2003-07-09  Lluis Sanchez Gual  <lluis@ximian.com>
161
162         * SymmetricAlgorithm.cs: Fixed FinalEncrypt. Return empty array if inputCount is 0.
163
164 2003-07-05  Sebastien Pouliot  <spouliot@videotron.ca>
165
166         * AsymmetricAlgorithm.cs: Removed AsymmetricParameters (IReader) class. 
167         Now uses the new Mono.Xml.SecurityParser (xml -> SecurityElement)
168         * CryptoConfig.cs: Removed CorlibHandler and CorlibReader classes. Now 
169         uses the new Mono.Xml.SecurityParser (xml -> SecurityElement)
170         * DSA.cs: Removed DSAHandler (IHandler) class. Now uses the new 
171         Mono.Xml.SecurityParser (xml -> SecurityElement)
172         * DSACryptoServiceProvider.cs: Added ObjectDisposedException support
173         and fixed bugs found in new unit tests.
174         * RSA.cs: Removed DSAHandler (IHandler) class. Now uses the new 
175         Mono.Xml.SecurityParser (xml -> SecurityElement)
176         * RSACryptoServiceProvider.cs: Added ObjectDisposedException support
177         and fixed bugs found in new unit tests.
178
179 2003-06-22  Sebastien Pouliot <spouliot@motus.com>
180
181         * DSACryptoServiceProvider.cs: Added UseMachineKeyStore property (1.1).
182         * RSACryptoServiceProvider.cs: Added UseMachineKeyStore property (1.1).
183
184 2003-06-11  Sebastien Pouliot <spouliot@motus.com>
185
186         * DSACryptoServiceProvider.cs: Refactored from orginal by splitting 
187         much core functionalities into DSAManaged. 
188         * RSACryptoServiceProvider.cs: Refactored from orginal by splitting 
189         much core functionalities into RSAManaged. 
190         * RSAPKCS1SignatureDeformatter.cs: Updated to use the new PKCS#1 API.
191         Now works with any hash algorithm (which OID is defined in machine.config)
192         * RSAPKCS1SignatureFormatter.cs: Updated to use the new PKCS#1 API.
193         Now works with any hash algorithm (which OID is defined in machine.config)
194
195 2003-06-09  Sebastien Pouliot <spouliot@motus.com>
196
197         * CryptoConfig.cs: Now support OID in machine.config.
198         * DSACryptoServiceProvider.cs: Changed USE_VERSION_1_0 for NET_1_0.
199         * KeySizes.cs: Changed USE_VERSION_1_0 for NET_1_0.
200         * MD5CryptoServiceProvider.cs: Changed USE_VERSION_1_0 for NET_1_0.
201         * RNGCryptoServiceProvider.cs: Changed USE_VERSION_1_0 for NET_1_0.
202
203 2003-05-12  Sebastien Pouliot  <spouliot@videotron.ca>
204
205         * PKCS1MaskGenerationMethod.cs: Added comment to justify why
206         the class is no more compatible with MS implementation (the bug
207         was preventing OAEP to work properly).
208
209 2003-05-09  Sebastien Pouliot  <spouliot@videotron.ca>
210
211         * DSACryptoServiceProvider.cs: Class is now sealed in v.1.1.
212         * KeySizes.cs: Class is now sealed in v.1.1.
213         * MD5CryptoServiceProvider.cs: Class is now sealed in v.1.1.
214         * RNGCryptoServiceProvider.cs: Class is now sealed in v.1.1.
215
216 2003-04-22  Sebastien Pouliot  <spouliot@videotron.ca>
217
218         * DSACryptoServiceProvider.cs: Changed key generation to use the
219         new BigInteger class (commited for Ben Maurer).
220         * RSACryptoServiceProvider.cs: Changed key generation to use the
221         new BigInteger class (commited for Ben Maurer).
222
223 2003-04-06  Sebastien Pouliot  <spouliot@videotron.ca>
224
225         * AsymmetricAlgorithm.cs: Moved IsLegalKeySize to KeySizes.cs.
226         * DSACryptoServiceProvider.cs: Fix bug where key generation always
227         resulted in 1024 bits keypair.
228         * KeySizes.cs: Added internal IsLegalKeySize and IsLegal to avoid
229         duplication in both AsymmetricAlgorithm and SymmetricAlgorithm.
230         * RC2.cs: Modified to use IsLegalKeySize from KeySizes.cs.
231         * RSACryptoServiceProvider.cs: Fix bug where key generation always
232         resulted in 1024 bits keypair. Should fix unit test failure under
233         Linux.
234         * SymmetricAlgorithm.cs: Moved IsLegalKeySize to KeySizes.cs.
235
236 2003-04-06  Sebastien Pouliot  <spouliot@videotron.ca>
237
238         * CryptoStream.cs: Partial fix for bug #40689 (workaround). Does not 
239         throw a NotSupportedException on closing a CryptoStream in read mode
240         (like MS does but unlike MS documents).
241
242 2003-03-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
243
244         * CryptoStream.cs: fixed the previous fix. MS throws a NotSupportedExc
245         when FlushFinalBlock is called twice. I've moved a few lines from Close
246         to FlushFinalBlock and added the exception check.
247
248 2003-03-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
249
250         * CryptoStream.cs: don't Close the underlying stream in FlushFinalBlock.
251         Fixes bug #40394.
252
253 2003-03-03  Sebastien Pouliot  <spouliot@videotron.ca>
254
255         * RSACryptoServiceProvider.cs: Delay keypair generation event when 
256         keysize is a constructor parameter (major speed improvment when
257         importing keys). Removed NotSupportedException when CspParameter is
258         used in constructor (required for forthcoming security tools).
259
260 2003-02-08  Sebastien Pouliot  <spouliot@videotron.ca>
261
262         * Changes to refer Mono.Math and Mono.Security.Cryptography
263         * Changes to refer Mono.Xml
264
265 2003-02-04  Sebastien Pouliot  <spouliot@videotron.ca>
266
267         * CryptoConfig.cs: Added initital support for "machine.config" 
268         (limited to algorithms, not OIDs). Modified CreateFromName to use
269         the fully qualified class names (and removed xmldsig hack). Added
270         algorithm names documented in book ".NET Framework Security".
271
272 2003-02-03  Sebastien Pouliot  <spouliot@videotron.ca>
273
274         * PasswordDeriveBytes.cs: Finally got the derivation right. The
275         class can now derive keys up to 1000 * HashSize (same limit as MS).
276         * RSAPKCS1SignatureDeformatter.cs: No need to create the hash object
277         in this class - the OID is enough.
278
279 2003-02-01  Sebastien Pouliot  <spouliot@videotron.ca>
280
281         * AsymmetricSignatureFormatter.cs: Call abstract SetHashAlgorithm
282         when CreateSignature(hash) is called.
283         * CryptoStream.cs: Fixed some issues in constructor.
284         * DSACryptoServiceProvider.cs: Fixed a bug (1 chance in 256) that
285         a signature could be less than 40 bytes (which is invalid).
286
287 2003-01-25  Sebastien Pouliot  <spouliot@videotron.ca>
288
289         * CryptographicException.cs: Default HResult to CORSEC_E_CRYPTO
290         (0x80131430) as documented.
291         * CryptographicUnexpectedOperationException.cs: Default HResult
292         to CORSEC_E_CRYPTO_UNEX_OPER (0x80131431) as documented.
293
294 2003-01-20  Sebastien Pouliot  <spouliot@videotron.ca>
295
296         * CipherMode.cs: Added missing [Serializable] to enum.
297         * CspProviderFlags.cs: Added missing [Serializable] to enum.
298         * FromBase64Transform.cs: Added missing [Serializable] to enum.
299         * PaddingMode.cs: Added missing [Serializable] to enum.
300
301 2003-01-19  Sebastien Pouliot  <spouliot@videotron.ca>
302
303         * CryptoTools.cs: Added internal class BlockProcessor to help
304         implementation of block-based algorithms (like MAC and HMAC).
305         * HMACSHA1.cs: Refactored to remove dependencies on CryptoStream,
306         better constructors and Dispose support.
307         * MACTripleDES.cs: Refactored to reuse new HMACSHA1 stuff, better
308         constructors.
309
310 2003-01-18  Sebastien Pouliot  <spouliot@videotron.ca>
311
312         * HMACSHA1.cs: Now use KeyBuilder to build the default key.
313
314 2003-01-12  Sebastien Pouliot  <spouliot@videotron.ca>
315
316         * MACTripleDES.cs: Now working (the problem was with my stream usage
317         which was removed for performance reason).
318         * TripleDES.cs: Fixed key generation (wasn't called and returned
319         null).
320
321 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
322
323         * RNGCryptoServiceProvider.cs: Changed methods interacting with 
324         the runtime as Internal<MethodName>. This will allow to make the
325         class Windows-compatible by doing a switch at runtime.
326
327 2003-01-05  Sebastien Pouliot  <spouliot@videotron.ca>
328
329         * CryptoAPITransform.cs: Removed all TODO. This class will not be
330         used by Mono. MS uses it with <algo>CryptoServiceProvider classes 
331         to provide a common ICryptoTransform access to CryptoAPI. 
332
333 2003-01-03  Sebastien Pouliot  <spouliot@videotron.ca>
334
335         * RC2CryptoServiceProvider.cs: Now about 2 time faster by inlining 
336         methods and changing to UInt16 (instead of UInt32). 
337
338 2003-01-02  Sebastien Pouliot  <spouliot@videotron.ca>
339
340         * RijndaelManaged.cs: Now 7 (encrypt) to 10 (decrypt) times faster 
341         by removing allocation inside intensively called methods, using pre-
342         calculated tables instead of Mult_GF methods and inlining most methods.
343
344 2002-12-31  Sebastien Pouliot  <spouliot@videotron.ca>
345
346         * AsymmetricAlgorithm.cs: Removed ValidKeySize (method only present
347         in SymmetricAlgorithm).
348         * DSA.cs: Change ZeroizePrivateKey from protected to internal.
349         * DSACryptoServiceProvider.cs: Added some case where we need to check 
350         for keypairGenerated.
351         * RSA.cs: Change ZeroizePrivateKey from protected to internal.
352         * RSACryptoServiceProvider.cs: Key were never generated with the default
353         (no parameter) constructor. Now checks for keypairGenerated in methods.
354         * SignatureDescription.cs: Added CreateDeformatter in RSAPKCS1SHA1-
355         SignatureDescription to please corcompare (it just call it's ancestor).
356
357 2002-12-30  Sebastien Pouliot  <spouliot@videotron.ca>
358
359         * CryptoStream.cs: Implemented core. Not sure about many details - 
360         but it run the samples now (#30256).
361         * CryptoStreamMode.cs: Added [Serializable] to enum declaration.
362         * SymmetricAlgorithm.cs: Made some changes required for CryptoStream 
363         and to match more closely MS implementation. Also added little
364         optimizations in TransformBlock.
365
366 2002-12-27  Sebastien Pouliot  <spouliot@videotron.ca>
367
368         * CryptoTools.cs: New. Shared classes for cryptography. Now
369         includes a KeyBuilder to generate symmetric keys and IV.
370         * DES.cs: Modified Key validation.
371         * DESCryptoServiceProvider.cs: Implemented Key and IV using
372         KeyBuilder.
373         * RC2CryptoServiceProvider.cs: Implemented Key and IV using
374         KeyBuilder (and removed TODO).
375         * RijndaelManaged.cs: Implemented Key and IV using KeyBuilder 
376         (and removed TODO).
377         * SHA384Managed.cs: Changed code to remove compiler warning.
378         * SHA512Managed.cs: Changed code to remove compiler warning.
379         * SymmetricAlgorithm.cs: Removed TODO on IV.
380         * TripleDESCryptoServiceProvider.cs: Implemented Key and IV
381         using KeyBuilder (and removed TODO).
382
383 2002-11-20  Sebastien Pouliot  <spouliot@videotron.ca>
384
385         * AsymmetricSignatureDeformatter.cs: Added exception handling in
386         VerifySignature (moved from RSAPKCS1SignatureDeformatter).
387         * AsymmetricSignatureFormatter.cs: Added exception handling in
388         CreateSignature (moved from RSAPKCS1SignatureFormatter).
389         * CryptoAPITransform.cs: Removed "= false" assignation from a private
390         member (because this created an unwanted "ghost" constructor) and 
391         modified Dispose declaration.
392         * HashAlgorithm.cs: Removed destructor. Disposing unmanaged 
393         ressources is the responsability of each class (not an abstract class).
394         * RSAPKCS1SignatureDeformatter.cs: Removed a VerifySignature method
395         which was present in the base class AsymmetricSignatureDeformatter.
396         * RSAPKCS1SignatureFormatter.cs: Removed a CreateSignature method
397         which was present in the base class AsymmetricSignatureFormatter.
398         * SHA1Managed.cs: Removed sealed from class declaration. Removed 
399         destructor and Dispose method as class is fully managed.
400         * ToBase64Transform.cs: Added virtual to property CanReuseTransform.
401
402 2002-11-17  Sebastien Pouliot  <spouliot@videotron.ca>
403
404         * CryptoConfig.cs: Added full classes name for MapNameToOID.
405         * PKCS1.cs: New. Internal class for the various primitives defined
406         in PKCS#1 v.2.1.
407         * PKCS1MaskGenerationFunction.cs: Modified to use PKCS1.cs.
408         * RSA.cs: Added internal class RSAHandler (which implements IHandler
409         interface for MiniParser) to import RSA keypairs from XML strings.
410         * RSACryptoServiceProvider.cs: Crypto implemented using BigInteger. 
411         Key generation is VERY LONG.
412         * RSAOAEPKeyExchangeDeformatter.cs: Completed using PKCS1. Not sure 
413         of the results as this is not available in all versions of Windows.
414         * RSAOAEPKeyExchangeFormatter.cs: Completed using PKCS1. Not sure 
415         of the results as this is not available in all versions of Windows.
416         * RSAPKCS1KeyExchangeDeformatter.cs: Completed using PKCS1.
417         * RSAPKCS1KeyExchangeFormatter.cs: Completed using PKCS1.
418         * RSAPKCS1SignatureDeformatter.cs: Completed using PKCS1.
419         * RSAPKCS1SignatureFormatter.cs: Completed using PKCS1.
420
421 2002-11-17  Sebastien Pouliot  <spouliot@videotron.ca>
422
423         * MiniParser.cs: Added explicit cast in order to compile with mcs.
424
425 2002-11-16  Sebastien Pouliot  <spouliot@videotron.ca>
426
427         * AsymmetricAlgorithm.cs: Added internal class AsymmetricParameters
428         (which implements the IReader interface for MiniParser). Corrected
429         Dispose declaration.
430         * BigInteger.cs: New. Internal class for handling BIG integers for 
431         asymmetric crypto (both RSA and DSA). Thanks to Chew Keong TAN !
432         * CryptoConfig.cs: Added XMLDSIG URLs in CreateFromName.
433         Will dynamically load System.Security.dll, when required,
434         to return instance of those classes. Also CryptoConfig can now
435         create any object (e.g. System.IO.MemoryStream) !
436         * DSA.cs: Added internal class DSAHandler (which implements IHandler
437         interface for MiniParser) to import DSA keypairs from XML strings.
438         * DSACryptoServiceProvider.cs: Crypto fully implemented using 
439         BigInteger. Key generation (group) is VERY long.
440         * MiniParser.cs: New. Minimal XML parser by Sergey Chaban. Used to 
441         import keypairs in XML strings.
442         * SignatureDescription.cs: Removed local CreateFromName (to use
443         CryptoConfig - which actually can create anything). Added internal
444         classes DSASignatureDescription and RSAPKCS1SHA1SignatureDescription.
445
446 2002-11-15  Sebastien Pouliot  <spouliot@videotron.ca>
447
448         * CryptographicUnexpectedOperationException.cs: Forgot it last time!
449         * FromBase64Transform.cs: Added missing virtual to CanReuseTransform.
450         Changed Dispose().
451         * HashAlgorithm.cs: Changed Dispose().
452         * MD5CryptoServiceProvider.cs: Added destructor and Dipose(bool).
453         * PasswordDeriveBytes.cs: Changed some declaration from
454         protected to private.
455         * RC2.cs: Added valid keysize check in EffectiveKeySize.
456         * RC2CryptoServiceProvider.cs: Overriden EffectiveKeySize to match
457         corlib declarations.
458         * RSAOAEPKeyExchangeDeformatter.cs: Changed some declaration from
459         protected to private.
460         * RSAOAEPKeyExchangeFormatter.cs: Changed some declaration from
461         protected to private.
462         * RSAPKCS1KeyExchangeDeformatter.cs: Changed some declaration from
463         protected to private.
464         * RSAPKCS1KeyExchangeFormatter.cs: Changed some declaration from
465         protected to private.
466         * RSAPKCS1SignatureDeformatter.cs: Changed some declaration from
467         protected to private.
468         * RSAPKCS1SignatureFormatter.cs: Changed some declaration from
469         protected to private.
470         * SHA1CryptoServiceProvider.cs: Moved SHA1 code to SHA1Internal.
471         SHA1CryptoServiceProvider now use SHA1Internal. Added Dispose and
472         destructor.
473         * SHA1Managed.cs: New. Use SHA1Internal. Same as 
474         SHA1CryptoServiceProvider but is required for binary compatibility.
475         * SHA256Managed.cs: Changed some declaration from protected to private.
476         * SHA384Managed.cs: Changed some declaration from protected to private.
477         * SHA512Managed.cs: Changed some declaration from protected to private.
478         * SymmetricAlgorithm.cs: Added Clear(), changed Dispose() and added
479         virtual to Dispose(bool).
480         * ToBase64Transform.cs: Added missing virtual to CanReuseTransform.
481         Changed Dispose().
482         * TripleDESCryptoServiceProvider.cs: Added missing sealed to class
483         declaration.
484
485 2002-11-03  Sebastien Pouliot  <spouliot@videotron.ca>
486
487         * CryptoAPITransform.cs: Added missing CanReuseTransform property,
488         Clear method, destructor and IDisposable support.
489         * CryptographicException.cs: Added missing protected constructor.
490         * CryptographicUnexpectedOperationException.cs: Added missing 
491         protected constructor.
492         * ICryptoTransform.cs: Added missing CanReuseTransform property.
493         * FromBase64Transform.cs: Added missing CanReuseTransform property,
494         Clear method, destructor and IDisposable support.
495         * SymmetricAlgorithm.cs: Implement IDisposable.
496         * ToBase64Transform.cs: Added missing CanReuseTransform property,
497         Clear method, destructor and IDisposable support.
498
499 2002-11-02  Sebastien Pouliot  <spouliot@videotron.ca>
500
501         * SignatureDescription.cs: Updated class to match unit test results
502         * X509Certificate.cs: REMOVED! Wrong namespace. An almost complete
503         implementation is now in System.Security.Cryptography.X509Certificates
504
505 2002-11-01  Sebastien Pouliot  <spouliot@videotron.ca>
506
507         * bouncycastle.txt: Bouncy Castle JCE License.
508         * SHA384Managed.cs: Hash implementation based on BouncyCastle JCE.
509         * SHA512Managed.cs: Hash implementation based on BouncyCastle JCE.
510
511 2002-10-30  Sebastien Pouliot  <spouliot@videotron.ca>
512
513         * DSASignatureDeformatter.cs: Fully implemented - however it 
514         requires a functionnal DSA implementation to work.
515         * DSASignatureFormatter.cs: Fully implemented - however it 
516         requires a functionnal DSA implementation to work.
517
518 2002-10-25  Sebastien Pouliot  <spouliot@videotron.ca>
519
520         * PasswordDeriveBytes.cs: New. PKCS#5 key derivation (PBKDF1) works up to
521         HashSize length (but MS support longer keys)
522
523 2002-10-24  Sebastien Pouliot  <spouliot@videotron.ca>
524
525         * RSACryptoServiceProvider.cs: New. Implemented most logic expect crypto 
526         * RSAOAEPKeyExchangeDeformatter.cs: New. Stub.
527         * RSAOAEPKeyExchangeFormatter.cs: New. Stub.
528         * RSAPKCS1KeyExchangeDeformatter.cs: New. Stub.
529         * RSAPKCS1KeyExchangeFormatter.cs: New. 98% implemented but still
530         require RSA.DecryptValue (not supported in MS .NET Framework)
531         * RSAPKCS1SignatureDeformatter.cs: New. Stub.
532         * RSAPKCS1SignatureFormatter.cs: New. Stub.
533
534 2002-10-23  Sebastien Pouliot  <spouliot@videotron.ca>
535
536         * SymmetricAlgorithm.cs: Fixed CFB mode (do encryption while decrypting!)
537         * TripleDESCryptoServiceProvider.cs: Ajusted for CFB.
538
539 2002-10-22  Sebastien Pouliot  <spouliot@videotron.ca>
540
541         * RjindaelManaged.cs: Fixed decryption for 192 and 256 bit block size
542
543 2002-10-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
544
545         * RC2CryptoServiceProvider.cs: fixed end of lines (changed from \r
546         to \n).
547
548 2002-10-20  Sebastien Pouliot  <spouliot@videotron.ca>
549
550         * SymmetricAlgorithm.cs: Added better Dispose support
551         * DES.cs: Now only contains the abstract DES class.
552         * DESCryptoServiceProvider.cs: Added the DESTransform class (inherited
553         from SymmetricTransform) based the old DESCore and DESTransformBase code
554         * RC2.cs: Fixed EffectiveKeySize == 0
555         * RC2CryptoServiceProvider.cs: Added the RC2Transform class (inherited
556         from SymmetricTransform) based on the old RC2lImpl code. Unrolled some loops.
557         * RjindaelManaged.cs: Few more optimizations while looking for decrypting bug
558         * TripleDESCryptoServiceProvider.cs: New. Implement TripleDESTransform from 
559         DESTransform (non-optimal but working :-).
560
561 2002-10-19  Sebastien Pouliot  <spouliot@videotron.ca>
562
563         * SymmetricAlgorithm.cs: Added new class SymmetricTransform to avoid
564         duplicating CipherMode (currently ECB, CBC) and PaddingMode functionalities
565         in every crytographic algorithm implementation.
566         * RijndaelManaged.cs: Added the RjindaelTransform class (inherited
567         from SymmetricTransform) based the old RijndaelImpl / RijndaelController 
568         code. Fixed encryption for block size 192, 256, there is still a problem
569         decrypting block size 192, 256. Unrolled some loops + littl'optimizations
570         * PKCS1MaskGenerationMethod.cs: Removed Array.Reverse in I2OSP to be
571         compatible with MS implementation (however we are now failing the PKCS#1
572         test vector) + added some more checks (null, overflow, ...)
573         * AsymmetricAlgorithm.cs: Commented XMLDocument stuff to end the cyclic
574         dependency (corlib->System.Xml->corlib)
575         * RSA.cs: Commented FromXmlString stuff to end the cyclic dependency
576         * DSA.cs: Commented FromXmlString stuff to end the cyclic dependency
577         * RC2.cs: Create using CryptoConfig
578         * TripleDES.cs: Marked class public. Added LegalKeySizes and LegalBlockSizes
579
580 2002-10-14  Sebastien Pouliot  <spouliot@videotron.ca>
581
582         * MD5.cs: Create using CryptoConfig, set HashSizeValue, removed TODO.
583         * Rijndael.cs: Create using CryptoConfig. Removed TODO.
584         * RSAParameters.cs: Modulus must be serialized. Removed TODO.
585         * SHA256.cs: Create using CryptoConfig, set HashSizeValue, removed TODO.
586         * SHA384.cs: Create using CryptoConfig, set HashSizeValue, removed TODO.
587         * SHA512.cs: Create using CryptoConfig, set HashSizeValue, removed TODO.
588         * FromBase64Transform.cs: Removed ToString()
589         * ToBase64Transform.cs: Removed ToString()
590         * SymmetricAlgorithm.cs: Create using CryptoConfig, set default Mode and 
591         Padding, added Clear, Dispose
592         * TripleDES.cs: New. Abstract class.
593         * MaskGenerationMethod.cs: New. Abstract class.
594         * PKCS1MaskGenerationMethod.cs: New. Implement PKCS#1 MGF (currently not 
595         compatible with MS implementation - but not sure the bug is mine!).
596
597 2002-10-13  Sebastien Pouliot  <spouliot@videotron.ca>
598
599         * HashAlgorithm.cs: Added Dispose() to HashAlgorithm because it 
600         inherits ICryptoTransform
601         * KeyedHashAlgorithm.cs: New implementation
602         * HMACSHA1.cs: New (include a generic HMACAlgorithm as internal class)
603         * MACTripleDES.cs: New (missing core implementation on generic MACAlgorithm)
604         * CryptoStream.cs: Added limited functionalities to support HMACSHA1
605
606 2002-10-12  Sebastien Pouliot  <spouliot@videotron.ca>
607
608         * DSA.cs: changed constructor to public from internal (like MS)
609         * HashAlgorithm.cs: Completed ComputeHash methods
610         * SHA1.cs: Added HashSizeValue = 160
611
612 2002-10-12  Sebastien Pouliot  <spouliot@videotron.ca>
613
614         * ICryptoTransform.cs: Now inherits from IDisposable
615         * RC2CryptoServiceProvider.cs: Added Dispose() to RC2Impl because it inherits ICryptoTransform
616         * CryptoAPITransform.cs: Added Dispose() to CryptoAPITransform... ICryptoTransform
617         * RijndaelManaged.cs: Added Dispose() to RijndaelController...ICryptoTransform
618         * FromBase64Transform.cs: Added Dispose() to FromBase64Transform...ICryptoTransform
619         * ToBase64Transform.cs: Added Dispose() to ToBase64Transform...ICryptoTransform
620         * DESCryptoServiceProvider.cs: Added Dispose() to DESTransformBase...ICryptoTransform
621
622 2002-10-11  Duncan Mak  <duncan@ximian.com>
623
624         * DESCryptoServiceProvider.cs: Removed unnecessary Dispose ().
625
626 2002-10-11  Sebastien Pouliot  <spouliot@videotron.ca>
627
628         * DES.cs: Create() using CryptoConfig, fix #30256
629         * DESCryptoServiceProvider.cs: fix #30256
630         * RandomNumberGenerator.cs: uncomment in Create(rng) for CryptoConfig
631
632 2002-10-10  Sebastien Pouliot  <spouliot@videotron.ca>
633
634         * AsymmetricAlgorithm.cs: Inherit from IDisposable, common support from XML import
635         * DSA.cs: FromXmlString() keypair import, Create() using CryptoConfig
636         * RSA.cs: FromXmlString() keypair import, Create() using CryptoConfig
637         * DSACryptoServiceProvider.cs: Added Dispose()
638
639 2002-10-09  Sebastien Pouliot  <spouliot@videotron.ca>
640
641         * CryptoConfig.cs: New implementation
642
643 2002-10-05  Andrew Birkett  <andy@nobugs.org>
644
645         * RC2CryptoServiceProvider.cs: New implementation
646         * RC2.cs: New implementation
647
648 2002-09-22  Andrew Birkett  <andy@nobugs.org>
649
650         * RijndaelManaged.cs: Added faster case for multiplication by 2 in GF(8)
651         
652 2002-09-22  Andrew Birkett  <andy@nobugs.org>
653
654         * RijndaelManaged.cs: BlockSize now reports size in bytes.
655         * ICryptoTransform.cs: Updated comments - BlockSizes are in bytes, unlike elsewhere.
656
657 2002-09-19  Andrew Birkett  <andy@nobugs.org>
658
659         * Rijndael.cs: Create() now gives you a RijndaelManaged object
660         * RijndaelManaged.cs: Added dummy GenerateKey until we have a proper RNG.
661         * SymmetricAlgorithm.cs: Updated comments
662
663 2002-09-15  Andrew Birkett  <andy@nobugs.org>
664
665         * RijndaelManaged.cs: Added support for CBC-mode, PKCS7/Zero padding.
666         * SymmetricAlgorithm.cs: IV size must match block size, not key size.  
667           Key property now sets KeySizeValue correctly in bits.
668
669 2002-09-11  Andrew Birkett  <andy@nobugs.org>
670
671         * RijndaelManaged.cs: Implemented ECB-mode Rijndael cipher.
672         * Rijndael.cs: Set valid key/block sizes.
673         * SymmetricAlgorithm.cs: Remove throw from ctr so we can instantiate
674           derived classes.  Fixes to key sizes so they are measured in bits.
675         * KeySizes.cs: Updated comments to emphasize that sizes are in bits.
676
677 2002-06-29  Martin Baulig  <martin@gnome.org>
678
679         * AsymmetricAlgorithm.cs: Removed a duplicate semicolon to make it compile.
680
681 2002-05-19  Martin Baulig  <martin@gnome.org>
682
683         * FromBase64Transform.cs (TransformFinalBlock): The return value of
684         `DoTransform' tells us the number of bytes actually written - if it's
685         smaller than `res', copy it to a smaller array.
686
687 2002-02-21  Mark Crichton <crichton@gimp.org>
688
689         * RNGCryptoServiceProvider.cs: New file.
690         * RandomNumberGenerator.cs: Constructor is now marked public.
691
692 2002-02-13  Dan Lewis <dihlewis@yahoo.co.uk>
693
694         * DSACryptoServiceProvider.cs, SHA384Managed.cs, SHA512Managed.cs,
695         Rijndael.cs, RSA.cs, RSAParameters.cs : New files (stubs)
696
697 Mon Feb 11 13:26:17 CET 2002 Paolo Molaro <lupus@ximian.com>
698
699         * X509Certificates: dummy class.
700
701 2002-01-10  Duco Fijma <duco@lorentz.xs4all.nl>
702         * Create (trivial) implementation of RandomNumberGenerator
703
704 2002-01-05  Ravi Pratap  <ravi@ximian.com>
705
706         * CryptoAPITransform.cs, DESCryptoProvider.cs : MonoTODO attribute
707         decoration.
708
709         * HashAlgorithm.cs, MD5.cs, SHA1.cs, SHA256.cs, SHA384.cs : Ditto.
710
711         * SHA512.cs, SymmetricAlgorithm.cs, ToBase64Transform.cs, 
712         AsymmetricAlgorithm.cs, CryptoStream.cs, DSA.cs, DSASignatureDeformatter.cs,
713         DSASignatureFormatter.cs, SignatureDescription.cs : Ditto.
714         
715 Wed Nov 14 17:04:30 CET 2001 Paolo Molaro <lupus@ximian.com>
716
717         * MD5CryptoServiceProvider.cs, SHA1CryptoServiceProvider.cs,
718         SHA256Managed.cs: CLSCompliant updates.
719
720 2001-10-11  Thomas Neidhart <tome@sbox.tugraz.at>
721
722         * CryptoAPITransform.cs: Initial version
723         * CryptoStream.cs: Initial version
724         * CspParameter.cs: Initial version
725         * CspProviderFlags.cs: Initial version
726         * DSA.cs: Initial version
727         * DSAParameters.cs: Initial version
728         * DSASignatureDeformatter.cs: Initial version
729         * DSASignatureFormatter.cs: Initial version
730         * DeriveBytes.cs: Initial version
731
732 2001-10-06  Thomas Neidhart <tome@sbox.tugraz.at>
733
734     * AsymmetricAlgorithm.cs: Inital version
735         * AsymmetricKeyExchangeDeformatter.cs: Initial version
736         * AsymmetricKeyExchangeFormatter.cs: Initial version
737         * AsymmetricSignatureDeformatter.cs: Initial version
738         * AsymmetricSignatureFormatter.cs: Initial version
739         * PaddingMode.cs: Added PaddingMode.None
740         * SignatureDescription.cs: Initial version
741     * CryptographicException.cs: Initial version
742         * CryptographicUnknownOperationException.cs: Initial version
743         * SymmetricAlgorithm.cs: Implemented CreateDecryptor, CreateEncryptor
744           and Create() methods.
745         
746 2001-08-20  Sergey Chaban <serge@wildwestsoftware.com>
747
748         * DES.cs encryption core is about 30% faster than previous version.
749         * DESCryptoServiceProvider.cs added PKCS-5 padding.
750
751 2001-08-09  Sergey Chaban <serge@wildwestsoftware.com>
752
753         * ToBase64Transform.cs: Base64Table now supports both encoding
754           and decoding tables. As a result Table was renamed to EncodeTable
755           and DecodeTable was added.
756         * FromBase64Transform.cs: Initial check-in.
757         * DES.cs: Initial check-in.
758         * DESCryptoServiceProvider.cs: Initial check-in.
759
760 2001-08-01  Matthew S. Ford  <Matthew.S.Ford@Rose-Hulman.Edu>
761
762         * CipherMode.cs: Initial version.
763         * CryptoStreamMode.cs: Initial version.
764         * HashAlgorithm.cs: Initial version.
765         * ICryptoTransform.cs: Initial version.
766         * KeySizes.cs: Initial version.
767         * MD5.cs: Initial version.
768         * MD5CryptoServiceProvider.cs: Initial version.
769         * PaddingMode.cs: Initial version.
770         * SHA1.cs: Initial version.
771         * SHA1CryptoServiceProvider.cs: Initial version.
772         * SHA256.cs: Initial version.
773         * SHA256Managed.cs: Initial version.
774         * SHA384.cs: Initial version.
775         * SHA512.cs: Initial version.