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