RSASSA-PSS подпись с хэш функциейSHA256

122
17 декабря 2020, 09:40

Пытаюсь реализовать данный алгоритм 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

Подскажите, пожалуйста, куда копать, какие примеры посмотреть?

Answer 1

Нашёл решение, оно как обычно оказалось элементарным.

Во время создания ключа нужно указывать криптопровайдер не CryptoPro, а Microsoft'овские. Любой из списка подходит. И в таком случае код

using (RSA privateKey = cert.GetRSAPrivateKey())
        {
           sign = privateKey.SignHash(hash, HashAlgorithmName.SHA256,RSASignaturePadding.Pss);
        }

начинает работать и генерировать подпись. Адекватная она или нет, я пытаюсь как-нибудь проверить, но при беглой проверке метод privateKey.VerifyData выдаёт на мою подпись true. Почему только с использованием закрытого ключа он выдаёт истину, мне пока не понятно, ведь должен быть использовать публичный.

READ ALSO
Как отфильтровать List<T>

Как отфильтровать List<T>

Есть checkedlistboxВ нем несколько строк (см

106
Не получается добавить foreign key

Не получается добавить foreign key

Не добавляется foreing keyПроверил столбцы на null,таблицы пустые,типы подходят,длина тоже Уже не знаю что делать,завтра курсовая

143
Отсутствует файл error log

Отсутствует файл error log

На хостинге(cpanel) в диспетчере почему-то отсутствует файл error log, можно как-то настроить его отображение? добавление в начале проблемного скрипта...

117