Esempio n. 1
0
        public string createParalelSignature(string eReceteSourceFilePath)
        {
            string retSignedXmlPath = null;

            //Load license from file
            //LisansHelper.loadFreeLicenseBase64();
            LisansHelper.loadLicense();
            try
            {
                // create context with working dir
                string         currentDirectory = Directory.GetCurrentDirectory();
                Context        context          = new Context(currentDirectory);
                SignedDocument signatures       = new SignedDocument(context);


                //First Signature
                XMLSignature signature1 = signatures.createSignature();
                signature1.SigningTime = DateTime.Now;
                signature1.addDocument(eReceteSourceFilePath, null, true);
                KeyOrSmartCardSignManager keyOrSmartCardSignManager = KeyOrSmartCardSignManager.Instance;
                ECertificate signingCert      = keyOrSmartCardSignManager.getSigningCertificate();
                bool         validCertificate = isValidCertificate(signingCert);
                if (!validCertificate)
                {
                    MesajiIsle("İmza atılmak istenen sertifika geçerli değil." + Program.HataMesaji, 1);
                    return(null);
                }
                // add certificate to show who signed the document
                signature1.addKeyInfo(signingCert);
                BaseSigner smartCardSigner = keyOrSmartCardSignManager.getSigner(signingCert);
                signature1.sign(smartCardSigner);

                //Second Signature
                XMLSignature signature2 = signatures.createSignature();
                signature2.SigningTime = DateTime.Now;
                signature2.addDocument(eReceteSourceFilePath, null, true);
                signature2.addKeyInfo(signingCert);
                signature2.sign(smartCardSigner);

                FileInfo sourceFileInfo = new FileInfo(eReceteSourceFilePath);
                string   destDirPath    = sourceFileInfo.Directory.FullName;
                retSignedXmlPath = destDirPath + "/" + sourceFileInfo.Name.Replace(".xml", "_PARALEL.xsig");
                FileStream signatureFileStream = new FileStream(retSignedXmlPath, FileMode.Create);
                signatures.write(signatureFileStream);
                signatureFileStream.Close();
                return(retSignedXmlPath);
            }
            catch (XMLSignatureException exc)
            {
                // cant create signature
                MesajiIsle("Hata Oluştu." + exc.Message, 1);
            }
            catch (Exception exc)
            {
                // probably couldn't write to the file
                MesajiIsle("Hata Oluştu." + exc.Message, 1);
            }
            return(retSignedXmlPath);
        }