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