Я использую хранилище ключей, которое было создано с использованием vc 6.0 и cryptoAPI.Хранилище ключей содержит все ключи обмена / подписи.Так что я могу использовать открытые ключи просто отлично для шифрования данных с использованием RSA, но когда приходит время подписать или расшифровать данные, я не могу найти, как расшифровать с помощью закрытого ключа.
Я видел много сайтов, использующих rsa = (RSACryptoServiceProvider) cert.PrivateKey;
, но в моем хранилище ключей при просмотре сертификатов все закрытые ключи не существуют.
// вот как я настраиваю магазин
public cryptTest(string storeName)
{
store = new X509Store(storeName);
this.storename = storename;
}
// вот так я получаю сертификат из магазина
public X509Certificate2 getCertificate(string ID, certType ct)
{
if (store == null)
{
return null;
}
store.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 cert in store.Certificates)
{
if ((ct == certType.exchange && cert.Subject.Contains("Exchange")) ||
(ct == certType.signature && cert.Subject.Contains("Signature")))
{
if (cert.Subject.Contains(ID)) // if the ID match
{
// todo check date etc ! is cert still valid if not delete etc.
store.Close();
return cert;
}
}
}
store.Close();
return null;
}
но потом в сертификатаху них никогда нет закрытого ключа, так как я могу расшифровать или подписать сертификаты в хранилище ключей?
Спасибо миллион!