* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / corlib / System.Security.Cryptography / ChangeLog
1 2006-07-01  Sebastien Pouliot  <sebastien@ximian.com>
2
3         * AsymmetricSignatureDeformatter.cs: Set the hash algorithm name from
4         the hash instance. Fix for bug #78744 by Diego Mesa Tabares.
5
6 2006-06-15  Sebastien Pouliot  <sebastien@ximian.com>
7
8         * HashAlgorithm.cs: Changed the order of BlockCopy + HashCore to
9         HashCore + BlockCopy. Fx 2.0 now allows using a null output buffer
10         (without exception) while previous 1.x versions crashed the runtime
11         (mono won't crash the runtime, so we always do like 2.0).
12
13 2006-05-30  Sebastien Pouliot  <sebastien@ximian.com>
14
15         * AsymmetricKeyExchangeDeformatter.cs: Under 2.0 the ctor is 
16         protected.
17         * AsymmetricKeyExchangeFormatter.cs: Under 2.0 the ctor is protected.
18         * AsymmetricSignatureDeformatter.cs: Under 2.0 the ctor is protected.
19         * AsymmetricSignatureFormatter.cs: Under 2.0 the ctor is protected.
20         * DES.cs: Under 2.0 the ctor is protected.
21         * HashAlgorithm.cs: Under 2.0 the HashValue field is protected 
22         internal.
23         * RandomNumberGenerator.cs: Under 2.0 the ctor is protected.
24         * RC2.cs: Under 2.0 the ctor is protected.
25         * Rijndael.cs: Under 2.0 the ctor is protected.
26         * RSA.cs: Under 2.0 the ctor is protected.
27         * SHA256.cs: Under 2.0 the ctor is protected.
28         * SHA384.cs: Under 2.0 the ctor is protected.
29         * SHA512.cs: Under 2.0 the ctor is protected.
30         * SymmetricAlgorithm.cs: Under 2.0 the ctor is protected.
31         * TripleDES.cs: Under 2.0 the ctor is protected.
32
33 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
34
35         * CryptoStream.cs: Add 'override' keyword to Dispose (bool) method in 2.0.
36
37 2005-12-15  Sebastien Pouliot  <sebastien@ximian.com>
38
39         * SymmetricAlgorithm.cs: Changing (not setting) BlockSize must 
40         re-generate a new IV (so the properties are kept valid). Note that
41         changing or setting (same value) the KeySize always re-generate a key.
42
43 2005-12-01  Sebastien Pouliot  <sebastien@ximian.com>
44
45         * RIPEMD160Managed.cs: Endianess fix.
46
47 2005-11-22  Sebastien Pouliot  <sebastien@ximian.com>
48
49         * DSAManaged.cs: Don't output J in the XML if it's not exported (i.e.
50         if it wasn't imported too but instead calculated from the other 
51         parameters ;-).
52
53 2005-11-09  Sebastien Pouliot  <sebastien@ximian.com>
54
55         * KeyNumber.cs: Added missing [Serializable] present in 2.0.
56
57 2005-10-21  Sebastien Pouliot  <sebastien@ximian.com>
58
59         * DESCryptoServiceProvider.cs: Don't change the instance key/iv when
60         creating an encryptor or decryptor specifying them. Generate a new key
61         if null is specified (not really useful but compatible with MS 
62         behaviour). Check for weak/semi-weak key when creating transforms.
63         * RC2CryptoServiceProvider.cs: Don't change the instance key/iv when 
64         creating an encryptor or decryptor specifying them. Check legal key
65         sizes when creating transforms.
66         * RijndaelManaged.cs: Don't change the instance key/iv when creating 
67         an encryptor or decryptor specifying them. Check legal key sizes when
68         creating transforms.
69         * TripleDESCryptoServiceProvider.cs: Don't change the instance key/iv
70         when creating an encryptor or decryptor specifying them. Generate a 
71         new key if null is specified (not really useful but compatible with MS
72         behaviour). Check for weak key when creating transforms.
73
74 2005-09-29  Sebastien Pouliot  <sebastien@ximian.com>
75
76         * HMACSHA1.cs: Added the new 2.0 ctor that let the programmer choose
77         between the managed and unmanaged SHA1 algorithm used in the HMAC 
78         (that doesn't change much thing in the default config for Mono).
79         * PasswordDeriveBytes.cs: Added [Obsolete] on GetBytes (2.0) as new
80         applications should be using Rfc2898DeriveBytes to get PKCS#5 v2
81         support.
82
83 2005-08-17  Sebastien Pouliot  <sebastien@ximian.com>
84
85         * FromBase64Transform.cs: Check that the TransformFinal can be called
86         with only whitespace (with FromBase64TransformMode.IgnoreWhiteSpaces)
87         so that we must return new byte [0].
88
89 2005-06-14  Sebastien Pouliot  <sebastien@ximian.com>
90
91         * FromBase64Transform.cs: Removed memory allocations during the 
92         transform. It's now just the accumulator (ctor) and the 
93         TransformFinalBlock that allocates memory. The transform is now
94         between 3 to 4 times faster than before.
95
96 2005-06-10  Sebastien Pouliot  <sebastien@ximian.com>
97
98         * all: 2.0 beta2 fixes, i.e. mostly added [ComVisible(true)]
99
100 2005-06-09  Sebastien Pouliot  <sebastien@ximian.com>
101
102         * HMAC.cs: BlockSizeValue has changed from a protected member to
103         a protected property.
104
105 2005-06-06  Sebastien Pouliot  <sebastien@ximian.com>
106
107         * CspProviderFlags.cs: UseExistingKey was added in 1.1 SP1. Added
108         ComVisible attribute for 2.0.
109
110 2005-05-19  Sebastien Pouliot  <sebastien@ximian.com>
111
112         * CryptoConfig.cs: Don't use the global hashtables until the 
113         initialization is complete.
114
115 2005-05-18  Sebastien Pouliot  <sebastien@ximian.com>
116
117         * CryptoConfig.cs: Changed lock pattern to second version of
118         http://www.skeet.org.uk/csharp/singleton.html
119
120 2005-05-16  Sebastien Pouliot  <sebastien@ximian.com>
121
122         * CryptoConfig.cs: Initialization wasn't threadsafe as the "checked" 
123         value was assigned at the start of the initialization.
124
125 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
126
127         * CryptoConfig.cs: Removed RSA OID and added null check in EncodeOID
128         in NET_2_0 to match beta2.
129         * DES.cs: Added null check for IsWeakKey and IsSemiWeakKey in NET_2_0
130         to match beta2.
131         * SymmetricAlgorithm.cs: Throw CryptographicException when feedback is
132         zero in NET_2_0 to match beta2
133         * TripleDES.cs: Added null check for IsWeakKey in NET_2_0 to match 
134         beta2.
135
136 2005-04-05  Sebastien Pouliot  <sebastien@ximian.com>
137
138         * CryptoConfig.cs: Added Assert for FileIOPermission to LoadConfig so 
139         the configuration can be read under partial trust.
140
141 2005-03-24  Sebastien Pouliot  <sebastien@ximian.com>
142
143         * CryptoConfig.cs: Added LinkDemand for unrestricted to CreateFromName
144         when used to create instance with object[] parameters.
145         * CryptoAPITransform.cs: Added Demand for UnmanagedCode to KeyHandle 
146         property.
147
148 2005-03-07  Sebastien Pouliot  <sebastien@ximian.com>
149
150         * MD5CryptoServiceProvider.cs: Fixed #73404 to return right results
151         if the data length is bigger than 2^32 bits.
152         * SHA1CryptoServiceProvider.cs: Fixed #73404 to return right results
153         if the data length is bigger than 2^32 bits.
154         * SHA256Managed.cs: Fixed #73404 to return right results if the data
155         length is bigger than 2^32 bits.
156
157 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
158
159         * RNGCryptoServiceProvider.cs: Added a new call in the static ctor
160         to check if we're using a global handle. In that case we lock before
161         calling the RNG.
162
163 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com> 
164
165         * DSA.cs: Weekly fix to case where DSAParameters.Counter is 0 :-(
166         A new unit test was added for this specific case so it's hopefully
167         the last fix for this. Fixed exception reporting to match NET_2_0.
168
169 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com> 
170
171         * DSA.cs: Really fixed case where DSAParameters.Counter is 0.
172
173 2005-01-21  Sebastien Pouliot  <sebastien@ximian.com> 
174
175         * DSA.cs: Handle the case where DSAParameters.Counter is 0.
176
177 2005-01-11  Sebastien Pouliot  <sebastien@ximian.com> 
178
179         * CryptoConfig.cs: Added support to create RIPEMD160 and the new HMAC
180         algorithms (HMACMD5, HMACRIPEMD160, HMACSHA256, HMACSHA384 and 
181         HMACSHA512). This fix the unit tests failures in Mono.Security.dll in
182         the NET_2_0 profile.
183         * DSACryptoServiceProvider.cs: Import|ExportCspBlob throws 
184         NotImplementedException (CryptoConvert class doesn't support DSA yet).
185         * RSACryptoServiceProvider.cs: SignHash/VerifyHash defaults to SHA-1
186         in 2.0. VerifyHash throw appropriate exception when no OID is 
187         specified (1.0/1.1). Import|ExportCspBlob implemented using the
188         CryptoConvert class.
189         * RSAOAEPKeyExchangeDeformatter.cs: Throw exception if no key is 
190         specified.
191         * RSAOAEPKeyExchangeFormatter.cs: Throw exception if no key is 
192         specified.
193         * RSAPKCS1KeyExchangeFormatter.cs: Throw exception if no key is 
194         specified.
195         * SymmetricAlgorithm.cs: More strict IV length checks on 2.0.
196
197 2005-01-10  Sebastien Pouliot  <sebastien@ximian.com>
198
199         * CryptoConfig.cs: Change the OID for SHA-2 algorithms to match 2.0
200         and added new OID for asymmetric and symmetric algorithms.
201         * CspKeyContainerInfo.cs: Added CryptoKeySecurity property. This will
202         always return null until we support access control for key containers.
203         * CspParameters.cs: Added new constructors and propertys for access 
204         control and password (2.0).
205         * DSASignatureDeformatter.cs: Throw ArgumentNullException in NET_2_0 
206         if a null key is specified.
207         * DSASignatureFormatter.cs: Throw ArgumentNullException in NET_2_0 if
208         a null key is specified.
209         * HashAlgorithm.cs: Fix the reported exceptions for output buffers.
210         * HMAC.cs: Change the .Clear (which calls Dispose) to a .Initialize.
211         * MACTripleDES.cs: Removed unrequired private field _padding.
212         * PasswordDeriveBytes.cs: Added 4 new constructors where the password
213         is a byte[] (as it seems MS won't be using SecureString for this).
214         * RIPEMD160Managed.cs: Removed overriden Dispose method to match 2.0.
215         Clear buffers when initializing (e.g. re-using the hash instance).
216         * Rfc2898DeriveBytes.cs: Added a new constructor where the password
217         is a byte[] (as it seems MS won't be using SecureString for this).
218         * RSAPKCS1SignatureDeformatter.cs: Throw ArgumentNullException in
219         NET_2_0 if a null key is specified.
220         * RSAPKCS1SignatureFormatter.cs: Throw ArgumentNullException in
221         NET_2_0 if a null key is specified.
222         * ToBase64Transform.cs: Fix the reported exceptions for output buffers.
223
224 2005-01-06  Sebastien Pouliot  <sebastien@ximian.com> 
225
226         * DES.cs: Change wek and semi-weak key checking to avoid memory 
227         allocations. Old version required 2 allocations (weak+semiweak) to 
228         unpack the key. New versions are 16x-20x faster.
229         *  RijndaelManaged.cs: Removed unrequired "& 0xff" when casting to 
230         byte.
231
232 2005-01-03  Sebastien Pouliot  <sebastien@ximian.com> 
233
234         * DESCryptoServiceProvider.cs: Refactored ECB/ProcessBlock to allow
235         TripleDES to be more efficient by using the permutations itself. 
236         * TripleDESCryptoServiceProvider.cs: Removed memory allocation in 
237         Transform's ECB method. Changed code to directly call DES's 
238         permutations. MACTripleDES is now 20% faster (didn't have any other
239         3DES benchmark on hand) and requires much less memory.
240
241 2005-01-03  Sebastien Pouliot  <sebastien@ximian.com>
242
243         * DESCryptoServiceProvider.cs: Now using pre-computed tables (instead
244         of using a static constructor to compute them). Not much change 
245         performance-wise unless you used DES but only "a little" ;-). The old
246         code (who computed the results) is still present but commented,
247
248 2005-01-02  Sebastien Pouliot  <sebastien@ximian.com>
249
250         * SHA1CryptoServiceProvider.cs: Removed memory allocation in 
251         ProcessBlock method (now global). This gives up to 8% performance
252         increase when multiple blocks are being used.
253         * SHA256Managed.cs: Removed memory allocation in ProcessBlock method
254         (now global). This gives up to 5% performance increase when multiple 
255         blocks are being used.
256
257 2004-12-23  Sebastien Pouliot  <sebastien@ximian.com>
258
259         * DataProtectionScope.cs: Moved in System.Security.dll
260         * MemoryProtectionScope.cs: Moved in System.Security.dll
261         * ProtectedData.cs: Moved in System.Security.dll
262         * ProtectedMemory.cs: Moved in System.Security.dll
263
264 2004-12-22  Sebastien Pouliot  <sebastien@ximian.com>
265
266         * RSA.cs: Throw the proper CryptographicException exception when 
267         exporting a private key without CRT parameters, while keeping the
268         ArgumentNullException when the private exponent (D) is missing.
269
270 2004-12-06  Sebastien Pouliot  <sebastien@ximian.com>
271
272         * RSACryptoServiceProvider.cs: Adjust DecryptValue to the fact that 
273         Mono's RSAManaged support decryption without CRT while MS requires it.
274
275 2004-11-26  Sebastien Pouliot  <sebastien@ximian.com>
276
277         * CryptoAPITransform.cs: 
278         * DSACryptoServiceProvider.cs: 
279         * MACTripleDES.cs:
280         * RC2CryptoServiceProvider.cs: 
281         * RSACryptoServiceProvider.cs: 
282                 Added ComVisible attributes to match 2.0 October Preview.
283
284 2004-11-03  Sebastien Pouliot  <sebastien@ximian.com>
285
286         * PasswordDeriveBytes.cs: Fix default iretation count to 100. Fix
287         exceptions to match MS more closely. Fixed possible ArgumentException
288         when asking multiple GetBytes than results in more bits than the hash
289         function can provide.
290
291 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
292
293         * DESCryptoServiceProvider.cs: Fixed warning (l4) by adding empty {}.
294         * DSASignatureDeformatter.cs: Fixed warning (l4) for unused variable.
295         * DSASignatureFormatter.cs: Fixed warning (l4) for unused variable.
296         * HMACSHA1.cs: Fixed warning (l4) for unused variable.
297
298 2004-09-03  Tim Coleman (tim@timcoleman.com)
299
300         * CryptoConfig.cs: Add new Xml cryptography class info.
301
302 2004-08-08  Sebastien Pouliot  <sebastien@ximian.com>
303
304         * CspProviderFlags.cs: Fixed new enums values.
305         * DSA.cs: Fixed #if for constructor visibility.
306         * CryptoAPITransform.cs: Removed constructor for NET_2_0 profile.
307
308 2004-07-07  Sebastien Pouliot  <sebastien@ximian.com>
309
310         * DES.cs: Fixed FeedbackSizeValue to 8.
311         * RC2.cs: Fixed FeedbackSizeValue to 8.
312         * RC2CryptoServiceProvider.cs: When key size is different from 
313         effective key size we throw CryptographicUnexpectedOperationException.
314         * TripleDES.cs: Fixed FeedbackSizeValue to 8.
315
316 2004-07-07  Sebastien Pouliot  <sebastien@ximian.com>
317
318         * CryptoAPITransform.cs: Added the new Reset method for NET_2_0. This
319         is a NOP as this class isn't used by Mono (all crypto transforms are 
320         managed).
321         * CryptographicException.cs: Added _Exception interface for NET_2_0 
322         profile.
323         * CspProviderFlags.cs: Added new enum's members for NET_2_0.
324         * DSA.cs: Changed constructor to protected for NET_2_0. It is now 
325         possible to inherit from DSA in other assemblies.
326         * DSACryptoServiceProvider.cs: NET_2_0 cleanup. Added interface 
327         ICspAsymmetricAlgorithm (stub), removed (unrequired) LegalKeySizes 
328         override, fixed visibility of PublicOnly property.
329         * HMACSHA1.cs: Fixed #if for NET_2_0 profile.
330         * KeyNumber.cs: Fixed values for new enum in Fx 2.0.
331         * MACTripleDES.cs: Added new Padding property to NET_2_0 profile.
332         * ProtectedData.cs: Added missing private constructor.
333         * ProtectedMemory.cs: Added missing private constructor.
334         * RC2CryptoServiceProvider.cs: Added UseSalt property to NET_2_0 
335         profile. Salt usage must be added to the transforms.
336         * RIPEMD160Managed.cs: Removed unrequired [CLSCompliant] attributes.
337         * RSACryptoServiceProvider.cs: NET_2_0 cleanup. Added interface 
338         ICspAsymmetricAlgorithm (stub), fixed visibility of PublicOnly 
339         property.
340         * RijndaelManaged.cs: Use the new RijndaelManagedTransform for Fx 2.0.
341         * RijndaelManagedTransform.cs: New. Class is now public in Fx 2.0.
342
343 2004-06-23  Sebastien Pouliot  <sebastien@ximian.com>
344
345         * CryptoStream.cs: Removed the block reduction. This seems to be done
346         only for Decryptor so it was moved to SymmetricTransform.
347
348 2004-06-16  Sebastien Pouliot  <sebastien@ximian.com>
349
350         * SignatureDescription.cs: Implemented .ctor(SecurityElement) using
351         documentation from VS.NET 2005.
352
353 2004-06-10  Gert Driesen <drieseng@users.sourceforge.net>
354
355         * ToBase64Transform.cs: Uncomment finalizer to fix public API
356         signature
357
358 2004-05-29  Sebastien Pouliot  <sebastien@ximian.com>
359
360         * CspProviderFlags.cs: Reverted previous patch as UseExistingKey isn't
361         part of the 1.0/1.1 framework.
362
363 2004-05-29  Gert Driesen (drieseng@users.sourceforge.net)
364
365         * CspProviderFlags.cs: Added missing enum field UseExistingKey
366
367 2004-05-27  Sebastien Pouliot  <sebastien@ximian.com>
368
369         * HashAlgorithm.cs: Added missing exception handling to ComputeHash,
370         TransformBlock and TransformFinalBlock.
371
372 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
373
374         * CryptoStream.cs: Fixed possible integer overflow.
375         * FromBase64Transform.cs: Better exception handling and fixed possible
376         integer overflow.
377         * RNGCryptoServiceProvider.cs: Changed RNG interface with the runtime
378         so it could be used in a thread-safe way with CryptoAPI.
379         * ToBase64Transform.cs: Better exception handling and fixed possible
380         integer overflow.
381
382 2004-05-07  Sebastien Pouliot  <sebastien@ximian.com>
383
384         * CipherMode.cs: Moved XML comments to monodoc.
385         * CryptoConfig.cs: Changed Array.Copy to Buffer.BlockCopy.
386         * CryptoStream.cs: Changed Array.Copy to Buffer.BlockCopy.
387         * DSA.cs: Changed Array.Copy to Buffer.BlockCopy.
388         * DSACryptoServiceProvider.cs: Fixed SignData to hash data before 
389         signing it (thanks to Jens Thiel for spotting this).
390         * ICryptoTransform.cs: Moved XML comments to monodoc.
391         * PasswordDeriveBytes.cs: Changed Array.Copy to Buffer.BlockCopy.
392         * FromBase64Transform.cs: Moved XML comments to monodoc.
393         * RSACryptoServiceProvider.cs: Fixed OID related exception in SignData.
394         * ToBase64Transform.cs: Input block may be smaller than a full block
395         when calling TransformFinalBlock (fix 2 CryptoStream unit tests).
396
397 2004-05-06  Sebastien Pouliot  <sebastien@ximian.com>
398
399         * RSAOAEPKeyExchangeDeformatter.cs: Fixed wrt completed unit tests.
400         * RSAOAEPKeyExchangeFormatter.cs: Fixed wrt completed unit tests.
401         * RSAPKCS1KeyExchangeDeformatter.cs: Fixed wrt completed unit tests.
402         Added globalization to exceptions.
403         * RSAPKCS1KeyExchangeFormatter.cs: Fixed wrt completed unit tests.
404         * RSAPKCS1SignatureDeformatter.cs: Fixed wrt completed unit tests.
405         Added globalization to exceptions.
406         * RSAPKCS1SignatureFormatter.cs: Fixed wrt completed unit tests.
407         Added globalization to exceptions.
408         
409 2004-05-06  Sebastien Pouliot  <sebastien@ximian.com>
410
411         * RC2.cs: Fixed KeySize to change it's value and the EffectiveKeySize
412         when the key is changed.
413         * RC2CryptoServiceProvider.cs: Added globalization to exceptions. 
414         Fixed the KeySize must be equal with EffectiveKeySize to match MS 
415         implementation.
416         * Rijndael.cs: Source clean up.
417         * RijndaelManaged.cs: Moved XML comments to monodoc. Added 
418         globalization to exceptions. 
419         * RNGCryptoServiceProvider.cs: Removed TODO and documented them in
420         mono doc. Now call runtime when a seed is provided.
421         * RSA.cs: Added globalization to exceptions. Removed check for 
422         <RSAKeyValue> as it is not checked by MS implementation.
423         * SHA1.cs: Moved XML comments to monodoc.
424         * SHA1CryptoServiceProvider.cs: Moved XML comments to monodoc. Removed
425         CLSCompliance attributes from private fields. 
426         * SHA256.cs: Moved XML comments to monodoc.
427         * SHA256Managed.cs: Moved XML comments to monodoc. Removed 
428         CLSCompliance attributes from   private fields.
429         * SHA384.cs: Moved XML comments to monodoc.
430         * SHA512.cs: Moved XML comments to monodoc.
431         * SignatureDescription.cs: Moved XML comments to monodoc. Added 
432         globalization to exceptions. Removed TODO and added notes to monodoc.
433         * SymmetricAlgorithm.cs: Moved XML comments to monodoc. Added 
434         globalization to exceptions.
435         * ToBase64Tranform.cs: Added missing exception handling. Moved XML 
436         comments to monodoc.
437         * TripleDES.cs: Added globalization to exceptions.
438         * TripleDESCryptoServiceProvider.cs: Changed Array.Copy to 
439         Buffer.BlockCopy. Zeroize decrypted data.
440
441 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
442
443         * HashAlgorithm.cs: Moved XML comments to monodoc. Added globalization
444         to exceptions.
445         * KeyedHashAlgorithm.cs: Added globalization to exceptions.
446         * KeySizes.cs: Moved XML comments to monodoc.
447         * MaskGenerationMethod.cs: Source clean up.
448         * MD5.cs: Moved XML comments to monodoc.
449         * MD5CryptoServiceProvider.cs: Removed CLSCompliance attributes from
450         private fields. Changed constants from enum to array. Zeroize data on
451         Dispose.
452         * PaddingMode.cs: Moved XML comments to monodoc.
453         * PasswordDeriveBytes.cs: Added globalization to exceptions. Removed 
454         TODO and documented as "not supported" in MonoDoc.
455         * RandomNumberGenerator.cs: Source clean up.
456
457 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
458
459         * DSACryptoServiceProvider.cs: Added globalization to exceptions.
460         * HMACSHA1.cs: Cleanup.
461         * SHA1CryptoServiceProvider.cs: Removed unused private methods.
462         * SHA1Managed.cs: Removed unused private methods.
463         * SHA384Managed.cs: Don't zeroize buffer on first initialization.
464         * SHA512Managed.cs: Don't zeroize buffer on first initialization.
465         
466 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
467
468         * Base64Constants.cs: New. Convert code into tables for better base64
469         performance.
470         * FromBase64Transform.cs: Updated to use the new tables. Source code
471         cleanup.
472         * SHA256Managed.cs: Updated to use shared constants.
473         * SHA384Managed.cs: Updated to use shared constants.
474         * SHA512Managed.cs: Updated to use shared constants.
475         * SHAConstants.cs: New. Shared constants for SHA implementations.
476         * ToBase64Transform.cs: Updated to use the new tables. Added 
477         globalization. Commented finalizer as it isn't required in this case.
478
479 2004-05-03  Sebastien Pouliot  <sebastien@ximian.com>
480
481         * CryptoConfig.cs: Specify version and public key token when loading
482         System.Security.dll for XML Digital Signature classes.
483
484 2004-04-29 Ben Maurer  <bmaurer@users.sourceforge.net>
485
486         * DES.cs:
487         * DESCryptoServiceProvider.cs:
488         * RC2CryptoServiceProvider.cs:
489         * RijndaelManaged.cs:
490         * SHA384Managed.cs:
491         * SHA512Managed.cs:
492         * ToBase64Transform.cs:
493         Readonly/Constify.
494
495 2004-04-29  Sebastien Pouliot  <sebastien@ximian.com>
496
497         * DES.cs: Removed redundant weak/semi-weak key check in Key property.
498         * DESCryptoServiceProvider.cs: Implementation already had 100% 
499         coverage.
500
501 2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
502
503         * DSACryptoServiceProvider.cs: Changed delegate signature.
504         * RSACryptoServiceProvider.cs: Changed delegate signature.
505
506 2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
507
508         * DSA.cs: Moved XML comments to monodoc. Added globalization to 
509         exceptions. Already had 100% coverage.
510         * DSAParameters.cs: Moved XML comments to monodoc.
511         * DSASignatureDeformetter.cs: Added globalization to exceptions. 
512         Limited catch to expected exception. Already had 100% coverage.
513         * DSASignatureFormatter.cs: Added globalization to exceptions. Limited
514         catch to expected exception. Already had 100% coverage.
515
516 2004-04-26  Sebastien Pouliot  <sebastien@ximian.com>
517
518         * AsymmetricAlgorithm.cs: Moved XML comments to monodoc. Added 
519         globalization to exceptions. Already had 100% coverage.
520         * AsymmetricKeyExchangeDeformatter.cs: Moved XML comments to monodoc.
521         Already had 100% coverage.
522         * AsymmetricKeyExchangeFormatter.cs: Moved XML comments to monodoc.
523         Already had 100% coverage.
524         * AsymmetricSignatureDeformatter.cs: Moved XML comments to monodoc.
525         Already had 100% coverage.
526         * AsymmetricSignatureFormatter.cs: Moved XML comments to monodoc.
527         Already had 100% coverage.
528         * CryptoAPITransform.cs: Unused by Mono (added note to monodoc).
529         Class will stay at 0% coverage.
530         * CryptoConfig.cs: Added globalization to exceptions. 98% coverage.
531         * CryptographicException.cs: Added globalization to exceptions. 
532         Already had 100% coverage.
533         * CryptoStream.cs: Added globalization to exceptions. Removed (unused)
534         field _previousBlock to get 100% coverage.
535         * CspParameters.cs: Moved XML comments to monodoc. Already had 100% 
536         coverage.
537         * CspProviderFlags.cs: Moved XML comments to monodoc.
538         * DeriveBytes.cs: Moved XML comments to monodoc. Already had 100% 
539         coverage.
540         * DES.cs: Fixes to weak/semi-weak checking to pass new unit tests (it
541         requires to set odd parity on keys before comparing).
542
543 2004-04-25  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
544
545         * DSACryptoServiceProvider.cs: Call invariant compare
546
547 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
548
549         * DSA.cs: Use Mono.Security.BitConverterLE
550
551 2004-04-05  Bernie Solomon  <bernard@ugsolutions.com>
552
553         * DESCryptoServiceProvider.cs: Use BitConverter.IsLittleEndian
554         to fix for big endian machines.
555
556 2004-03-10  Sebastien Pouliot  <sebastien@ximian.com>
557
558         * FromBase64Transform.cs: Now throws ObjectDisposedException and
559         return true for CanReuseTransform (as MS implementation).
560
561 2004-03-09  Atsushi Enomoto  <atsushi@ximian.com>
562
563         * DSA.cs : fixed incorrectly modified catch for debugging.
564
565 2004-03-09  Atsushi Enomoto  <atsushi@ximian.com>
566
567         * DSA.cs : In ToXmlString(), sequence of Seed and PgenCounter is
568           optional.
569
570 2004-02-26  Sebastien Pouliot  <sebastien@ximian.com>
571
572         * DES.cs: Same fix as for SymmetricAlgorithm (get_Key is 
573         overridden to check for weak keys). Also ensured that no weak keys
574         would be generated.
575         * SymmetricAlgorithm.cs: Return a copy of the key (and IV) so it 
576         doesn't get destroyed when dispose is called (in this case the key
577         zeroization is the caller's responsability). Match MS implementation.
578         * TripleDES.cs: Same fix as for SymmetricAlgorithm (get_Key is 
579         overridden to check for weak keys). Fix bugzilla #54868.
580
581 2004-02-12  Sebastien Pouliot  <sebastien@ximian.com>
582
583         * CryptoStream.cs: Remove the _blockSize assumptions because some 
584         Transforms could be different on Input/Output. Added a special case
585         for cascading CryptoStreams in FlushFinalBlock.
586
587 2004-02-09  Sebastien Pouliot  <sebastien@ximian.com>
588
589         * DSACryptoServiceProvider.cs: Fixed support for key pair persistence.
590         It now requires (like MS) to call Clear to delete an existing 
591         container. PersistKeyInCsp default value also changes if a 
592         CspParameters is supplied (or not) to the constructor.
593         * RSACryptoServiceProvider.cs: Same fixes as DSA.
594         * SymmetricAlgorithm.cs: Reintroduced the patch from 2003-08-24 to fix
595         IV length exception for stream ciphers (e.g. RC4). I overwrote it by
596         accident some time ago :(
597
598 2004-02-08  Sebastien Pouliot  <sebastien@ximian.com>
599
600         * HashAlgorithm.cs: Changed the ComputeHash(Stream) method to (a) not
601         allocate the whole stream memory (big memory saver as suggested by
602         Peter Williams in bugzilla entry #54022) and (b) to never use Stream.
603         Length and Stream.Position because they aren't implemented for every
604         stream class (similar issue to the CryptoStream patch).
605         * MD5CryptoServiceProvider.cs: Moved a buffer allocation from 
606         ProcessBlock to constructor to reduce memory allocation. Optimization
607         suggested by Peter Williams in bugzilla entry #54024.
608
609 2004-02-06  Sebastien Pouliot  <sebastien@ximian.com>
610
611         * DSACryptoServiceProvider.cs: Added keypair persistence support.
612         Corrected dispose so object cannot be disposed multiple time. Added
613         PublicOnly property (as internal before 1.2, public after).
614         * RSACryptoServiceProvider.cs: Added keypair persistence support.
615         Corrected dispose so object cannot be disposed multiple time. Added
616         PublicOnly property (as internal before 1.2, public after).
617         * SymmetricAlgorithm.cs: Removed class SymmetricTransform from file
618         and moved it to Mono.Security.Cryptography namespace. The transform
619         class will also be included in Mono.Security assembly.
620
621 2004-02-06  David Sheldon <dave-mono@earth.li>
622
623   * FromBase64Transform.cs: Improved code layout to match coding style, 
624    and removed the Byte comparison with -1.
625
626 2004-02-04  Sebastien Pouliot  <sebastien@ximian.com>
627
628         * CryptoStream.cs: New implementation - should fix all known issues
629         with the class (Read/WriteByte, reading by non-multiple of the
630         block size, using Stream.Length and Stream.Position ...).
631         * SymmetricAlgorithm.cs: Return an empty array when there's nothing
632         to return (required for CryptoStream to work).
633
634 2004-01-31  David Sheldon      <dave-mono@earth.li>
635
636         * FromBase64Transform.cs: Removed needless catch and rethrow.
637
638 2004-01-31  David Sheldon      <dave-mono@earth.li>
639
640         * FromBase64Transform.cs: Fixes to what happens if a character in the
641         input stream is not in the lookup table. IndexOutOfRangeException was 
642         wrong.
643
644 2003-12-15  Sebastien Pouliot  <spouliot@videotron.ca>
645
646         * CryptoConfig.cs: Now use internal Environment.GetMachineConfigPath()
647         to find machine.config. Initialization removed from static constructor
648         to speed up 98% of software that do not requires it.
649         * SymmetricAlgorithm.cs: Fixed padding for None and Zeros modes. Unit
650         tests for padding modes are now in PaddingModeTest.cs.
651
652 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
653
654         * HMAC.cs: Fix compilation warnings.
655
656 2003-12-10  Mark Crichton  <crichton@gimp.org>
657
658         * RNGCryptoServiceProvider.cs: Removed icall to GetNonZeroBytes. Now
659         done with managed code.
660
661 2003-11-13  Sebastien Pouliot  <spouliot@videotron.ca>
662
663         * ProtectedData.cs: Added exceptions - core is still TODO.
664         * ProtectedMemory.cs: Added exceptions - core is still TODO.
665
666 2003-11-11  Sebastien Pouliot  <spouliot@videotron.ca>
667
668         * Rfc2898DeriveBytes.cs: Now handle resets and keys longer than 160 
669         bits (HMACSHA1 block size). Removed TODO.
670         * SymmetricAlgorithm.cs: Fixed decryption when inputOffset > 0.
671         [#50826].
672
673 2003-11-10  Sebastien Pouliot  <spouliot@videotron.ca>
674
675         * Rfc2898DeriveBytes.cs: Implementation for PKCS5 PBKDF2. It works
676         except for the Reset() part - which implies some kind of Resume.
677
678 2003-11-09  Sebastien Pouliot  <spouliot@videotron.ca>
679
680         * CryptoConfig.cs: Updated for RIPEMD160 and HMAC.
681         * CspKeyContainerInfo.cs: New (1.2). Information about CSP based key
682         containers.
683         * DataProtectionScope.cs: New (1.2). Enumeration for ProtectedData.
684         * HMAC.cs: New (1.2). Base class for all HMAC. Code is mostly copied 
685         from internal Mono.Security.Cryptography.HMACAlgorith.cs.
686         * HMACMD5.cs: New (1.2). HMAC implementation using MD5.
687         * HMACRIPEMD160.cs: New (1.2). HMAC implementation using RIPEMD160.
688         * HMACSHA1.cs: Modified to derive from HMAC for .NET 1.2.
689         * HMACSHA256.cs: New (1.2). HMAC implementation using SHA256.
690         * HMACSHA384.cs: New (1.2). HMAC implementation using SHA384.
691         * HMACSHA512.cs: New (1.2). HMAC implementation using SHA512.
692         * ICspAsymmetricAlgorithm.cs: New (1.2). Interface for CSP based 
693         asymmetric algorithm.
694         * KeyNumber.cs: New (1.2). Enumeration for CspKeyContainerInfo.
695         * MemoryProtectionScope.cs: New (1.2). Enumeration for ProtectedMemory.
696         * PaddingMode.cs: Added two new padding modes to enumeration (for 1.2).
697         * ProtectedData.cs: New (1.2). ProtectedData without protection (TODO).
698         * ProtectedMemory.cs: New (1.2). Stub for ProtectedMemory.
699         * Rfc2898DeriveBytes.cs: New (1.2). Stub for PKCS5 PBKDF2.
700
701 2003-11-08  Sebastien Pouliot  <spouliot@videotron.ca>
702
703         * RIPEMD160.cs: New (1.2). Abstract class for RIPEMD160 hash from 
704         Pieter Philippaerts (Pieter@mentalis.org)
705         * RIPEMD160Managed.cs: New (1.2). Implementation of the RIPEMD160 hash
706         algorithm from Pieter Philippaerts (Pieter@mentalis.org)
707
708 2003-10-07  Sebastien Pouliot  <spouliot@videotron.ca>
709
710         * CryptoStream.cs: Commented CanTransformMultipleBlocks
711         optimization - it simply doesn't work :(
712
713 2003-10-04  Sebastien Pouliot  <spouliot@videotron.ca>
714
715         * CryptoStream.cs: Fixed bug 49323. The CanTransformMultipleBlocks
716         optimization in Read has been fixed for partial blocks.
717
718 2003-09-11  Lluis Sanchez Gual  <lluis@ximian.com>
719
720         * CryptoStream.cs: Added [In,Out] attributes to Read method.
721
722 2003-08-24  Sebastien Pouliot  <spouliot@videotron.ca>
723
724         * SymmetricAlgorithm.cs: Fixed IV length exception for stream ciphers
725         (e.g. RC4) which don't uses IV. This needs more tests for small IV...
726
727 2003-08-09  Sebastien Pouliot  <spouliot@videotron.ca>
728
729         * SymmetricAlgorithm.cs: Re-introduced Lluis patch for PaddingMode.None 
730         and PaddingMode.Zeros (not PaddingMode.PKCS7).
731
732 2003-08-05  Sebastien Pouliot  <spouliot@videotron.ca>
733
734         * CryptoStream.cs: Closing bug #40689. The Write method was re-written.
735         * SymmetricAlgorithm.cs: Removed Lluis previous patch (it fails a unit
736         test) and corrected a bug in FinalDecrypt.
737         * RSACryptoServiceProvider.cs: Fixed different exceptions from .NET 1.0
738         and 1.1.
739
740 2003-07-31  Sebastien Pouliot  <spouliot@videotron.ca>
741
742         * CryptoStream.cs: Closing bug #46143. The Read method was re-written.
743
744 2003-07-30  Sebastien Pouliot  <spouliot@videotron.ca>
745
746         * CryptoStream.cs: Fixed bug #46143 (exception) - however we dont 
747         returns the same result as MS. Class needs to be re-written.
748
749 2003-07-09  Lluis Sanchez Gual  <lluis@ximian.com>
750
751         * SymmetricAlgorithm.cs: Fixed FinalEncrypt. Return empty array if inputCount is 0.
752
753 2003-07-05  Sebastien Pouliot  <spouliot@videotron.ca>
754
755         * AsymmetricAlgorithm.cs: Removed AsymmetricParameters (IReader) class. 
756         Now uses the new Mono.Xml.SecurityParser (xml -> SecurityElement)
757         * CryptoConfig.cs: Removed CorlibHandler and CorlibReader classes. Now 
758         uses the new Mono.Xml.SecurityParser (xml -> SecurityElement)
759         * DSA.cs: Removed DSAHandler (IHandler) class. Now uses the new 
760         Mono.Xml.SecurityParser (xml -> SecurityElement)
761         * DSACryptoServiceProvider.cs: Added ObjectDisposedException support
762         and fixed bugs found in new unit tests.
763         * RSA.cs: Removed DSAHandler (IHandler) class. Now uses the new 
764         Mono.Xml.SecurityParser (xml -> SecurityElement)
765         * RSACryptoServiceProvider.cs: Added ObjectDisposedException support
766         and fixed bugs found in new unit tests.
767
768 2003-06-22  Sebastien Pouliot <spouliot@motus.com>
769
770         * DSACryptoServiceProvider.cs: Added UseMachineKeyStore property (1.1).
771         * RSACryptoServiceProvider.cs: Added UseMachineKeyStore property (1.1).
772
773 2003-06-11  Sebastien Pouliot <spouliot@motus.com>
774
775         * DSACryptoServiceProvider.cs: Refactored from orginal by splitting 
776         much core functionalities into DSAManaged. 
777         * RSACryptoServiceProvider.cs: Refactored from orginal by splitting 
778         much core functionalities into RSAManaged. 
779         * RSAPKCS1SignatureDeformatter.cs: Updated to use the new PKCS#1 API.
780         Now works with any hash algorithm (which OID is defined in machine.config)
781         * RSAPKCS1SignatureFormatter.cs: Updated to use the new PKCS#1 API.
782         Now works with any hash algorithm (which OID is defined in machine.config)
783
784 2003-06-09  Sebastien Pouliot <spouliot@motus.com>
785
786         * CryptoConfig.cs: Now support OID in machine.config.
787         * DSACryptoServiceProvider.cs: Changed USE_VERSION_1_0 for NET_1_0.
788         * KeySizes.cs: Changed USE_VERSION_1_0 for NET_1_0.
789         * MD5CryptoServiceProvider.cs: Changed USE_VERSION_1_0 for NET_1_0.
790         * RNGCryptoServiceProvider.cs: Changed USE_VERSION_1_0 for NET_1_0.
791
792 2003-05-12  Sebastien Pouliot  <spouliot@videotron.ca>
793
794         * PKCS1MaskGenerationMethod.cs: Added comment to justify why
795         the class is no more compatible with MS implementation (the bug
796         was preventing OAEP to work properly).
797
798 2003-05-09  Sebastien Pouliot  <spouliot@videotron.ca>
799
800         * DSACryptoServiceProvider.cs: Class is now sealed in v.1.1.
801         * KeySizes.cs: Class is now sealed in v.1.1.
802         * MD5CryptoServiceProvider.cs: Class is now sealed in v.1.1.
803         * RNGCryptoServiceProvider.cs: Class is now sealed in v.1.1.
804
805 2003-04-22  Sebastien Pouliot  <spouliot@videotron.ca>
806
807         * DSACryptoServiceProvider.cs: Changed key generation to use the
808         new BigInteger class (commited for Ben Maurer).
809         * RSACryptoServiceProvider.cs: Changed key generation to use the
810         new BigInteger class (commited for Ben Maurer).
811
812 2003-04-06  Sebastien Pouliot  <spouliot@videotron.ca>
813
814         * AsymmetricAlgorithm.cs: Moved IsLegalKeySize to KeySizes.cs.
815         * DSACryptoServiceProvider.cs: Fix bug where key generation always
816         resulted in 1024 bits keypair.
817         * KeySizes.cs: Added internal IsLegalKeySize and IsLegal to avoid
818         duplication in both AsymmetricAlgorithm and SymmetricAlgorithm.
819         * RC2.cs: Modified to use IsLegalKeySize from KeySizes.cs.
820         * RSACryptoServiceProvider.cs: Fix bug where key generation always
821         resulted in 1024 bits keypair. Should fix unit test failure under
822         Linux.
823         * SymmetricAlgorithm.cs: Moved IsLegalKeySize to KeySizes.cs.
824
825 2003-04-06  Sebastien Pouliot  <spouliot@videotron.ca>
826
827         * CryptoStream.cs: Partial fix for bug #40689 (workaround). Does not 
828         throw a NotSupportedException on closing a CryptoStream in read mode
829         (like MS does but unlike MS documents).
830
831 2003-03-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
832
833         * CryptoStream.cs: fixed the previous fix. MS throws a NotSupportedExc
834         when FlushFinalBlock is called twice. I've moved a few lines from Close
835         to FlushFinalBlock and added the exception check.
836
837 2003-03-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
838
839         * CryptoStream.cs: don't Close the underlying stream in FlushFinalBlock.
840         Fixes bug #40394.
841
842 2003-03-03  Sebastien Pouliot  <spouliot@videotron.ca>
843
844         * RSACryptoServiceProvider.cs: Delay keypair generation event when 
845         keysize is a constructor parameter (major speed improvment when
846         importing keys). Removed NotSupportedException when CspParameter is
847         used in constructor (required for forthcoming security tools).
848
849 2003-02-08  Sebastien Pouliot  <spouliot@videotron.ca>
850
851         * Changes to refer Mono.Math and Mono.Security.Cryptography
852         * Changes to refer Mono.Xml
853
854 2003-02-04  Sebastien Pouliot  <spouliot@videotron.ca>
855
856         * CryptoConfig.cs: Added initital support for "machine.config" 
857         (limited to algorithms, not OIDs). Modified CreateFromName to use
858         the fully qualified class names (and removed xmldsig hack). Added
859         algorithm names documented in book ".NET Framework Security".
860
861 2003-02-03  Sebastien Pouliot  <spouliot@videotron.ca>
862
863         * PasswordDeriveBytes.cs: Finally got the derivation right. The
864         class can now derive keys up to 1000 * HashSize (same limit as MS).
865         * RSAPKCS1SignatureDeformatter.cs: No need to create the hash object
866         in this class - the OID is enough.
867
868 2003-02-01  Sebastien Pouliot  <spouliot@videotron.ca>
869
870         * AsymmetricSignatureFormatter.cs: Call abstract SetHashAlgorithm
871         when CreateSignature(hash) is called.
872         * CryptoStream.cs: Fixed some issues in constructor.
873         * DSACryptoServiceProvider.cs: Fixed a bug (1 chance in 256) that
874         a signature could be less than 40 bytes (which is invalid).
875
876 2003-01-25  Sebastien Pouliot  <spouliot@videotron.ca>
877
878         * CryptographicException.cs: Default HResult to CORSEC_E_CRYPTO
879         (0x80131430) as documented.
880         * CryptographicUnexpectedOperationException.cs: Default HResult
881         to CORSEC_E_CRYPTO_UNEX_OPER (0x80131431) as documented.
882
883 2003-01-20  Sebastien Pouliot  <spouliot@videotron.ca>
884
885         * CipherMode.cs: Added missing [Serializable] to enum.
886         * CspProviderFlags.cs: Added missing [Serializable] to enum.
887         * FromBase64Transform.cs: Added missing [Serializable] to enum.
888         * PaddingMode.cs: Added missing [Serializable] to enum.
889
890 2003-01-19  Sebastien Pouliot  <spouliot@videotron.ca>
891
892         * CryptoTools.cs: Added internal class BlockProcessor to help
893         implementation of block-based algorithms (like MAC and HMAC).
894         * HMACSHA1.cs: Refactored to remove dependencies on CryptoStream,
895         better constructors and Dispose support.
896         * MACTripleDES.cs: Refactored to reuse new HMACSHA1 stuff, better
897         constructors.
898
899 2003-01-18  Sebastien Pouliot  <spouliot@videotron.ca>
900
901         * HMACSHA1.cs: Now use KeyBuilder to build the default key.
902
903 2003-01-12  Sebastien Pouliot  <spouliot@videotron.ca>
904
905         * MACTripleDES.cs: Now working (the problem was with my stream usage
906         which was removed for performance reason).
907         * TripleDES.cs: Fixed key generation (wasn't called and returned
908         null).
909
910 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
911
912         * RNGCryptoServiceProvider.cs: Changed methods interacting with 
913         the runtime as Internal<MethodName>. This will allow to make the
914         class Windows-compatible by doing a switch at runtime.
915
916 2003-01-05  Sebastien Pouliot  <spouliot@videotron.ca>
917
918         * CryptoAPITransform.cs: Removed all TODO. This class will not be
919         used by Mono. MS uses it with <algo>CryptoServiceProvider classes 
920         to provide a common ICryptoTransform access to CryptoAPI. 
921
922 2003-01-03  Sebastien Pouliot  <spouliot@videotron.ca>
923
924         * RC2CryptoServiceProvider.cs: Now about 2 time faster by inlining 
925         methods and changing to UInt16 (instead of UInt32). 
926
927 2003-01-02  Sebastien Pouliot  <spouliot@videotron.ca>
928
929         * RijndaelManaged.cs: Now 7 (encrypt) to 10 (decrypt) times faster 
930         by removing allocation inside intensively called methods, using pre-
931         calculated tables instead of Mult_GF methods and inlining most methods.
932
933 2002-12-31  Sebastien Pouliot  <spouliot@videotron.ca>
934
935         * AsymmetricAlgorithm.cs: Removed ValidKeySize (method only present
936         in SymmetricAlgorithm).
937         * DSA.cs: Change ZeroizePrivateKey from protected to internal.
938         * DSACryptoServiceProvider.cs: Added some case where we need to check 
939         for keypairGenerated.
940         * RSA.cs: Change ZeroizePrivateKey from protected to internal.
941         * RSACryptoServiceProvider.cs: Key were never generated with the default
942         (no parameter) constructor. Now checks for keypairGenerated in methods.
943         * SignatureDescription.cs: Added CreateDeformatter in RSAPKCS1SHA1-
944         SignatureDescription to please corcompare (it just call it's ancestor).
945
946 2002-12-30  Sebastien Pouliot  <spouliot@videotron.ca>
947
948         * CryptoStream.cs: Implemented core. Not sure about many details - 
949         but it run the samples now (#30256).
950         * CryptoStreamMode.cs: Added [Serializable] to enum declaration.
951         * SymmetricAlgorithm.cs: Made some changes required for CryptoStream 
952         and to match more closely MS implementation. Also added little
953         optimizations in TransformBlock.
954
955 2002-12-27  Sebastien Pouliot  <spouliot@videotron.ca>
956
957         * CryptoTools.cs: New. Shared classes for cryptography. Now
958         includes a KeyBuilder to generate symmetric keys and IV.
959         * DES.cs: Modified Key validation.
960         * DESCryptoServiceProvider.cs: Implemented Key and IV using
961         KeyBuilder.
962         * RC2CryptoServiceProvider.cs: Implemented Key and IV using
963         KeyBuilder (and removed TODO).
964         * RijndaelManaged.cs: Implemented Key and IV using KeyBuilder 
965         (and removed TODO).
966         * SHA384Managed.cs: Changed code to remove compiler warning.
967         * SHA512Managed.cs: Changed code to remove compiler warning.
968         * SymmetricAlgorithm.cs: Removed TODO on IV.
969         * TripleDESCryptoServiceProvider.cs: Implemented Key and IV
970         using KeyBuilder (and removed TODO).
971
972 2002-11-20  Sebastien Pouliot  <spouliot@videotron.ca>
973
974         * AsymmetricSignatureDeformatter.cs: Added exception handling in
975         VerifySignature (moved from RSAPKCS1SignatureDeformatter).
976         * AsymmetricSignatureFormatter.cs: Added exception handling in
977         CreateSignature (moved from RSAPKCS1SignatureFormatter).
978         * CryptoAPITransform.cs: Removed "= false" assignation from a private
979         member (because this created an unwanted "ghost" constructor) and 
980         modified Dispose declaration.
981         * HashAlgorithm.cs: Removed destructor. Disposing unmanaged 
982         ressources is the responsability of each class (not an abstract class).
983         * RSAPKCS1SignatureDeformatter.cs: Removed a VerifySignature method
984         which was present in the base class AsymmetricSignatureDeformatter.
985         * RSAPKCS1SignatureFormatter.cs: Removed a CreateSignature method
986         which was present in the base class AsymmetricSignatureFormatter.
987         * SHA1Managed.cs: Removed sealed from class declaration. Removed 
988         destructor and Dispose method as class is fully managed.
989         * ToBase64Transform.cs: Added virtual to property CanReuseTransform.
990
991 2002-11-17  Sebastien Pouliot  <spouliot@videotron.ca>
992
993         * CryptoConfig.cs: Added full classes name for MapNameToOID.
994         * PKCS1.cs: New. Internal class for the various primitives defined
995         in PKCS#1 v.2.1.
996         * PKCS1MaskGenerationFunction.cs: Modified to use PKCS1.cs.
997         * RSA.cs: Added internal class RSAHandler (which implements IHandler
998         interface for MiniParser) to import RSA keypairs from XML strings.
999         * RSACryptoServiceProvider.cs: Crypto implemented using BigInteger. 
1000         Key generation is VERY LONG.
1001         * RSAOAEPKeyExchangeDeformatter.cs: Completed using PKCS1. Not sure 
1002         of the results as this is not available in all versions of Windows.
1003         * RSAOAEPKeyExchangeFormatter.cs: Completed using PKCS1. Not sure 
1004         of the results as this is not available in all versions of Windows.
1005         * RSAPKCS1KeyExchangeDeformatter.cs: Completed using PKCS1.
1006         * RSAPKCS1KeyExchangeFormatter.cs: Completed using PKCS1.
1007         * RSAPKCS1SignatureDeformatter.cs: Completed using PKCS1.
1008         * RSAPKCS1SignatureFormatter.cs: Completed using PKCS1.
1009
1010 2002-11-17  Sebastien Pouliot  <spouliot@videotron.ca>
1011
1012         * MiniParser.cs: Added explicit cast in order to compile with mcs.
1013
1014 2002-11-16  Sebastien Pouliot  <spouliot@videotron.ca>
1015
1016         * AsymmetricAlgorithm.cs: Added internal class AsymmetricParameters
1017         (which implements the IReader interface for MiniParser). Corrected
1018         Dispose declaration.
1019         * BigInteger.cs: New. Internal class for handling BIG integers for 
1020         asymmetric crypto (both RSA and DSA). Thanks to Chew Keong TAN !
1021         * CryptoConfig.cs: Added XMLDSIG URLs in CreateFromName.
1022         Will dynamically load System.Security.dll, when required,
1023         to return instance of those classes. Also CryptoConfig can now
1024         create any object (e.g. System.IO.MemoryStream) !
1025         * DSA.cs: Added internal class DSAHandler (which implements IHandler
1026         interface for MiniParser) to import DSA keypairs from XML strings.
1027         * DSACryptoServiceProvider.cs: Crypto fully implemented using 
1028         BigInteger. Key generation (group) is VERY long.
1029         * MiniParser.cs: New. Minimal XML parser by Sergey Chaban. Used to 
1030         import keypairs in XML strings.
1031         * SignatureDescription.cs: Removed local CreateFromName (to use
1032         CryptoConfig - which actually can create anything). Added internal
1033         classes DSASignatureDescription and RSAPKCS1SHA1SignatureDescription.
1034
1035 2002-11-15  Sebastien Pouliot  <spouliot@videotron.ca>
1036
1037         * CryptographicUnexpectedOperationException.cs: Forgot it last time!
1038         * FromBase64Transform.cs: Added missing virtual to CanReuseTransform.
1039         Changed Dispose().
1040         * HashAlgorithm.cs: Changed Dispose().
1041         * MD5CryptoServiceProvider.cs: Added destructor and Dipose(bool).
1042         * PasswordDeriveBytes.cs: Changed some declaration from
1043         protected to private.
1044         * RC2.cs: Added valid keysize check in EffectiveKeySize.
1045         * RC2CryptoServiceProvider.cs: Overriden EffectiveKeySize to match
1046         corlib declarations.
1047         * RSAOAEPKeyExchangeDeformatter.cs: Changed some declaration from
1048         protected to private.
1049         * RSAOAEPKeyExchangeFormatter.cs: Changed some declaration from
1050         protected to private.
1051         * RSAPKCS1KeyExchangeDeformatter.cs: Changed some declaration from
1052         protected to private.
1053         * RSAPKCS1KeyExchangeFormatter.cs: Changed some declaration from
1054         protected to private.
1055         * RSAPKCS1SignatureDeformatter.cs: Changed some declaration from
1056         protected to private.
1057         * RSAPKCS1SignatureFormatter.cs: Changed some declaration from
1058         protected to private.
1059         * SHA1CryptoServiceProvider.cs: Moved SHA1 code to SHA1Internal.
1060         SHA1CryptoServiceProvider now use SHA1Internal. Added Dispose and
1061         destructor.
1062         * SHA1Managed.cs: New. Use SHA1Internal. Same as 
1063         SHA1CryptoServiceProvider but is required for binary compatibility.
1064         * SHA256Managed.cs: Changed some declaration from protected to private.
1065         * SHA384Managed.cs: Changed some declaration from protected to private.
1066         * SHA512Managed.cs: Changed some declaration from protected to private.
1067         * SymmetricAlgorithm.cs: Added Clear(), changed Dispose() and added
1068         virtual to Dispose(bool).
1069         * ToBase64Transform.cs: Added missing virtual to CanReuseTransform.
1070         Changed Dispose().
1071         * TripleDESCryptoServiceProvider.cs: Added missing sealed to class
1072         declaration.
1073
1074 2002-11-03  Sebastien Pouliot  <spouliot@videotron.ca>
1075
1076         * CryptoAPITransform.cs: Added missing CanReuseTransform property,
1077         Clear method, destructor and IDisposable support.
1078         * CryptographicException.cs: Added missing protected constructor.
1079         * CryptographicUnexpectedOperationException.cs: Added missing 
1080         protected constructor.
1081         * ICryptoTransform.cs: Added missing CanReuseTransform property.
1082         * FromBase64Transform.cs: Added missing CanReuseTransform property,
1083         Clear method, destructor and IDisposable support.
1084         * SymmetricAlgorithm.cs: Implement IDisposable.
1085         * ToBase64Transform.cs: Added missing CanReuseTransform property,
1086         Clear method, destructor and IDisposable support.
1087
1088 2002-11-02  Sebastien Pouliot  <spouliot@videotron.ca>
1089
1090         * SignatureDescription.cs: Updated class to match unit test results
1091         * X509Certificate.cs: REMOVED! Wrong namespace. An almost complete
1092         implementation is now in System.Security.Cryptography.X509Certificates
1093
1094 2002-11-01  Sebastien Pouliot  <spouliot@videotron.ca>
1095
1096         * bouncycastle.txt: Bouncy Castle JCE License.
1097         * SHA384Managed.cs: Hash implementation based on BouncyCastle JCE.
1098         * SHA512Managed.cs: Hash implementation based on BouncyCastle JCE.
1099
1100 2002-10-30  Sebastien Pouliot  <spouliot@videotron.ca>
1101
1102         * DSASignatureDeformatter.cs: Fully implemented - however it 
1103         requires a functionnal DSA implementation to work.
1104         * DSASignatureFormatter.cs: Fully implemented - however it 
1105         requires a functionnal DSA implementation to work.
1106
1107 2002-10-25  Sebastien Pouliot  <spouliot@videotron.ca>
1108
1109         * PasswordDeriveBytes.cs: New. PKCS#5 key derivation (PBKDF1) works up to
1110         HashSize length (but MS support longer keys)
1111
1112 2002-10-24  Sebastien Pouliot  <spouliot@videotron.ca>
1113
1114         * RSACryptoServiceProvider.cs: New. Implemented most logic expect crypto 
1115         * RSAOAEPKeyExchangeDeformatter.cs: New. Stub.
1116         * RSAOAEPKeyExchangeFormatter.cs: New. Stub.
1117         * RSAPKCS1KeyExchangeDeformatter.cs: New. Stub.
1118         * RSAPKCS1KeyExchangeFormatter.cs: New. 98% implemented but still
1119         require RSA.DecryptValue (not supported in MS .NET Framework)
1120         * RSAPKCS1SignatureDeformatter.cs: New. Stub.
1121         * RSAPKCS1SignatureFormatter.cs: New. Stub.
1122
1123 2002-10-23  Sebastien Pouliot  <spouliot@videotron.ca>
1124
1125         * SymmetricAlgorithm.cs: Fixed CFB mode (do encryption while decrypting!)
1126         * TripleDESCryptoServiceProvider.cs: Ajusted for CFB.
1127
1128 2002-10-22  Sebastien Pouliot  <spouliot@videotron.ca>
1129
1130         * RjindaelManaged.cs: Fixed decryption for 192 and 256 bit block size
1131
1132 2002-10-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1133
1134         * RC2CryptoServiceProvider.cs: fixed end of lines (changed from \r
1135         to \n).
1136
1137 2002-10-20  Sebastien Pouliot  <spouliot@videotron.ca>
1138
1139         * SymmetricAlgorithm.cs: Added better Dispose support
1140         * DES.cs: Now only contains the abstract DES class.
1141         * DESCryptoServiceProvider.cs: Added the DESTransform class (inherited
1142         from SymmetricTransform) based the old DESCore and DESTransformBase code
1143         * RC2.cs: Fixed EffectiveKeySize == 0
1144         * RC2CryptoServiceProvider.cs: Added the RC2Transform class (inherited
1145         from SymmetricTransform) based on the old RC2lImpl code. Unrolled some loops.
1146         * RjindaelManaged.cs: Few more optimizations while looking for decrypting bug
1147         * TripleDESCryptoServiceProvider.cs: New. Implement TripleDESTransform from 
1148         DESTransform (non-optimal but working :-).
1149
1150 2002-10-19  Sebastien Pouliot  <spouliot@videotron.ca>
1151
1152         * SymmetricAlgorithm.cs: Added new class SymmetricTransform to avoid
1153         duplicating CipherMode (currently ECB, CBC) and PaddingMode functionalities
1154         in every crytographic algorithm implementation.
1155         * RijndaelManaged.cs: Added the RjindaelTransform class (inherited
1156         from SymmetricTransform) based the old RijndaelImpl / RijndaelController 
1157         code. Fixed encryption for block size 192, 256, there is still a problem
1158         decrypting block size 192, 256. Unrolled some loops + littl'optimizations
1159         * PKCS1MaskGenerationMethod.cs: Removed Array.Reverse in I2OSP to be
1160         compatible with MS implementation (however we are now failing the PKCS#1
1161         test vector) + added some more checks (null, overflow, ...)
1162         * AsymmetricAlgorithm.cs: Commented XMLDocument stuff to end the cyclic
1163         dependency (corlib->System.Xml->corlib)
1164         * RSA.cs: Commented FromXmlString stuff to end the cyclic dependency
1165         * DSA.cs: Commented FromXmlString stuff to end the cyclic dependency
1166         * RC2.cs: Create using CryptoConfig
1167         * TripleDES.cs: Marked class public. Added LegalKeySizes and LegalBlockSizes
1168
1169 2002-10-14  Sebastien Pouliot  <spouliot@videotron.ca>
1170
1171         * MD5.cs: Create using CryptoConfig, set HashSizeValue, removed TODO.
1172         * Rijndael.cs: Create using CryptoConfig. Removed TODO.
1173         * RSAParameters.cs: Modulus must be serialized. Removed TODO.
1174         * SHA256.cs: Create using CryptoConfig, set HashSizeValue, removed TODO.
1175         * SHA384.cs: Create using CryptoConfig, set HashSizeValue, removed TODO.
1176         * SHA512.cs: Create using CryptoConfig, set HashSizeValue, removed TODO.
1177         * FromBase64Transform.cs: Removed ToString()
1178         * ToBase64Transform.cs: Removed ToString()
1179         * SymmetricAlgorithm.cs: Create using CryptoConfig, set default Mode and 
1180         Padding, added Clear, Dispose
1181         * TripleDES.cs: New. Abstract class.
1182         * MaskGenerationMethod.cs: New. Abstract class.
1183         * PKCS1MaskGenerationMethod.cs: New. Implement PKCS#1 MGF (currently not 
1184         compatible with MS implementation - but not sure the bug is mine!).
1185
1186 2002-10-13  Sebastien Pouliot  <spouliot@videotron.ca>
1187
1188         * HashAlgorithm.cs: Added Dispose() to HashAlgorithm because it 
1189         inherits ICryptoTransform
1190         * KeyedHashAlgorithm.cs: New implementation
1191         * HMACSHA1.cs: New (include a generic HMACAlgorithm as internal class)
1192         * MACTripleDES.cs: New (missing core implementation on generic MACAlgorithm)
1193         * CryptoStream.cs: Added limited functionalities to support HMACSHA1
1194
1195 2002-10-12  Sebastien Pouliot  <spouliot@videotron.ca>
1196
1197         * DSA.cs: changed constructor to public from internal (like MS)
1198         * HashAlgorithm.cs: Completed ComputeHash methods
1199         * SHA1.cs: Added HashSizeValue = 160
1200
1201 2002-10-12  Sebastien Pouliot  <spouliot@videotron.ca>
1202
1203         * ICryptoTransform.cs: Now inherits from IDisposable
1204         * RC2CryptoServiceProvider.cs: Added Dispose() to RC2Impl because it inherits ICryptoTransform
1205         * CryptoAPITransform.cs: Added Dispose() to CryptoAPITransform... ICryptoTransform
1206         * RijndaelManaged.cs: Added Dispose() to RijndaelController...ICryptoTransform
1207         * FromBase64Transform.cs: Added Dispose() to FromBase64Transform...ICryptoTransform
1208         * ToBase64Transform.cs: Added Dispose() to ToBase64Transform...ICryptoTransform
1209         * DESCryptoServiceProvider.cs: Added Dispose() to DESTransformBase...ICryptoTransform
1210
1211 2002-10-11  Duncan Mak  <duncan@ximian.com>
1212
1213         * DESCryptoServiceProvider.cs: Removed unnecessary Dispose ().
1214
1215 2002-10-11  Sebastien Pouliot  <spouliot@videotron.ca>
1216
1217         * DES.cs: Create() using CryptoConfig, fix #30256
1218         * DESCryptoServiceProvider.cs: fix #30256
1219         * RandomNumberGenerator.cs: uncomment in Create(rng) for CryptoConfig
1220
1221 2002-10-10  Sebastien Pouliot  <spouliot@videotron.ca>
1222
1223         * AsymmetricAlgorithm.cs: Inherit from IDisposable, common support from XML import
1224         * DSA.cs: FromXmlString() keypair import, Create() using CryptoConfig
1225         * RSA.cs: FromXmlString() keypair import, Create() using CryptoConfig
1226         * DSACryptoServiceProvider.cs: Added Dispose()
1227
1228 2002-10-09  Sebastien Pouliot  <spouliot@videotron.ca>
1229
1230         * CryptoConfig.cs: New implementation
1231
1232 2002-10-05  Andrew Birkett  <andy@nobugs.org>
1233
1234         * RC2CryptoServiceProvider.cs: New implementation
1235         * RC2.cs: New implementation
1236
1237 2002-09-22  Andrew Birkett  <andy@nobugs.org>
1238
1239         * RijndaelManaged.cs: Added faster case for multiplication by 2 in GF(8)
1240         
1241 2002-09-22  Andrew Birkett  <andy@nobugs.org>
1242
1243         * RijndaelManaged.cs: BlockSize now reports size in bytes.
1244         * ICryptoTransform.cs: Updated comments - BlockSizes are in bytes, unlike elsewhere.
1245
1246 2002-09-19  Andrew Birkett  <andy@nobugs.org>
1247
1248         * Rijndael.cs: Create() now gives you a RijndaelManaged object
1249         * RijndaelManaged.cs: Added dummy GenerateKey until we have a proper RNG.
1250         * SymmetricAlgorithm.cs: Updated comments
1251
1252 2002-09-15  Andrew Birkett  <andy@nobugs.org>
1253
1254         * RijndaelManaged.cs: Added support for CBC-mode, PKCS7/Zero padding.
1255         * SymmetricAlgorithm.cs: IV size must match block size, not key size.  
1256           Key property now sets KeySizeValue correctly in bits.
1257
1258 2002-09-11  Andrew Birkett  <andy@nobugs.org>
1259
1260         * RijndaelManaged.cs: Implemented ECB-mode Rijndael cipher.
1261         * Rijndael.cs: Set valid key/block sizes.
1262         * SymmetricAlgorithm.cs: Remove throw from ctr so we can instantiate
1263           derived classes.  Fixes to key sizes so they are measured in bits.
1264         * KeySizes.cs: Updated comments to emphasize that sizes are in bits.
1265
1266 2002-06-29  Martin Baulig  <martin@gnome.org>
1267
1268         * AsymmetricAlgorithm.cs: Removed a duplicate semicolon to make it compile.
1269
1270 2002-05-19  Martin Baulig  <martin@gnome.org>
1271
1272         * FromBase64Transform.cs (TransformFinalBlock): The return value of
1273         `DoTransform' tells us the number of bytes actually written - if it's
1274         smaller than `res', copy it to a smaller array.
1275
1276 2002-02-21  Mark Crichton <crichton@gimp.org>
1277
1278         * RNGCryptoServiceProvider.cs: New file.
1279         * RandomNumberGenerator.cs: Constructor is now marked public.
1280
1281 2002-02-13  Dan Lewis <dihlewis@yahoo.co.uk>
1282
1283         * DSACryptoServiceProvider.cs, SHA384Managed.cs, SHA512Managed.cs,
1284         Rijndael.cs, RSA.cs, RSAParameters.cs : New files (stubs)
1285
1286 Mon Feb 11 13:26:17 CET 2002 Paolo Molaro <lupus@ximian.com>
1287
1288         * X509Certificates: dummy class.
1289
1290 2002-01-10  Duco Fijma <duco@lorentz.xs4all.nl>
1291         * Create (trivial) implementation of RandomNumberGenerator
1292
1293 2002-01-05  Ravi Pratap  <ravi@ximian.com>
1294
1295         * CryptoAPITransform.cs, DESCryptoProvider.cs : MonoTODO attribute
1296         decoration.
1297
1298         * HashAlgorithm.cs, MD5.cs, SHA1.cs, SHA256.cs, SHA384.cs : Ditto.
1299
1300         * SHA512.cs, SymmetricAlgorithm.cs, ToBase64Transform.cs, 
1301         AsymmetricAlgorithm.cs, CryptoStream.cs, DSA.cs, DSASignatureDeformatter.cs,
1302         DSASignatureFormatter.cs, SignatureDescription.cs : Ditto.
1303         
1304 Wed Nov 14 17:04:30 CET 2001 Paolo Molaro <lupus@ximian.com>
1305
1306         * MD5CryptoServiceProvider.cs, SHA1CryptoServiceProvider.cs,
1307         SHA256Managed.cs: CLSCompliant updates.
1308
1309 2001-10-11  Thomas Neidhart <tome@sbox.tugraz.at>
1310
1311         * CryptoAPITransform.cs: Initial version
1312         * CryptoStream.cs: Initial version
1313         * CspParameter.cs: Initial version
1314         * CspProviderFlags.cs: Initial version
1315         * DSA.cs: Initial version
1316         * DSAParameters.cs: Initial version
1317         * DSASignatureDeformatter.cs: Initial version
1318         * DSASignatureFormatter.cs: Initial version
1319         * DeriveBytes.cs: Initial version
1320
1321 2001-10-06  Thomas Neidhart <tome@sbox.tugraz.at>
1322
1323     * AsymmetricAlgorithm.cs: Inital version
1324         * AsymmetricKeyExchangeDeformatter.cs: Initial version
1325         * AsymmetricKeyExchangeFormatter.cs: Initial version
1326         * AsymmetricSignatureDeformatter.cs: Initial version
1327         * AsymmetricSignatureFormatter.cs: Initial version
1328         * PaddingMode.cs: Added PaddingMode.None
1329         * SignatureDescription.cs: Initial version
1330     * CryptographicException.cs: Initial version
1331         * CryptographicUnknownOperationException.cs: Initial version
1332         * SymmetricAlgorithm.cs: Implemented CreateDecryptor, CreateEncryptor
1333           and Create() methods.
1334         
1335 2001-08-20  Sergey Chaban <serge@wildwestsoftware.com>
1336
1337         * DES.cs encryption core is about 30% faster than previous version.
1338         * DESCryptoServiceProvider.cs added PKCS-5 padding.
1339
1340 2001-08-09  Sergey Chaban <serge@wildwestsoftware.com>
1341
1342         * ToBase64Transform.cs: Base64Table now supports both encoding
1343           and decoding tables. As a result Table was renamed to EncodeTable
1344           and DecodeTable was added.
1345         * FromBase64Transform.cs: Initial check-in.
1346         * DES.cs: Initial check-in.
1347         * DESCryptoServiceProvider.cs: Initial check-in.
1348
1349 2001-08-01  Matthew S. Ford  <Matthew.S.Ford@Rose-Hulman.Edu>
1350
1351         * CipherMode.cs: Initial version.
1352         * CryptoStreamMode.cs: Initial version.
1353         * HashAlgorithm.cs: Initial version.
1354         * ICryptoTransform.cs: Initial version.
1355         * KeySizes.cs: Initial version.
1356         * MD5.cs: Initial version.
1357         * MD5CryptoServiceProvider.cs: Initial version.
1358         * PaddingMode.cs: Initial version.
1359         * SHA1.cs: Initial version.
1360         * SHA1CryptoServiceProvider.cs: Initial version.
1361         * SHA256.cs: Initial version.
1362         * SHA256Managed.cs: Initial version.
1363         * SHA384.cs: Initial version.
1364         * SHA512.cs: Initial version.