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