fix for DSA
authorEgorBo <egorbo@gmail.com>
Tue, 19 Sep 2017 14:29:34 +0000 (17:29 +0300)
committerMarek Safar <marek.safar@gmail.com>
Wed, 20 Sep 2017 12:34:13 +0000 (14:34 +0200)
mcs/class/corlib/System.Security.Cryptography/DSACryptoServiceProvider.cs
mcs/class/corlib/Test/System.Security.Cryptography/DSACryptoServiceProviderTest.cs

index ceef9625fe5ae26c34889a8bdeffc8f5ee47d38b..07200f28b4e90e0b126da82922e3c8aa6cbf1619 100644 (file)
@@ -114,6 +114,7 @@ namespace System.Security.Cryptography {
                                persisted = true;
                                this.FromXmlString (store.KeyValue);
                        }
+                       privateKeyExportable = (parameters.Flags & CspProviderFlags.UseNonExportableKey) == 0;
                }
 
                ~DSACryptoServiceProvider ()
index e56a20c75cd3ce2c0797c843aad267d91a7354f0..ac005e2711ad4262a087e309e7924682803f47bc 100644 (file)
@@ -1046,6 +1046,16 @@ public class DSACryptoServiceProviderTest {
                dsa = new DSACryptoServiceProvider (minKeySize);
                dsa.ImportCspBlob (blob);
        }
+
+       [Test] //bug 38054
+       public void NonExportableKeysAreNonExportable ()
+       {
+               var cspParams = new CspParameters (13, null, "Mono1024");
+               cspParams.KeyContainerName = "TestDSAKey";
+               cspParams.Flags = CspProviderFlags.UseNonExportableKey;
+               var rsa = new DSACryptoServiceProvider(cspParams);
+               Assert.Throws<CryptographicException>(() => rsa.ExportParameters(true));
+       }
 }
 
 }