Я пытался реализовать в .NET C # утилиту, похожую на signtool.exe.Для цифровой подписи файла я использовал классы SignedCms и CmsSigner.
CmsSigner signer;
...
SignedCms content =
new SignedCms(new ContentInfo(File.ReadAllBytes(aFileToSign)));
content.ComputeSignature(signer, true);
Однако я не уверен, как добавить метку времени, полученную от сервера времени.У signtool.exe есть опция
signtool sign /t "time server url" ...
Одна из возможностей заключается в использовании класса Pkcs9SigningTime, но я не знаю, как правильно его использовать в сочетании с сервером отметок времени.Все примеры используют Pkcs9SigningTime и текущее время системы.С сервером времени это может быть сложнее, потому что сервер времени имеет свой собственный сертификат, и ответ будет содержать время и хэш, используемый в качестве контрсигнатуры.
Может кто-нибудь дать некоторые подсказки об этом?*