Как подписать и зашифровать файл используя библиотеку КриптоПро.NET SDK имея USB токен?
Алг. подписи ГОСТ 34.10-2001(512 bits)
Алг. хэша ГОСТ 34-11-94
Я имею файл в формате p7s.p7m. Его содержимое разделено тегами
----- BEGIN PKCS7 ENCRYPTED ----- --- END PKCS7 ENCRYPTED -----
Ответ
Я решил идти по пути наименьшего сопротивления и использовать консольную утилиту Cyptcp компании КриптоПро. Для работы утилиты нужен криптопровайдер КриптоПро CSP. КриптоПро CSP на одну машине стоит около 2 000 руб, а Cyptcp около 700 руб.
Cyptcp и АРМ КриптоПро совместимы между собой.
Формирую команды:
///
///
public static string Sign(string nameCertificate, string pathFile, string pathSignedFile) { return "-sign -dn \"" + nameCertificate + "\" " + "\"" + pathFile + "\" \"" + pathSignedFile + "\""; }
public static string Encrypt(string nameRecipientCertificate, string pathSigFile, string pathSave) { return "-encr -dn \"" + nameRecipientCertificate + "\" " + "\"" + pathSigFile + "\" \"" + pathSave + "\""; } }
Запуск утилиты на выполнение команды:
private void RunCommand(string command, string pathApplication) { using (Process process = new Process()) { //Имя файла. process.StartInfo.FileName = pathApplication; //Директория. process.StartInfo.WorkingDirectory = Path.GetDirectoryName(pathApplication); //Команда. process.StartInfo.Arguments = command;
//Не показывать окно приложения. process.StartInfo.CreateNoWindow = true; process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.StandardOutputEncoding = Encoding.Default;
process.Start();
//Ответ на диалог выбора сертификата process.StandardInput.WriteLine("y"); } }
Комментариев нет:
Отправить комментарий