Подписать файл само выпущенным сертификатом RSA используя с#
Нужно выпустить сертификаты RSA и подписать ими файлы приватным ключом. Сертификаты генерирую по аналогии с https://habr.com/ru/post/497160/ они генерируются и даже импортируются в личные сертификаты.
var rsaParam = privateCert.GetRSAPrivateKey().ExportParameters(false);
var rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(rsaParam);
byte[] data = Encoding.UTF8.GetBytes("Data to be signed");
byte[] signature = rsa.SignData(data, "SHA256");
Появляется ошибка Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException: "Набор ключей не существует".
Может как то нужно по другому загружать сертификат?
Ответы (1 шт):
Автор решения: Дмитрий Валерьевич
→ Ссылка
Все как обычно решается достаточно просто: Подписываем так:
`byte[] data = Encoding.UTF8.GetBytes(msg);
var cert = new X509Certificate2(key);
var privateKey = cert.GetRSAPrivateKey();
var signature = privateKey.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);`
где key в бинарном виде сам сертификат (обязательно с закрытым ключом)