svn path=/trunk/mcs/; revision=104772
[mono.git] / mcs / class / corlib / Mono.Security.Cryptography / ChangeLog
1 2008-04-21  Sebastien Pouliot  <sebastien@ximian.com>
2
3         * CryptoConvert.cs: Fix HMAC to respect start index inside an array.
4         Patch by Kazuki Oikawa.
5
6 2008-03-13  Sebastien Pouliot  <sebastien@ximian.com>
7
8         * CryptoConvert.cs: Re-order exception handling to report the most
9         precise error to caller. Apply RSA extra check to DSA.
10         * RSAManaged.cs: Test imported parameters to ensure the public and 
11         private parts of the keypair match together.
12
13 2008-03-04  Sebastien Pouliot  <sebastien@ximian.com>
14
15         * SymmetricTransform.cs: Fix ANSIX923 padding check (#366623) to be
16         just like PKCS7 (but comparing to 0).
17
18 2008-02-03  Sebastien Pouliot  <sebastien@ximian.com>
19
20         * DSAManaged.cs: Replace "" (found by Gendarme) with more useful text.
21         * RSAManaged.cs: Replace "" (found by Gendarme) with more useful text.
22
23 2008-01-10  Sebastien Pouliot  <sebastien@ximian.com>
24
25         * PKCS1.cs: Add a new method that optionally checks for badly 
26         padding, technically invalid, PKCS#1 block. This is required to
27         support timestamping verification for Authenticode (since the 
28         main timestamping service does this). Fix for #350958
29
30 2007-11-18  Sebastien Pouliot  <sebastien@ximian.com>
31
32         * RSAManaged.cs: Fix the rare case where the inverse of q modulo p 
33         can result in bigint one byte shorter than expected, which could 
34         mess up the export/import of the key.
35
36 2007-05-08  Sebastien Pouliot  <sebastien@ximian.com>
37
38         * CryptoConvert.cs: Sync with Mono.Security version - mostly the patch
39         from Randolph Chung to add DSA CAPI BLOB support.
40
41 2007-05-08  Randolph Chung  <tausq@debian.org>
42
43         * DSAManaged.cs: Do not reject the input if only Y is null.
44         Fixes #81558. [small edits from Sebastien]
45
46 2007-03-22  Sebastien Pouliot  <sebastien@ximian.com>
47
48         * SymmetricTransform.cs: Before 2.0 an IndexOutOfRangeException was 
49         thrown (for all unmanaged transforms) in case of an overflow.
50
51 2007-03-05  Sebastien Pouliot  <sebastien@ximian.com>
52
53         * SymmetricTransform.cs: Fix KeepLastBlock to be true for decryption 
54         with no padding or zero padding. Part of the fix for #81008.
55
56 2007-01-08  Sebastien Pouliot  <sebastien@ximian.com>
57
58         * SymmetricTransform.cs: Fix #80439 again. This time we have tests for
59         all ciphers, modes and padding.
60
61 2007-01-04  Sebastien Pouliot  <sebastien@ximian.com>
62
63         * SymmetricTransform.cs: Fix previous fix (for #80439) as we were now
64         too permissive.
65
66 2007-01-03  Sebastien Pouliot  <sebastien@ximian.com>
67
68         * SymmetricTransform.cs: Reduce inputCount if larger than the output
69         data can hold. Fix bug #80439.
70
71 2006-12-11  Sebastien Pouliot  <sebastien@ximian.com>
72
73         * PKCS8.cs: Synchronize source with Mono.Security.dll
74
75 2006-09-27  Sebastien Pouliot  <sebastien@ximian.com>
76
77         * RSAManaged.cs: Ensure that the results of Encrypt and Decrypt will
78         always be the same length as the key. If smaller then we left pad the
79         result with 0x00 (same integer, correct length for everyone). Fix bug
80         #79502 where an LDAP/SSL server didn't like the missing byte.
81
82 2006-09-05  Sebastien Pouliot  <sebastien@ximian.com>
83
84         * RSAManaged.cs: Fix a NRE when decrypting without a private key 
85         (#79269). We now throw a CryptographicException with an appropriate
86         text message.
87
88 2006-06-15  Sebastien Pouliot  <sebastien@ximian.com>
89
90         * CryptoTools.cs: Fix offset in block processor. This fix the HMAC
91         algorithms when large buffer where used (with multiple calls to
92         TransformBlock).
93
94 2005-11-23  Sebastien Pouliot  <sebastien@ximian.com>
95
96         * SymmetricTransform.cs: Virtualized some methods (like Dispose). Fix
97         bug #76801.
98
99 2005-11-22  Sebastien Pouliot  <sebastien@ximian.com>
100
101         * DSAManaged.cs: Don't export J if it wasn't imported (i.e. it was 
102         calculated from the other parameters).
103
104 2005-10-21  Sebastien Pouliot  <sebastien@ximian.com>
105
106         * SymmetricTransform.cs: Clone IV so it cannot be changed once the 
107         transform starts. Generate a new IV if null is specified (not really
108         useful but compatible with MS behaviour). Added a check for IV length
109         on 2.0.
110
111 2005-05-26  Ben Maurer  <bmaurer@ximian.com>
112
113         * KeyPairPersistence.cs: Lock *before* checking if things are null
114         to prevent race conditions. Also, do not lock on typeof object.
115
116 2005-05-09  Sebastien Pouliot  <sebastien@ximian.com>
117
118         * KeyPairPersistence.cs: Use PlatformID.Unix under NET_2_0. 
119
120 2005-04-27  Sebastien Pouliot  <sebastien@ximian.com>
121
122         * PKCS8.cs: New. Copied from Mono.Security.dll to allow support of
123         PKCS#12 files in X509Certificate for 2.0.
124
125 2005-04-18  Sebastien Pouliot  <sebastien@ximian.com>
126
127         * SymmetricTransform.cs: Fixed a division by zero if someone changes 
128         the feedback value to 0.
129
130 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
131
132         * SymmetricTransform.cs: Fixed a padding bug affecting that can occurs
133         when no padding is used.
134
135 2005-01-11  Sebastien Pouliot  <sebastien@ximian.com>
136
137         * DSAManaged.cs: PublicOnly now reports false when a key hasn't yet 
138         been generated.
139         * RSAManaged.cs: PublicOnly now reports false when a key hasn't yet 
140         been generated.
141
142 2005-01-10  Sebastien Pouliot  <sebastien@ximian.com>
143
144         * MACAlgorithm.cs: Added support for different padding modes (required
145         in 2.0).
146         * SymmetricTransform.cs: Added support for ANSI X9.23 padding and
147         ISO 10126 padding modes (applies to all symmetric block ciphers).
148
149 2004-12-22  Sebastien Pouliot  <sebastien@ximian.com>
150
151         * KeyPairPersistence.cs: Commented imperative asserts until it is 
152         supported by the runtime.
153
154 2004-12-06  Sebastien Pouliot  <sebastien@ximian.com>
155
156         * RSAManaged.cs: Implement key blinding for RSA decryption with, or
157         without, using CRT.
158
159 2004-11-23  Sebastien Pouliot  <sebastien@ximian.com>
160
161         * PKCS1.cs: Fix PKCS#1 v1.5 decryption when the ciphertext isn't 
162         exactly the same of the public key (which happens sometimes on Fx 1.1
163         probably because it doesn't do the last I2OSP operation to left pad
164         the resulting big integer with zeros).
165
166 2004-10-28  Sebastien Pouliot  <sebastien@ximian.com>
167
168         * KeyPairPersistence.cs: Added localization for exceptions messages.
169         Also added more details (type and path) when an exception is thrown.
170
171 2004-09-29  Sebastien Pouliot  <sebastien@ximian.com>
172
173         * RSAManaged.cs: KeySize is always a multiple of 8 bits (promotion to
174         a bigger size if required) to match MS implementation (and other 
175         issues like SSL).
176
177 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
178
179         * CryptoConvert.cs: Fixed warning (l4) for unused variables.
180         * KeyPairPersistence.cs: Fixed warning (l4) for unused variable.
181         * PKCS1.cs: Added empty {} to fix warning about possible empty stmnt.
182
183 2004-07-07  Sebastien Pouliot  <sebastien@ximian.com>
184
185         * MACAlgorithm.cs: Removed the hardcoded PaddingMode.Zeros as this is 
186         now selectable in Fx 2.0.
187         * SymmetricTransform.cs: Throw CryptographicException when CipherMode
188         CTS or OFB is being used (to match MS implementation).
189
190 2004-06-23  Sebastien Pouliot  <sebastien@ximian.com>
191
192         * SymmetricTransform.cs: Reduce by one the number of block when 
193         decrypting. This operation was in CryptoStream before but is only
194         required for decryption (which CryptoStream can't know). 
195         Fix bug #60573.
196
197 2004-05-27  Sebastien Pouliot  <sebastien@ximian.com>
198
199         * SymmetricTransform.cs: Fixed possible integer overflow. Added 
200         missing exception handling in TransformBlock and TransformFinalBlock.
201
202 2004-05-01  Sebastien Pouliot  <sebastien@ximian.com>
203
204         * CryptoConvert.cs: Synched with Mono.Security.dll. Fix bug #57941 
205         (truncated key pair).
206         * RSAManaged.cs: Synched with Mono.Security.dll. Fix bug #57941 
207         (truncated key pair).
208
209 2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
210
211         * CryptoConvert.cs: In sync with Mono.Security.dll version.
212         * CryptoTools.cs: In sync with Mono.Security.dll version.
213         * DSAManaged.cs: Changed delegate to please FxCop.
214         * PKCS1.cs: In sync with Mono.Security.dll version.
215         * RSAManaged.cs: In sync with Mono.Security.dll version.
216         * SymmetricTransform.cs: Fixed a bug when offset > 0 in destination
217         buffer. Changed Array.Copy to Buffer.BlockCopy.
218
219 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
220
221         * KeyPairPersistence.cs: Completed key pair protection for both
222         Linux and Windows (protection done by runtime).
223
224 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
225
226         * PKCS1.cs: Use BitConverterLE
227
228 2004-04-06  Bernie Solomon  <bernard@ugsolutions.com>
229
230         * CryptoConvert.cs: Add private methods to always
231         handle data as little endian (GetBytesLE, ToInt32LE, ToUInt32LE).
232
233 2004-03-23  Sebastien Pouliot  <sebastien@ximian.com>
234
235         * CryptoConvert.cs: Added support for public keys preceded by an 
236         header like the one generated by "sn -e".
237
238 2004-03-23  Sebastien Pouliot  <sebastien@ximian.com>
239
240         * CryptoConvert.cs: Added exception for null and bad parameters.
241         * RSAManaged.cs: CryptographicException thrown when trying to export
242         the private key when only the public key is present (CRT aware).
243
244 2004-03-22  Sebastien Pouliot  <sebastien@ximian.com>
245
246         * CryptoConvert.cs: Added new methods to convert [From|To]Hex. Added
247         new version of FromCapiPublicKeyBlob with an integer offset.
248
249 2004-02-06  Sebastien Pouliot  <sebastien@ximian.com>
250
251         * DSAManaged.cs: Added an event after key generation (so that
252         DSACryptoServiceProvider can persist the keypair if required). Added
253         PublicOnly property (like 1.2) so we do not have to catch an exception
254         to know if a private key is present or not. Added a Random property so
255         we do not always have to create a RNG instance (not always required).
256         * RSAManaged.cs: Added an event after key generation (so that
257         DSACryptoServiceProvider can persist the keypair if required). Added
258         PublicOnly property (like 1.2) so we do not have to catch an exception
259         to know if a private key is present or not.
260         * SymmetricTransform.cs: This class was split from S.S.C.
261         SymmetricAlgorithm.cs so it could be reused in Mono.Security 
262         assembly for other symmetric algorithms transforms.
263
264 2004-02-05  Sebastien Pouliot  <sebastien@ximian.com>
265
266         * KeyPairPersistence.cs: New. Class to persist keypairs in an XML
267         format to mimic the CryptoAPI key containers.
268
269 2004-01-12  Sebastien Pouliot  <spouliot@videotron.ca>
270
271         * CryptoConvert.cs: RSA doesn't start with a Q - at least that what
272         a strongname told me. Sorry Ron :(
273
274 2003-12-15  Sebastien Pouliot  <spouliot@videotron.ca>
275
276         * MACAlgorithm.cs: Fixed difference between 1.0 and 1.1 framework. 
277         The 1.0 framework is adding an additional  padding block (empty) 
278         to MAC when MACing an exact multiple of the TripleDES block size.
279         * PKCS1.cs: Fixed a typo which prevented "lame" (without OID) 
280         signature verification.
281
282 2003-10-30  Sebastien Pouliot  <spouliot@videotron.ca>
283
284         * CryptoConvert.cs: Fixed strongname generation for small exponents 
285         (like 17). Part of the fixed for bug #50341.
286
287 2003-10-17  Sebastien Pouliot  <spouliot@videotron.ca>
288
289         * CryptoConvert.cs: Added from Mono.Security to support StrongNames.
290
291 2003-07-05  Sebastien Pouliot  <spouliot@videotron.ca>
292
293         * DSAManaged.cs: Fixed bugs that appeared with the new unit tests.
294         * RSAManaged.cs: Fixed bugs that appeared with the new unit tests.
295
296 2003-07-02  Zoltan Varga  <vargaz@freemail.hu>
297
298         * PKCS1.cs DSAManaged.cs: Changed strange characters in comments to 
299         human-readable ones, since they break XML export in monocov.
300
301 2003-06-15  Sebastien Pouliot <spouliot@motus.com>
302
303         * RSAManaged.cs: Now includes CRT (Chinese Remainder Theorem) 
304         optimization when using the private key (DecryptValue). This
305         cut more than 5 seconds of nunit on my system (out of 14 sec
306         for complete asymmetric tests). Thanks to Ben Maurer for help!
307
308 2003-06-11  Sebastien Pouliot <spouliot@motus.com>
309
310         * DSAManaged.cs: Refactored from DSACryptoServiceProvider.cs. Cannot
311         be reused outside [ms]corlib because DSA constructor is internal :-(
312
313         * PKCS1.cs: Now support any hash algorithm when encoding PKCS 1.5
314         (i.e. not limited to pre-calculated values for known hashes). Some
315         other API changes to ease the use of other hash algorithms.
316
317         * RSAManaged.cs: Refactored from RSACryptoServiceProvider.cs. This 
318         class is required for custom PKCS#1 padding in SSL (which is not 
319         possible using RSACryptoServiceProvider).
320
321 2003-05-12  Sebastien Pouliot  <spouliot@videotron.ca>
322
323         * PKCS1.cs: Corrected I2OSP to match PKCS#1 v.2.1 test vector
324         and fix the OAEP incompatibility issue.
325
326 2003-04-01  Sebastien Pouliot  <spouliot@videotron.ca>
327
328         * PKCS1.cs: Corrected fix (partially) for the lame PKCS1 v1.5
329         signatures done without specifying an OID.
330         
331 2003-03-01  Sebastien Pouliot  <spouliot@videotron.ca>
332
333         * PKCS1.cs: Fix for some (lame) PKCS1 v1.5 signatures done
334         without specifying an OID.
335
336 2003-02-08  Sebastien Pouliot  <spouliot@videotron.ca>
337
338         * CryptoTools.cs: Renamed namespace to match new location.
339         * PKCS1.cs: Renamed namespace to match new location.
340         * HMACAlgorithm.cs: New. Generic class to implement HMAC
341         using any hash algorithm (was in S.S.C.HMACSHA1.cs).
342         * MACAlgorithm.cs: New. Generic class to implement MAC
343         using any symmetric algorithm (was in S.S.C.MACTripleDES.cs).
344