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