public void ImportCspBlob(byte[] keyBlob)
{
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);
}
else
{
// we can't know from DSA if the private key is available
try {
// so we try it...
DSAParameters dsap = dsa.ExportParameters(true);
ImportParameters(dsap);
}
catch {
// and fall back
DSAParameters dsap = dsa.ExportParameters(false);
ImportParameters(dsap);
}
}
}