[Mono-bugs] [Bug 72742][Wis] Changed - RSACryptoServiceProvider fails to persist via CspProviderFlags.UseMachineKeyStore
bugzilla-daemon@bugzilla.ximian.com
bugzilla-daemon@bugzilla.ximian.com
Fri, 18 Feb 2005 16:51:24 -0500 (EST)
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@ximian.com.
http://bugzilla.ximian.com/show_bug.cgi?id=72742
--- shadow/72742 2005-02-18 16:17:29.000000000 -0500
+++ shadow/72742.tmp.23200 2005-02-18 16:51:24.000000000 -0500
@@ -1,16 +1,16 @@
Bug#: 72742
Product: Mono: Class Libraries
Version: 1.1
-OS:
+OS: unknown
OS Details: Fedora Core 3
-Status: NEW
-Resolution:
-Severity:
+Status: RESOLVED
+Resolution: NOTABUG
+Severity: Unknown
Priority: Wishlist
-Component: System.Security
+Component: CORLIB
AssignedTo: mono-bugs@ximian.com
ReportedBy: met@uberstats.com
QAContact: mono-bugs@ximian.com
TargetMilestone: ---
URL:
Cc:
@@ -38,6 +38,44 @@
Everytime unless I create the directory.
Additional Information:
The quick fix was to create /usr/share/.mono and /usr/share/.mono/keypairs
as it didn't try and create them. But the thing to note is my installation
prefix is /usr/local/mono so /usr/share/.mono doesn't seem right either way.
+
+------- Additional Comments From sebastien@ximian.com 2005-02-18 16:51 -------
+The code _does_ try to create *and* protect the directory, however it
+failed to...
+
+<snippet>
+_machinePath = Path.Combine (
+ Environment.GetFolderPath
+(Environment.SpecialFolder.CommonApplicationData),
+ ".mono");
+_machinePath = Path.Combine (_machinePath, "keypairs");
+_machinePathExists = Directory.Exists (_machinePath);
+if (!_machinePathExists) {
+ try {
+ Directory.CreateDirectory (_machinePath);
+ ProtectMachine (_machinePath);
+ _machinePathExists = true;
+ }
+ catch (Exception e) {
+ string msg = Locale.GetText ("Could not create machine key store
+'{0}'.");
+ throw new CryptographicException (String.Format (msg, _machinePath), e);
+ }
+}
+</snippet>
+
+Note: UnauthorizedAccessException means that the current user (running
+your application) couldn't create and/or protect required the directory.
+
+As the code also show the base directory to keep the machine keys is
+Environment.SpecialFolder.CommonApplicationData)
+and has nothing to do with your prefix. This ensure that multiple Mono
+runtimes (e.g. 1.0/1.1) will share the same machine keypairs.
+
+That being said I discourage people from using the default persistance
+mechanism whenever possible (it's included for compatibility) and
+offer key management (creation, backup, replacement...) inside their
+applications.