Как подписать и зашифровать файл используя библиотеку КриптоПро.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");
}
}
Комментариев нет:
Отправить комментарий