namespace System.Security.Cryptography {
-#if NET_2_0
[ComVisible (true)]
public sealed class DSACryptoServiceProvider : DSA, ICspAsymmetricAlgorithm {
-#elif NET_1_1
- public sealed class DSACryptoServiceProvider : DSA {
-#else
- public class DSACryptoServiceProvider : DSA {
-#endif
private const int PROV_DSS_DH = 13; // from WinCrypt.h
private KeyPairPersistence store;
// least in the unit tests).
public DSACryptoServiceProvider ()
- : this (1024, null)
+ : this (1024)
{
}
}
public DSACryptoServiceProvider (int dwKeySize)
- : this (dwKeySize, null)
{
+ Common (dwKeySize, false);
}
public DSACryptoServiceProvider (int dwKeySize, CspParameters parameters)
+ {
+ bool has_parameters = parameters != null;
+ Common (dwKeySize, has_parameters);
+ if (has_parameters)
+ Common (parameters);
+ }
+
+ void Common (int dwKeySize, bool parameters)
{
LegalKeySizesValue = new KeySizes [1];
LegalKeySizesValue [0] = new KeySizes (512, 1024, 64);
dsa = new DSAManaged (dwKeySize);
dsa.KeyGenerated += new DSAManaged.KeyGeneratedEventHandler (OnKeyGenerated);
- persistKey = (parameters != null);
- if (parameters == null) {
- parameters = new CspParameters (PROV_DSS_DH);
-#if NET_1_1
- if (useMachineKeyStore)
- parameters.Flags |= CspProviderFlags.UseMachineKeyStore;
-#endif
- store = new KeyPairPersistence (parameters);
- // no need to load - it cannot exists
- }
- else {
- store = new KeyPairPersistence (parameters);
- store.Load ();
- if (store.KeyValue != null) {
- persisted = true;
- this.FromXmlString (store.KeyValue);
- }
+ persistKey = parameters;
+ if (parameters)
+ return;
+
+ var p = new CspParameters (PROV_DSS_DH);
+ if (useMachineKeyStore)
+ p.Flags |= CspProviderFlags.UseMachineKeyStore;
+ store = new KeyPairPersistence (p);
+ // no need to load - it cannot exists
+ }
+
+ void Common (CspParameters parameters)
+ {
+ store = new KeyPairPersistence (parameters);
+ store.Load ();
+ if (store.KeyValue != null) {
+ persisted = true;
+ this.FromXmlString (store.KeyValue);
}
}
get { return dsa.KeySize; }
}
-#if !NET_2_0
- public override KeySizes[] LegalKeySizes {
- get { return LegalKeySizesValue; }
- }
-#endif
-
public bool PersistKeyInCsp {
get { return persistKey; }
set { persistKey = value; }
}
-#if NET_2_0
[ComVisible (false)]
- public
-#else
- internal
-#endif
- bool PublicOnly {
+ public bool PublicOnly {
get { return dsa.PublicOnly; }
}
get { return "http://www.w3.org/2000/09/xmldsig#dsa-sha1"; }
}
-#if NET_1_1
- private static bool useMachineKeyStore = false;
+ private static bool useMachineKeyStore;
public static bool UseMachineKeyStore {
get { return useMachineKeyStore; }
set { useMachineKeyStore = value; }
}
-#endif
public override DSAParameters ExportParameters (bool includePrivateParameters)
{
return dsa.CreateSignature (rgbHash);
}
- public byte[] SignData (byte[] data)
+ public byte[] SignData (byte[] buffer)
{
// right now only SHA1 is supported by FIPS186-2
HashAlgorithm hash = SHA1.Create ();
- byte[] toBeSigned = hash.ComputeHash (data);
+ byte[] toBeSigned = hash.ComputeHash (buffer);
return dsa.CreateSignature (toBeSigned);
}
- public byte[] SignData (byte[] data, int offset, int count)
+ public byte[] SignData (byte[] buffer, int offset, int count)
{
// right now only SHA1 is supported by FIPS186-2
HashAlgorithm hash = SHA1.Create ();
- byte[] toBeSigned = hash.ComputeHash (data, offset, count);
+ byte[] toBeSigned = hash.ComputeHash (buffer, offset, count);
return dsa.CreateSignature (toBeSigned);
}
persisted = true;
}
}
-#if NET_2_0
// ICspAsymmetricAlgorithm
[MonoTODO ("call into KeyPairPersistence to get details")]
}
[ComVisible (false)]
- public void ImportCspBlob (byte[] rawData)
+ public void ImportCspBlob (byte[] keyBlob)
{
- if (rawData == null)
- throw new ArgumentNullException ("rawData");
- DSA dsa = CryptoConvert.FromCapiKeyBlobDSA (rawData);
+ if (keyBlob == null)
+ throw new ArgumentNullException ("keyBlob");
+ DSA dsa = CryptoConvert.FromCapiKeyBlobDSA (keyBlob);
if (dsa is DSACryptoServiceProvider) {
DSAParameters dsap = dsa.ExportParameters (!(dsa as DSACryptoServiceProvider).PublicOnly);
ImportParameters (dsap);
}
}
}
-#endif
}
}