7

I am creating RSA key pair using AsymmetricKeyAlgorithmProvider (Windows.Security.Cryptography.Core) and exporting the keys as shown below:

  AsymmetricKeyAlgorithmProvider rsaGenKeys = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaPkcs1);

  CryptographicKey keyPair = rsaGenKeys.CreateKeyPair(2048);
  byte[] privateKeyBlob = keyPair.Export(CryptographicPrivateKeyBlobType.Pkcs1RsaPrivateKey).ToArray();

  string privateKeyBlobStr = Convert.ToBase64String(privateKeyBlob);

  byte[] publicKeyBlob = keyPair.ExportPublicKey().ToArray();

  string pubilcKeyBlobStr = Convert.ToBase64String(publicKeyBlob);

Now, the receiver of this data happens to be a Silverlight app and is using RSACryptoServiceProvider (System.Security.Cryptography) to load this public key:

RSACryptoServiceProvider rsaPublic = new RSACryptoServiceProvider();
byte[] keyBlobBytes = Convert.FromBase64String(keyBlob);
rsaPublic.ImportCspBlob(keyBlobBytes);

Where keyBlob is the byte array having the public key.
The issue is when ImportCspBlob is called it throws exception saying “Bad Version of provider.”