Пытаюсь реализовать данный алгоритм 2 способами.
Первый способ. Есть X509 сертификат и его закрытый ключ в контейнере. Пытаюсь создать подпись таким способом:
using (RSA privateKey = cert.GetRSAPrivateKey())
{
sign = privateKey.SignHash(hash, HashAlgorithmName.SHA256,RSASignaturePadding.Pss);
}
Как я понял, мне не удается получить закрытый ключ, т.к. его не даёт КриптоПро в свойство PrivateKey у переменной cert имеет
CryptoPro.Sharpei.Gost3410CryptoServiceProvider
. SDK КриптоПро у меня нет.
Второй способ. Пытаюсь реализовать алгоритм используя OpenPGP ключи. Нашёл стороннюю библиотеку Chilkat
Chilkat.Cert cert = new Chilkat.Cert();
success = cert.LoadFromFile(@"*ПУТЬ*.asc");
Но она не понимает что я ей подсовываю и ничего не открывает.
Какой именно ключ мне использовать разницы не имеет, но на данный момент есть X509 сертификат .cer и его ключ в контейнере, а так же пара OpenPGP ключей в файлах .asc
Подскажите, пожалуйста, куда копать, какие примеры посмотреть?
Нашёл решение, оно как обычно оказалось элементарным.
Во время создания ключа нужно указывать криптопровайдер не CryptoPro, а Microsoft'овские. Любой из списка подходит. И в таком случае код
using (RSA privateKey = cert.GetRSAPrivateKey())
{
sign = privateKey.SignHash(hash, HashAlgorithmName.SHA256,RSASignaturePadding.Pss);
}
начинает работать и генерировать подпись. Адекватная она или нет, я пытаюсь как-нибудь проверить, но при беглой проверке метод privateKey.VerifyData
выдаёт на мою подпись true
. Почему только с использованием закрытого ключа он выдаёт истину, мне пока не понятно, ведь должен быть использовать публичный.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не добавляется foreing keyПроверил столбцы на null,таблицы пустые,типы подходят,длина тоже Уже не знаю что делать,завтра курсовая
На хостинге(cpanel) в диспетчере почему-то отсутствует файл error log, можно как-то настроить его отображение? добавление в начале проблемного скрипта...