Мне нужно подписать данные перед отправкой в сервис. Я сделал это в приложении Windows следующим способом:
private string SignWithPfx(string data)
{
var path = AppDomain.CurrentDomain.BaseDirectory + "certificate.pfx";
var password = "1234";
var collection = new X509Certificate2Collection();
collection.Import(path, password, X509KeyStorageFlags.Exportable);
var certificate = collection[0];
var publicKey = certificate.PublicKey.Key as RSACryptoServiceProvider;
var privateKey = certificate.PrivateKey as RSACryptoServiceProvider;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(certificate.PrivateKey.ToXmlString(true));
var signature = rsa.SignData(Encoding.ASCII.GetBytes(data), CryptoConfig.MapNameToOID("SHA256"));
return Convert.ToBase64String(signature);
}
но когда я перенес его в проект Silverlight, я заметил, что здесь нет «X509Certificate2Collection» или даже «RSACryptoServiceProvider»!
Что я должен сделать?