"Bad version of the provider". when loading public key using RSACryptoServiceProvider

I am generating 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 is a Silverlight application and uses RSACryptoServiceProvider

( System.Security.Cryptography

) to load this public key:

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

      

Where keyBlob is a byte array holding a public key. The problem is that when ImportCspBlob is called, it throws an exception saying "Bad provider version".

+3


source to share





All Articles