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);


        }
InformationsquelleAutor Jayachandran | 2014-04-23
Schreibe einen Kommentar