I am creating RSA key pair using
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
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.”
I had the same error. For some reason FxSSH did not like a public RSA key I generated. I had to use the RSA key in the https://github.com/Aimeast/FxSsh readme.