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