[Mono-bugs] [Bug 76398][Nor] Changed - SymmetricTransform.TransformFinalBlock only works once.

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Mon Oct 10 22:07:39 EDT 2005

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by sebastien at ximian.com.


--- shadow/76398	2005-10-10 11:10:35.000000000 -0400
+++ shadow/76398.tmp.18272	2005-10-10 22:07:39.000000000 -0400
@@ -1,14 +1,14 @@
 Bug#: 76398
 Product: Mono: Class Libraries
 Version: 1.1
 OS: SUSE 9.2
 OS Details: 
-Status: NEW   
+Status: RESOLVED   
+Resolution: WONTFIX
+Severity: Unknown
 Priority: Normal
 Component: CORLIB
 AssignedTo: mono-bugs at ximian.com                            
 ReportedBy: JoergR at voelcker.com               
 QAContact: mono-bugs at ximian.com
 TargetMilestone: ---
@@ -40,6 +40,34 @@
 Runs with MS.NET.
 ------- Additional Comments From JoergR at voelcker.com  2005-10-10 11:10 -------
 Created an attachment (id=15895)
 Test Case
+------- Additional Comments From sebastien at ximian.com  2005-10-10 22:07 -------
+Yes this is a (known) difference between .NET and Mono. But depending
+on this behaviour as a _very_bad_ thing (i.e. that's looking for trouble).
+Why ? because the creation of cryptographic algorithms can be changed,
+without recompiling applications, by changing the file machine.config
+to point to a different implementation (e.g. hardware assisted
+cryptography, a bug in the default implementation - like MS changed
+the default SHA1 from SHA1CryptoServiceProvider to SHA1Managed for
+WSE1, ...).
+So ? Your sample code is "bad". There's no guarantee that another
+_legal_ transform implementation will "behave" exactly like the
+"original" one. There are two key "properties" here (a)
+CanReuseTransform (which is causing this "bug" as it returns true on
+MS and false on Mono) and (b) CanTransformMultipleBlock - and you
+can't be 100% sure of the value they return until you call them (it
+could change in a future version of the framework, between SP, when
+adding new software...).
+How to fix this ? 
+* the easy way is to use a CryptoStream - which will not use
+transforms in ways they do not support (e.g. reuse, multiple blocks); 
+* call both properties (and adjust the code) before using any crypto

More information about the mono-bugs mailing list