Как добавить метку времени при цифровой подписи файла в C#?

Я пытался реализовать в .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 и текущее время системы. С сервером времени это может быть сложнее, потому что сервер времени имеет свой собственный сертификат, и ответ будет содержать время и хэш, используемый в качестве контрподписи.

Может ли кто-нибудь дать какие-нибудь подсказки по этому поводу?

8
задан Uwe Keim 11 October 2011 в 17:58
поделиться