Wie Lesen Sie ein Zertifikat aus Usb-Token(etoken pro 72 k(Java) und Anhängen in pdf
Möchte ich zum Lesen der Signatur von Usb-token von safenet (alladin etoken pro 72 k(Java) und befestigen Sie Sie pdf. Ich weiß nicht, wie dies zu tun. In der Sie zuvor die option " export .pfx
- Datei. Nun, Sie geben eine option zum exportieren .cer
- Datei. Als ich gegoogelt komme ich zu diesem code. Wenn ich diesen code ausführen, funktioniert er aufgefordert, das Passwort des token, nachdem das Passwort eingeben, ich kann in der Lage, um die Signatur zu überprüfen, aber ich weiß nicht, wie das Anhängen der Signatur an der pdf-Datei. bitte führe mich, ob ich in die richtige Richtung oder nicht. Ich bin mit c# - Sprache
private void btnGenpdfdigitalSignature_Click(object sender, EventArgs e)
{
try
{
//Cert myCert = null;
//Sign text
byte[] signature = Sign("Test", "Name of the signature person");
//Verify signature. Testcert.cer corresponds to "cn=my cert subject"
if (Verify("Test", signature,"jai.cer"))
{
}
else
{
Console.WriteLine("ERROR: Signature not valid!");
}
}
catch (Exception ex)
{
Console.WriteLine("EXCEPTION: " + ex.Message);
}
//Console.ReadKey();
}
static byte[] Sign(string text, string certSubject)
{
//Access Personal (MY) certificate store of current user
X509Store my = new X509Store(StoreName.My, StoreLocation.CurrentUser);
my.Open(OpenFlags.ReadOnly);
//Find the certificate we'll use to sign
RSACryptoServiceProvider csp = null;
foreach (X509Certificate2 cert in my.Certificates)
{
if (cert.Subject.Contains(certSubject))
{
//We found it.
//Get its associated CSP and private key
csp = (RSACryptoServiceProvider)cert.PrivateKey;
}
}
if (csp == null)
{
throw new Exception("No valid cert was found");
}
//Hash the data
SHA1Managed sha1 = new SHA1Managed();
UnicodeEncoding encoding = new UnicodeEncoding();
byte[] data = encoding.GetBytes(text);
byte[] hash = sha1.ComputeHash(data);
//Sign the hash
return csp.SignHash(hash, CryptoConfig.MapNameToOID("Test"));
}
public bool Verify(string text, byte[] signature, string certPath)
{
//Load the certificate we'll use to verify the signature from a file
cert = new X509Certificate2(certPath);
//Note:
//If we want to use the client cert in an ASP.NET app, we may use something like this instead:
//X509Certificate2 cert = new X509Certificate2(Request.ClientCertificate.Certificate);
//Get its associated CSP and public key
RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert.PublicKey.Key;
//Hash the data
SHA1Managed sha1 = new SHA1Managed();
UnicodeEncoding encoding = new UnicodeEncoding();
byte[] data = encoding.GetBytes(text);
byte[] hash = sha1.ComputeHash(data);
//Verify the signature with the hash
return csp.VerifyHash(hash, CryptoConfig.MapNameToOID("Test"), signature);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie es scheint, müssen Sie Unterschreiben die PDF-Datei mit den gespeicherten Schlüssel auf einem USB token.
Erste Sache, um herauszufinden, ist, was die Unterzeichnung format zu verwenden. PDF-Dateien können signiert werden entsprechend der PDF-Spezifikation (die digitale Signatur), PAdES (PDF mit erweiterten Signatur), oder als generische binäre Daten mithilfe von CMS/CAdES oder sogar XMLDSig/zu den XAdES.
Angenommen, Sie Unterschreiben müssen die PDF-Datei nach PDF-Spezifikation, die Sie wahrscheinlich benötigen, um einige Bibliothek wie unsere PDFBlackbox oder iText (beachten Sie die Lizenz-und Preisgestaltung!).
Zurück zur technischen Seite -- .cer-Datei, die Sie erwähnt enthält nur den öffentlichen Teil des Zertifikats und den privaten Schlüssel zum signieren verwendet wird, kann in der Regel nicht extrahiert werden aus dem security-Geräte wie USB-token. Das PDF signing-Bibliothek unterstützen muss, ruft Sie den USB-token über eine Programmierschnittstelle (unsere PDFBlackbox unterstützt sowohl CryptoAPI und PKCS#11), um es signieren der hash-Wert der Daten.
Wenn Sie wollen, signieren Sie PDF mit eingebetteter Signatur, würden Sie wahrscheinlich benötigen, um PDF-Bearbeitung-Bibliothek wie iTextSharp die Einbettung der Signatur in die Struktur des PDF-Dokuments. Bruno Lowagie von iText Software geschrieben hat, weiß Papier namens "Digitale Signaturen für PDF-Dokumente" das ist eine große Quelle von Informationen über digitale Signaturen in PDF-Dokumenten.
Wenn Sie verwenden möchten Ihre Anwendung auch auf anderen Plattformen als Windows, dann sollten Sie einen Blick auf meine Pkcs11Interop.PDF Bibliothek, erstreckt sich iTextSharp mit der Fähigkeit, Digital signieren PDF-Dokument mit dem privaten Schlüssel gespeichert, die auf beinahe jede PKCS#11-kompatible Gerät (smartcard, HSM, etc.).
Die große Sache über iTextSharp und Pkcs11Interop.PDF-Bibliotheken, erhältlich sind Sie unter dual-Lizenz-Modell, so, wenn Sie in der Lage sind, um die Einhaltung der Bestimmungen AGPL Lizenz dann können Sie die beiden Bibliotheken kostenlos.
Modernen token middleware (Treiber) kommt mit CSP (Crypto Service Provider) auf die Spitze. Der CSP erkennt und behandelt-Ereignis aus, wenn der USB-Token eingesteckt oder entfernt und lässt die Zertifikate in der token-erhältlich in den Windows-Zertifikatspeicher. Sie können die Verwendung der Windows-X509 - - Sicherheit-Bibliotheken in C# Zugriff auf das Zertifikat für die Signatur, die Zugriff auf das Zertifikat-Speicher, die abwechselnd verwendet, CSP, um Inhalte signiert mit dem Privaten Schlüssel auf dem Token. Der Private Schlüssel kommt nie aus der token.
Wenn Sie auf der Suche, um es in Web-Anwendung finden Sie in diesem SO Beantworten