3 Stimmen

Wie kann man ein Open Office XML Docx-Dokument mit einem X509-Zertifikat programmatisch digital signieren?

Ich möchte ein Open-Office-XML-Docx-Dokument mit einem X509-Zertifikat entweder in Java oder C# programmatisch digital signieren.

Dieser Link zeigt, wie das mit C# unter Verwendung von PackageDigitalSignatureManager aus System.IO.Packaging hervorragend funktioniert: http://blogs.infosupport.com/blogs/wouterv/archive/2007/02/24/Signing-Office-Open-XML-documents-using-the-Packaging-API.aspx

Obwohl dies gut funktioniert, wird am Ende ein Benutzerdialog eingeblendet, in dem der Benutzer nach einer PIN-Nummer für die authentifizierte digitale Signatur gefragt wird.

Wissen Sie, wie Sie diese PIN-Nummer programmatisch festlegen können?

Prost


Vielen Dank für die ausführliche Antwort. Im Grunde verwende ich eine elektronische ID-Chipkarte, die ein Zertifikat zum Signieren digitaler Dokumente hat.

Normalerweise übergebe ich einen öffentlichen Schlüssel vom Typ X509Certificate an die Methode PackageDigitalSignatureManager Sign().

Bei dieser Methode wird das Dokument signiert, aber der Benutzer wird zur Eingabe einer PIN aufgefordert, um den auf der Smartcard gespeicherten privaten Schlüssel abzurufen.

Ist es nicht möglich, dem PackageDigitalSignatureManager ein Objekt zu übergeben, das sowohl das öffentliche als auch das private Schlüsselpaar in einer PKCS12-Datei enthält, und dann wird der Benutzer nicht zur Eingabe einer PIN-Nummer aufgefordert.

Zum Wohl,

0voto

Die Antwort auf Frage 2 hängt davon ab, welche Technologie Sie verwenden und vor allem, wo das Zertifikat gespeichert ist.

In Java Key Storage (JKS) werden Zertifikate mit Passwörtern geschützt und diese Passwörter werden im Code übergeben.

In der Windows-Zertifikatsspeicherung (die von den .NET-Kryptographieklassen verwendet wird) sind die Zertifikate durch eine PIN geschützt, die bei den meisten Kryptoanbietern nicht per Code eingestellt werden kann (es gibt einen Erweiterungsbefehl zum Einstellen der PIN, der jedoch von den meisten Anbietern nicht unterstützt wird).

Wenn Sie ein in einer PKCS12-Datei gespeichertes Zertifikat verwenden, wird das Passwort für die Datei ebenfalls im Code festgelegt.

Und, na ja, wir bieten Komponenten zum Signieren von Office-Dokumenten in .NET an, wenn Sie daran interessiert sind ( hier prüfen ). Im Gegensatz zu den meisten Beispielcodes werden sie gepflegt und unterstützt.

0voto

Robetto Punkte 709

Eine Antwort findet sich in MSDN Das war's. 3 Schritte notwendig

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X