Пытаюсь реализовать данный алгоритм 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
. Почему только с использованием закрытого ключа он выдаёт истину, мне пока не понятно, ведь должен быть использовать публичный.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не добавляется foreing keyПроверил столбцы на null,таблицы пустые,типы подходят,длина тоже Уже не знаю что делать,завтра курсовая
На хостинге(cpanel) в диспетчере почему-то отсутствует файл error log, можно как-то настроить его отображение? добавление в начале проблемного скрипта...