Wie füge ich einen Zeitstempel hinzu, wenn ich eine Datei in C # digital signiere?

8

Ich habe versucht, in .NET C # ein Dienstprogramm ähnlich wie signtool.exe zu implementieren. Um eine Datei digital zu signieren, habe ich die Klassen SignedCms und CmsSigner verwendet.

%Vor%

Ich bin mir jedoch nicht sicher, wie man einen von einem Zeitserver empfangenen Zeitstempel hinzufügt. signtool.exe hat die Option

%Vor%

Eine Möglichkeit scheint in der Verwendung der Pkcs9SigningTime-Klasse zu bestehen, aber ich weiß nicht, wie ich sie in Verbindung mit einem Zeitstempel-Server richtig benutze. Alle Beispiele verwenden Pkcs9SigningTime und die aktuelle Uhrzeit des Systems. Bei einem Zeitserver kann es komplizierter sein, weil der Zeitserver sein eigenes Zertifikat hat und die Antwort die Zeit und einen Hash als Gegensignatur enthält.

Kann mir jemand Hinweise geben?

    
mircea 11.10.2011, 12:56
quelle

1 Antwort

4

Das Timestamp-Protokoll Authenticode (tm) ist älter als das in RFC3161 definierte Time-Stamp-Protokoll. Jedoch (und IIRC) gibt es keine direkte Unterstützung für das Fragen eines Zeitstempels, der in .NET erstellt wird.

Sie können also entweder:

  1. Erstellen Sie einen TSP-Client, um Ihre Zeitstempel zu erhalten. oder

  2. huckepack die vorhandenen freien Timestamp-Server, die für die Codesignierung zur Verfügung stehen.

Obwohl ich in den meisten Fällen # 1 vorschlagen würde (es ist ein Standard und zukunftssicherer), bin ich mir nicht sicher, ob es C # -Bibliotheken gibt, die das heute unterstützen.

Wenn du an # 2 interessiert bist, dann weiß ich (weil ich es geschrieben habe ;-) dass die ist innerhalb von Mono (MIT.X11 lizenziert) verfügbar, um Authenticode (tm) und Codesignierung (einschließlich Zeitstempel) zu unterstützen.

    
poupou 13.10.2011, 00:14
quelle