public bool AssinarArquivo(string Arquivo, out string returnFileName, bool SemAbrir = false, CertSimples oCertificado = null)
        {
            returnFileName = "";
            PDF.FrmPreview.eTipoSelo TipoSelo;
            TipoSelo          = SeloUtilizado();
            oFrm              = new PDF.FrmPreview(Arquivo, TipoSelo);
            oFrm.PosicaoSelo += new INB.PDF.FrmPreview.PosicaoSeloEventHandler(this.PosicaoSelo);
            oFrm.ShowDialog();
            if (oFrm.AssinaturaConfirmada)
            {
                int Pagina, largura, altura;
                int X, Y;
                Pagina  = _Pagina;
                X       = _Position.X;
                Y       = _Position.Y;
                largura = _Largura;
                altura  = _Altura;
                if (Pagina == 0 || X < 0 || Y < 0)
                {
                    MessageBox.Show("Foi impossível determinar a localização do selo, por favor, repetir o procedimento de assinatura.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
                else
                {
                    string SignedFileName;
                    //******
                    //pensar quando já tiver o nome do arquivo
                    string FileName = Path.GetFileName(Arquivo);
                    string PathFile = Path.GetDirectoryName(Arquivo) + "\\";
                    FileName       = getFileName(PathFile, FileName.Substring(0, FileName.Length - 4));
                    SignedFileName = PathFile + FileName;
                    returnFileName = SignedFileName;

                    TipoAssinatura Tipo = TipoAssinatura.Normal;
                    if (OptAsPadrao.Checked)
                    {
                        Tipo = TipoAssinatura.Normal;
                    }
                    else if (OptAsCertifico.Checked)
                    {
                        Tipo = TipoAssinatura.Certifico;
                    }
                    else if (OptConferido.Checked)
                    {
                        Tipo = TipoAssinatura.ConferidoOriginal;
                    }
                    else if (OptChancela.Checked)
                    {
                        Tipo = TipoAssinatura.ChancelaJuridica;
                    }
                    else if (OptCarimboINB.Checked)
                    {
                        if (CboCarimbo.Text.Trim() == "BUENA")
                        {
                            Tipo = TipoAssinatura.Buena;
                        }
                        else if (CboCarimbo.Text.Trim() == "CAETITÉ")
                        {
                            Tipo = TipoAssinatura.Caetite;
                        }
                        else if (CboCarimbo.Text.Trim() == "CALDAS")
                        {
                            Tipo = TipoAssinatura.Caldas;
                        }
                        else if (CboCarimbo.Text.Trim() == "FORTALEZA")
                        {
                            Tipo = TipoAssinatura.Fortaleza;
                        }
                        else if (CboCarimbo.Text.Trim() == "RESENDE")
                        {
                            Tipo = TipoAssinatura.Resende;
                        }
                        else if (CboCarimbo.Text.Trim() == "RIO DE JANEIRO")
                        {
                            Tipo = TipoAssinatura.RioDeJaneiro;
                        }
                        else if (CboCarimbo.Text.Trim() == "SÃO PAULO")
                        {
                            Tipo = TipoAssinatura.SaoPaulo;
                        }
                        else
                        {
                            Tipo = TipoAssinatura.Resende;
                        }
                    }

                    INB.Assinador.Model.AssinaComTokenITextSharp.AssinaPDF(Arquivo, SignedFileName, (CertSimples)CboCertificados.SelectedItem, Pagina, X, Y, _Rotation, ChkCarimboTempo.Checked, TxtTimeStampServer.Text, TxtUsuarioTS.Text, TxtSenhaTS.Text, "Assinatura Digital de Documento", ChkAplicaPolitica.Checked, CboDigestAlgorithm.Text, "", "Indústrias Nucleares do Brasil S/A - INB", "Assinador da INB", Tipo, TxtCargo.Text, TxtCRMCREA.Text);

                    if (SemAbrir == false)
                    {
                        if (MessageBox.Show("Arquivo assinado com sucesso. Deseja abri-lo?", ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            System.Diagnostics.Process.Start(SignedFileName);
                        }
                    }
                }
                try
                {
                    oFrm.Close();
                }
                catch (Exception ex) { }
                return(true);
            }
            else
            {
                try
                {
                    oFrm.Dispose();
                }
                catch (Exception ex) { }
                return(false);
            }
        }
Exemplo n.º 2
0
        //public static Bitmap ConfiguraBMP(X509Certificate2 cert, bool SeloCargo, bool SeloCREA, bool SeloCRM, string Cargo, string CREACRM, out int Altura, bool SeloCertifico)
        //{
        //    Bitmap bmp;
        //    if (SeloCertifico)
        //    {
        //        bmp = new Bitmap(Properties.Resources.seloCertifico);
        //        Altura = 90;
        //    }
        //    else
        //    {
        //        if (SeloCargo == true && (SeloCREA == false && SeloCRM == false))
        //        {
        //            //SOMENTE SELO DE CARGO
        //            bmp = new Bitmap(Properties.Resources.seloCargo);
        //            Altura = 75;
        //        }
        //        else if (SeloCargo == false && (SeloCREA == true || SeloCRM == true))
        //        {
        //            //SOMENTE SELO DO CREA OU DO CRM.
        //            if (SeloCREA)
        //            {
        //                bmp = new Bitmap(Properties.Resources.seloCREA);
        //            }
        //            else
        //            {
        //                bmp = new Bitmap(Properties.Resources.seloCRM);
        //            }
        //            Altura = 75;
        //        }
        //        else if (SeloCargo == true && (SeloCREA == true || SeloCRM == true))
        //        {
        //            //SELO COM CARGO CREA OU CRM
        //            if (SeloCREA)
        //            {
        //                bmp = new Bitmap(Properties.Resources.seloCargoCREA);
        //            }
        //            else
        //            {
        //                bmp = new Bitmap(Properties.Resources.seloCargoCRM);
        //            }
        //            Altura = 90;
        //        }
        //        else
        //        {
        //            bmp = new Bitmap(Properties.Resources.selo);
        //            Altura = 63;
        //            //SELO NORMAL
        //        }
        //    }
        //    bmp = GeraSelo(cert, bmp, Cargo, CREACRM, SeloCertifico);
        //    return bmp;
        //}
        public static Bitmap ConfiguraBMP(CertSimples cert, out int Altura, TipoAssinatura Tipo, string Cargo = "", string CREACRM = "")
        {
            Bitmap bmp;

            if (Tipo == TipoAssinatura.Certifico)
            {
                bmp    = new Bitmap(Properties.Resources.seloCertifico);
                Altura = 90;
            }
            else if (Tipo == TipoAssinatura.Cargo)
            {
                //SOMENTE SELO DE CARGO
                bmp    = new Bitmap(Properties.Resources.seloCargo);
                Altura = 75;
            }
            else if (Tipo == TipoAssinatura.CargoCrea)
            {
                bmp    = new Bitmap(Properties.Resources.seloCargoCREA);
                Altura = 90;
            }
            else if (Tipo == TipoAssinatura.CargoCRM)
            {
                bmp    = new Bitmap(Properties.Resources.seloCargoCRM);
                Altura = 90;
            }
            else if (Tipo == TipoAssinatura.CREA)
            {
                bmp    = new Bitmap(Properties.Resources.seloCREA);
                Altura = 75;
            }
            else if (Tipo == TipoAssinatura.CRM)
            {
                bmp    = new Bitmap(Properties.Resources.seloCRM);
                Altura = 75;
            }
            else if (Tipo == TipoAssinatura.Fortaleza)
            {
                bmp    = new Bitmap(Properties.Resources.CarimboFortaleza);
                Altura = 90;
            }
            else if (Tipo == TipoAssinatura.Resende)
            {
                bmp    = new Bitmap(Properties.Resources.CarimboResende);
                Altura = 90;
            }
            else if (Tipo == TipoAssinatura.RioDeJaneiro)
            {
                bmp    = new Bitmap(Properties.Resources.CarimboRJ);
                Altura = 90;
            }
            else if (Tipo == TipoAssinatura.Caetite)
            {
                bmp    = new Bitmap(Properties.Resources.CarimboCaetite);
                Altura = 90;
            }
            else if (Tipo == TipoAssinatura.Buena)
            {
                bmp    = new Bitmap(Properties.Resources.CarimboBuena);
                Altura = 90;
            }
            else if (Tipo == TipoAssinatura.SaoPaulo)
            {
                bmp    = new Bitmap(Properties.Resources.CarimboSP);
                Altura = 90;
            }
            else if (Tipo == TipoAssinatura.Caldas)
            {
                bmp    = new Bitmap(Properties.Resources.CarimboCaldas);
                Altura = 90;
            }
            else if (Tipo == TipoAssinatura.ConferidoOriginal)
            {
                bmp    = new Bitmap(Properties.Resources.ConferidoOriginal);
                Altura = 90;
            }
            else if (Tipo == TipoAssinatura.ChancelaJuridica)
            {
                bmp    = new Bitmap(Properties.Resources.SeloChancela);
                Altura = 90;
            }
            else
            {
                bmp    = new Bitmap(Properties.Resources.selo);
                Altura = 63;
                //SELO NORMAL
            }

            bmp = GeraSelo(cert, bmp, Tipo, Cargo, CREACRM);

            return(bmp);
        }
        public bool AssinarArquivo(byte[] Arquivo, out byte[] returnFile, bool SemAbrir = false, CertSimples oCertificado = null)
        {
            PDF.FrmPreview.eTipoSelo TipoSelo;
            TipoSelo          = SeloUtilizado();
            oFrm              = new PDF.FrmPreview(Arquivo, TipoSelo);
            oFrm.PosicaoSelo += new INB.PDF.FrmPreview.PosicaoSeloEventHandler(this.PosicaoSelo);
            oFrm.ShowDialog();
            if (oFrm.AssinaturaConfirmada)
            {
                oFrm.Close();
                int Pagina, largura, altura;
                int X, Y;
                Pagina  = _Pagina;
                X       = _Position.X;
                Y       = _Position.Y;
                largura = _Largura;
                altura  = _Altura;
                if (Pagina == 0 || X < 0 || Y < 0)
                {
                    MessageBox.Show("Foi impossível determinar a localização do selo, por favor, repetir o procedimento de assinatura.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    returnFile = null;
                    return(false);
                }
                else
                {
                    MemoryStream SendFile = new MemoryStream(Arquivo);
                    byte[]       ReceiveFile;

                    TipoAssinatura Tipo = TipoAssinatura.Normal;

                    if (OptAsPadrao.Checked)
                    {
                        if (TxtCargo.Text.Trim() == "" && TxtCRMCREA.Text.Trim() == "")
                        {
                            Tipo = TipoAssinatura.Normal;
                        }
                        else
                        {
                            if (ChkCargo.Checked && ChkCRM.Checked == false)
                            {
                                Tipo = TipoAssinatura.Cargo;
                            }
                            else if (ChkCargo.Checked = false && ChkCRM.Checked)
                            {
                                Tipo = TipoAssinatura.CRM;
                            }
                            else if (ChkCargo.Checked && ChkCRM.Checked)
                            {
                                Tipo = TipoAssinatura.CargoCRM;
                            }
                            else if (ChkCargo.Checked && ChkCREA.Checked)
                            {
                                Tipo = TipoAssinatura.CargoCrea;
                            }
                        }
                    }
                    else if (OptAsCertifico.Checked)
                    {
                        Tipo = TipoAssinatura.Certifico;
                    }
                    else if (OptChancela.Checked)
                    {
                        Tipo = TipoAssinatura.ChancelaJuridica;
                    }
                    else if (OptCarimboINB.Checked)
                    {
                        if (CboCarimbo.Text.Trim() == "BUENA")
                        {
                            Tipo = TipoAssinatura.Buena;
                        }
                        else if (CboCarimbo.Text.Trim() == "CAETITÉ")
                        {
                            Tipo = TipoAssinatura.Caetite;
                        }
                        else if (CboCarimbo.Text.Trim() == "CALDAS")
                        {
                            Tipo = TipoAssinatura.Caldas;
                        }
                        else if (CboCarimbo.Text.Trim() == "FORTALEZA")
                        {
                            Tipo = TipoAssinatura.Fortaleza;
                        }
                        else if (CboCarimbo.Text.Trim() == "RESENDE")
                        {
                            Tipo = TipoAssinatura.Resende;
                        }
                        else if (CboCarimbo.Text.Trim() == "RIO DE JANEIRO")
                        {
                            Tipo = TipoAssinatura.RioDeJaneiro;
                        }
                        else if (CboCarimbo.Text.Trim() == "SÃO PAULO")
                        {
                            Tipo = TipoAssinatura.SaoPaulo;
                        }
                        else
                        {
                            Tipo = TipoAssinatura.Resende;
                        }
                    }

                    INB.Assinador.Model.AssinaComTokenITextSharp.AssinaPDF(SendFile, out ReceiveFile, (CertSimples)CboCertificados.SelectedItem, Pagina, X, Y, _Rotation, ChkCarimboTempo.Checked, TxtTimeStampServer.Text, TxtUsuarioTS.Text, TxtSenhaTS.Text, "Assinatura Digital de Documento", ChkAplicaPolitica.Checked, CboDigestAlgorithm.Text, null, "Indústrias Nucleares do Brasil S/A - INB", "Assinador da INB", Tipo, TxtCargo.Text, TxtCRMCREA.Text);

                    returnFile = ReceiveFile;
                }
                return(true);
            }
            else
            {
                returnFile = null;
                return(false);
            }
        }
Exemplo n.º 4
0
        public static void AssinaPDF(string FileName, string SignFileName, CertSimples oCertificado, int Pagina, float X, float Y, int Rotation, bool AddTimeStamper = true, string urlTimeStamper = "https://freetsa.org/tsr", string timeStampUser = "", string timeStampPass = "", string Reason = "Assinatura Digital", bool AplicaPolitica = false, string MyDigestAlgorithm = "SHA-1", string Contact = "", string Location = "Indústrias Nucleares do Brasil S/A - INB", string Creator = "Assinador da INB", TipoAssinatura Tipo = TipoAssinatura.Normal, string Cargo = "", string CREACRM = "")
        {
            LoggerFactory.GetInstance().SetLogger(new SysoLogger());
            X509Store x509Store = new X509Store("My");

            x509Store.Open(OpenFlags.ReadOnly);
            X509Certificate2Collection certificates = new X509Certificate2Collection();

            //X509Certificate2Collection Certificados = x509Store.Certificates;
            //foreach (X509Certificate2 cert in Certificados)
            //{
            //    if (cert.SerialNumber == SerialNumber)
            //    {
            certificates.Add(oCertificado.Certificado);
            //    }
            //}
            IList <X509Certificate> chain = new List <X509Certificate>();
            X509Certificate2        pk    = null;

            if (certificates.Count > 0)
            {
                X509Certificate2Enumerator certificatesEn = certificates.GetEnumerator();
                certificatesEn.MoveNext();
                pk = certificatesEn.Current;
                X509Chain x509chain = new X509Chain();
                x509chain.Build(pk);
                foreach (X509ChainElement x509ChainElement in x509chain.ChainElements)
                {
                    chain.Add(DotNetUtilities.FromX509Certificate(x509ChainElement.Certificate));
                }
            }

            AssinaComToken(FileName, SignFileName, oCertificado, X, Y, Pagina, Rotation, AddTimeStamper, urlTimeStamper, timeStampUser, timeStampPass, Reason, AplicaPolitica, MyDigestAlgorithm, Contact, Location, Creator, Tipo, Cargo, CREACRM);

            return;
        }
Exemplo n.º 5
0
        public static Bitmap GeraSelo(CertSimples cert, Bitmap Selo, TipoAssinatura Tipo, string Cargo = "", string CREACRM = "")
        {
            Graphics g = Graphics.FromImage(Selo);

            g.SmoothingMode     = SmoothingMode.HighQuality;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.PixelOffsetMode   = PixelOffsetMode.HighQuality;

            RectangleF qNome;
            RectangleF qCPF;
            RectangleF qData;
            RectangleF qCargo;
            RectangleF qCREACRM;

            if (Tipo == TipoAssinatura.Certifico)
            {
                qNome = new RectangleF(7, 91, 220, 30);
                qCPF  = new RectangleF(7, 115, 90, 30);
                qData = new RectangleF(130, 115, 120, 30);
            }
            else if (Tipo == TipoAssinatura.Buena || Tipo == TipoAssinatura.Caetite || Tipo == TipoAssinatura.Caldas || Tipo == TipoAssinatura.Fortaleza || Tipo == TipoAssinatura.Resende || Tipo == TipoAssinatura.RioDeJaneiro || Tipo == TipoAssinatura.SaoPaulo)
            {
                qNome = new RectangleF(7, 91, 220, 30);
                qCPF  = new RectangleF(7, 115, 90, 30);
                qData = new RectangleF(130, 115, 120, 30);
            }
            else if (Tipo == TipoAssinatura.ConferidoOriginal)
            {
                qNome = new RectangleF(7, 91, 220, 30);
                qCPF  = new RectangleF(7, 115, 90, 30);
                qData = new RectangleF(130, 115, 120, 30);
            }
            else if (Tipo == TipoAssinatura.ChancelaJuridica)
            {
                qNome = new RectangleF(7, 91, 220, 30);
                qCPF  = new RectangleF(7, 115, 90, 30);
                qData = new RectangleF(130, 115, 120, 30);
            }
            else if (Tipo == TipoAssinatura.Normal)
            {
                qNome = new RectangleF(7, 36, 220, 30);
                qCPF  = new RectangleF(7, 66, 90, 30);
                qData = new RectangleF(130, 66, 120, 30);
            }
            else
            {
                qNome = new RectangleF(7, 36, 220, 30);
                qCPF  = new RectangleF(7, 66, 90, 30);
                qData = new RectangleF(130, 66, 120, 30);

                if (Cargo.Trim() != "" && CREACRM.Trim() == "")
                {
                    qCargo = new RectangleF(7, 91, 220, 30);
                    g.DrawString(Cargo, new System.Drawing.Font("Tahoma", 7, FontStyle.Bold), Brushes.Black, qCargo);
                }
                else if (Cargo.Trim() == "" && CREACRM.Trim() != "")
                {
                    qCREACRM = new RectangleF(7, 91, 220, 30);
                    g.DrawString(CREACRM, new System.Drawing.Font("Tahoma", 7, FontStyle.Bold), Brushes.Black, qCREACRM);
                }
                else if (Cargo.Trim() != "" && CREACRM.Trim() != "")
                {
                    qCargo   = new RectangleF(7, 91, 220, 30);
                    qCREACRM = new RectangleF(7, 115, 220, 30);
                    g.DrawString(Cargo, new System.Drawing.Font("Tahoma", 7, FontStyle.Bold), Brushes.Black, qCargo);
                    g.DrawString(CREACRM, new System.Drawing.Font("Tahoma", 7, FontStyle.Bold), Brushes.Black, qCREACRM);
                }
            }

            string CPFCNPJ;

            if (cert.Tipo == "F")
            {
                CPFCNPJ = cert.CPF.Substring(0, 3) + "." + cert.CPF.Substring(3, 3) + "." + cert.CPF.Substring(6, 3) + "-" + cert.CPF.Substring(9, 2);
            }
            else
            {
                //formatar CNPJ;
                CPFCNPJ = cert.CNPJ;
            }

            g.DrawString(CPFCNPJ, new System.Drawing.Font("Tahoma", 7, FontStyle.Bold), Brushes.Black, qCPF);
            int fontSize = 7;

            if (cert.Nome.Trim().Length > 38)
            {
                fontSize = 6;
            }

            g.DrawString(cert.Nome, new System.Drawing.Font("Tahoma", fontSize, FontStyle.Bold), Brushes.Black, qNome);
            g.DrawString(System.DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), new System.Drawing.Font("Tahoma", 7, FontStyle.Bold), Brushes.Black, qData);
            g.Flush();

            return(Selo);
        }
Exemplo n.º 6
0
        public static void AssinaComToken(Stream File, out byte[] SignFile, CertSimples cert, float X, float Y, int Pagina, int Rotation, bool AddTimeStamper = true, string urlTimeStamper = "https://freetsa.org/tsr", string timeStampUser = "", string timeStampPass = "", string Reason = "Assinatura Digital", bool AplicaPolitica = false, string MyDigestAlgorithm = "SHA-1", string Contact = "", string Location = "Indústrias Nucleares do Brasil S/A - INB", string Creator = "Assinador da INB", TipoAssinatura Tipo = TipoAssinatura.Normal, string Cargo = "", string CREACRM = "")
        {
            int Largura = 155;
            int Altura  = 63;

            Org.BouncyCastle.X509.X509CertificateParser cp    = new Org.BouncyCastle.X509.X509CertificateParser();
            Org.BouncyCastle.X509.X509Certificate[]     chain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(cert.Certificado.RawData) };
            IExternalSignature externalSignature = new X509Certificate2Signature(cert.Certificado, MyDigestAlgorithm);
            PdfReader          pdfReader         = new PdfReader(File);
            MemoryStream       signedPdf         = new MemoryStream();
            //cria a assinatura
            //PdfStamper pdfStamper = PdfStamper.CreateSignature(pdfReader, signedPdf, '\0', "temp" + signedPdf, true);

            string path = System.AppDomain.CurrentDomain.BaseDirectory + "Temp\\";

            PdfStamper pdfStamper = PdfStamper.CreateSignature(pdfReader, signedPdf, '\0', path + DateTime.Now.ToString("hhMMddHHmmss") + ".pdf", true);

            Bitmap bmp = Graphic.ConfiguraBMP(cert, out Altura, Tipo);
            PdfSignatureAppearance signatureAppearance = pdfStamper.SignatureAppearance;

            ConfiguraAparenciaAssinatura(signatureAppearance, Reason, Contact, Location, Creator, bmp, Altura, Largura, X, Y, Rotation, Pagina, pdfReader);

            TSAClientBouncyCastle tsaClient = null;

            if (AddTimeStamper)
            {
                tsaClient = new TSAClientBouncyCastle(urlTimeStamper, timeStampUser, timeStampPass, TSAClientBouncyCastle.DEFAULTTOKENSIZE, MyDigestAlgorithm);
            }

            IOcspClient       ocspClient = new OcspClientBouncyCastle();
            List <ICrlClient> crlList    = new List <ICrlClient>();

            crlList.Add(new CrlClientOnline(chain));



            if (AplicaPolitica)
            {
                SignaturePolicyInfo spi = PoliticaDaAssinatura();
                MakeSignature.SignDetached(signatureAppearance, externalSignature, chain, crlList, ocspClient, tsaClient, 0, CryptoStandard.CADES, spi);
            }
            else
            {
                MakeSignature.SignDetached(signatureAppearance, externalSignature, chain, crlList, ocspClient, tsaClient, 0, CryptoStandard.CADES);
            }

            try
            {
                SignFile = signedPdf.ToArray();
                //SignFile = INB.Assinador.Helper.Funcoes.ToByteArray(teste);

                //MemoryStream teste = (MemoryStream)signatureAppearance.TempFile;

                //signedPdf.Flush();
                //SignFile
                // SignFile = new MemoryStream(ArquivoAssinado);
                // signedPdf.CopyTo();
                try
                {
                    signedPdf.Close();
                    signedPdf.Dispose();
                }
                catch { }
            }
            catch (Exception ex)
            {
                SignFile = null;
                throw ex;
            }
            try
            {
                signedPdf.Close();
            }
            catch (Exception ex) {}
            pdfReader.Close();
            try
            {
                pdfReader.Dispose();
            }
            catch { }
        }
Exemplo n.º 7
0
        //public static void AssinaComToken_OLD(string FileName, string SignFileName, X509Certificate2 cert, float X, float Y, int Pagina, double Escala, bool SeloCargo = false, bool SeloCREA = false, bool SeloCRM = false, string Cargo = "", string CREACRM = "", bool AddTimeStamper = true, string urlTimeStamper = "https://freetsa.org/tsr", string timeStampUser = "", string timeStampPass = "", string Reason = "Assinatura Digital", bool AplicaPolitica = false, string MyDigestAlgorithm = "SHA-1", string Contact = "", string Location = "Indústrias Nucleares do Brasil S/A - INB", string Creator = "Assinador da INB", bool SeloCertifico = false)
        //{
        //    string SourcePdfFileName = FileName;
        //    string DestPdfFileName = SignFileName;
        //    int Largura = 155;
        //    int Altura = 63;
        //    Org.BouncyCastle.X509.X509CertificateParser cp = new Org.BouncyCastle.X509.X509CertificateParser();
        //    Org.BouncyCastle.X509.X509Certificate[] chain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(cert.RawData) };
        //    IExternalSignature externalSignature = new X509Certificate2Signature(cert, MyDigestAlgorithm);
        //    PdfReader pdfReader = new PdfReader(SourcePdfFileName);
        //    FileStream signedPdf = new FileStream(DestPdfFileName, FileMode.Create, FileAccess.ReadWrite);  //the output pdf file
        //                                                                                                    //cria a assinatura
        //    PdfStamper pdfStamper = PdfStamper.CreateSignature(pdfReader, signedPdf, '\0', "temp" + signedPdf, true);
        //    PdfSignatureAppearance signatureAppearance = pdfStamper.SignatureAppearance;
        //    Bitmap bmp = INB.Assinador.Helper.Graphic.ConfiguraBMP(cert, SeloCargo, SeloCREA, SeloCRM, Cargo, CREACRM, out Altura, SeloCertifico);

        //    //CONFIGURA A APARÊNCIA DO SELO DA ASSINATURA.
        //    ConfiguraAparenciaAssinatura(signatureAppearance, Reason, Contact, Location, Creator, bmp, Altura, Largura, X, Y, Escala, Pagina, pdfReader);

        //    //ADICIONA O CARIMBO DO TEMPO.
        //   TSAClientBouncyCastle tsaClient = null;
        //    if (AddTimeStamper)
        //    {
        //        //urlTimeStamper = http://timestamp.globalsign.com/scripts/timestamp.dll
        //        //urlTimeStamper = "http://timestamp.apple.com/ts01";
        //        tsaClient = new TSAClientBouncyCastle(urlTimeStamper, timeStampUser, timeStampPass, TSAClientBouncyCastle.DEFAULTTOKENSIZE, MyDigestAlgorithm);
        //    }
        //    IOcspClient ocspClient = new OcspClientBouncyCastle();
        //    List<ICrlClient> crlList = new List<ICrlClient>();
        //    crlList.Add(new CrlClientOnline(chain));

        //    //Nota 2: O hash da política de assinatura no atributo id-aa-ets-sigPolicyId da assinatura deve ser o hash interno que está na própria PA e não o hash da PA que se encontra publicada na LPA.
        //    if (AplicaPolitica)
        //    {
        //            SignaturePolicyInfo spi = PoliticaDaAssinatura();
        //        MakeSignature.SignDetached(signatureAppearance, externalSignature, chain, crlList, ocspClient, tsaClient, 0, CryptoStandard.CADES, spi);
        //    }
        //    else
        //    {
        //        MakeSignature.SignDetached(signatureAppearance, externalSignature, chain, crlList, ocspClient, tsaClient, 0, CryptoStandard.CADES);
        //    }
        //    try { signedPdf.Flush(); }
        //    catch { }
        //    try { signedPdf.Close(); } catch { };
        //    pdfReader.Close();
        //    try {
        //    pdfReader.Dispose();
        //    }
        //    catch { }
        //}

        public static void AssinaComToken(string FileName, string SignFileName, CertSimples cert, float X, float Y, int Pagina, int Rotation, bool AddTimeStamper = true, string urlTimeStamper = "https://freetsa.org/tsr", string timeStampUser = "", string timeStampPass = "", string Reason = "Assinatura Digital", bool AplicaPolitica = false, string MyDigestAlgorithm = "SHA-1", string Contact = "", string Location = "Indústrias Nucleares do Brasil S/A - INB", string Creator = "Assinador da INB", TipoAssinatura Tipo = TipoAssinatura.Normal, string Cargo = "", string CREACRM = "")
        {
            string SourcePdfFileName = FileName;
            string DestPdfFileName   = SignFileName;
            int    Largura           = 155;
            int    Altura            = 63;

            Org.BouncyCastle.X509.X509CertificateParser cp = new Org.BouncyCastle.X509.X509CertificateParser();

            Org.BouncyCastle.X509.X509Certificate[] chain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(cert.Certificado.RawData) };


            //IExternalSignature externalSignature = new X509Certificate2Signature(cert.Certificado, MyDigestAlgorithm);

            RSACryptoServiceProvider rsa;
            RSACryptoServiceProvider Provider;
            IExternalSignature       externalSignature = null;


            if (cert.Certificado.PrivateKey is RSACryptoServiceProvider)
            {
                rsa               = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                Provider          = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                externalSignature = new AsymmetricAlgorithmSignature(Provider, MyDigestAlgorithm);
            }
            else
            {
                rsa               = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                Provider          = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                externalSignature = new AsymmetricAlgorithmSignature(Provider, MyDigestAlgorithm);
            }

            PdfReader  pdfReader = new PdfReader(SourcePdfFileName);
            FileStream signedPdf = new FileStream(DestPdfFileName, FileMode.Create, FileAccess.ReadWrite); //the output pdf file

            string     path       = System.AppDomain.CurrentDomain.BaseDirectory + "Temp\\";               //cria a assinatura
            PdfStamper pdfStamper = PdfStamper.CreateSignature(pdfReader, signedPdf, '\0', path + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf", true);

            PdfSignatureAppearance signatureAppearance = pdfStamper.SignatureAppearance;
            Bitmap bmp = INB.Assinador.Model.Graphic.ConfiguraBMP(cert, out Altura, Tipo);

            //CONFIGURA A APARÊNCIA DO SELO DA ASSINATURA.
            ConfiguraAparenciaAssinatura(signatureAppearance, Reason, Contact, Location, Creator, bmp, Altura, Largura, X, Y, Rotation, Pagina, pdfReader);

            //ADICIONA O CARIMBO DO TEMPO.
            TSAClientBouncyCastle tsaClient = null;

            if (AddTimeStamper)
            {
                //urlTimeStamper = http://timestamp.globalsign.com/scripts/timestamp.dll
                //urlTimeStamper = "http://timestamp.apple.com/ts01";
                tsaClient = new TSAClientBouncyCastle(urlTimeStamper, timeStampUser, timeStampPass, TSAClientBouncyCastle.DEFAULTTOKENSIZE, MyDigestAlgorithm);
            }
            IOcspClient       ocspClient = new OcspClientBouncyCastle();
            List <ICrlClient> crlList    = new List <ICrlClient>();

            crlList.Add(new CrlClientOnline(chain));

            //Nota 2: O hash da política de assinatura no atributo id-aa-ets-sigPolicyId da assinatura deve ser o hash interno que está na própria PA e não o hash da PA que se encontra publicada na LPA.
            if (AplicaPolitica)
            {
                SignaturePolicyInfo spi = PoliticaDaAssinatura();
                MakeSignature.SignDetached(signatureAppearance, externalSignature, chain, crlList, ocspClient, tsaClient, 0, CryptoStandard.CADES, spi);
            }
            else
            {
                MakeSignature.SignDetached(signatureAppearance, externalSignature, chain, crlList, ocspClient, tsaClient, 0, CryptoStandard.CADES);
            }
            try { signedPdf.Flush(); }
            catch { }
            try { signedPdf.Close(); } catch { };
            pdfReader.Close();
            try
            {
                pdfReader.Dispose();
            }
            catch { }
        }
Exemplo n.º 8
0
        public XmlDocument Assinar(string lsConteudoXML, string pUri, X509Certificate2 pCertificado, TipoAssinatura tipoassinatura, string idUri)
        {
            pUri = "Reinf";

            //Abrir o arquivo XML a ser assinado e ler o seu conteúdo
            string vXMLString = lsConteudoXML;

            //if (!string.IsNullOrEmpty(pArqXMLAssinar))
            //{
            //    using (StreamReader SR = File.OpenText(pArqXMLAssinar))
            //    {
            //        vXMLString = SR.ReadToEnd();
            //        SR.Close();
            //    }
            //}

            //Atualizar atributos de retorno com conteúdo padrão
            this.vResultado       = 0;
            this.vResultadoString = "Assinatura realizada com sucesso";

            try
            {
                // Verifica o certificado a ser utilizado na assinatura
                string _xnome = "";
                if (pCertificado != null)
                {
                    _xnome = pCertificado.Subject.ToString();
                }

                X509Certificate2 _X509Cert = new X509Certificate2();
                X509Store        store     = new X509Store("MY", StoreLocation.CurrentUser);
                store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
                X509Certificate2Collection collection  = (X509Certificate2Collection)store.Certificates;
                X509Certificate2Collection collection1 = (X509Certificate2Collection)collection.Find(X509FindType.FindBySubjectDistinguishedName, _xnome, false);

                if (collection1.Count == 0)
                {
                    this.vResultado       = 2;
                    this.vResultadoString = "Problemas no certificado digital";
                }
                else
                {
                    // certificado ok
                    _X509Cert = collection1[0];
                    string x;
                    x = _X509Cert.GetKeyAlgorithm().ToString();

                    // Create a new XML document.
                    XmlDocument doc = new XmlDocument();

                    // Format the document to ignore white spaces.
                    doc.PreserveWhitespace = false;

                    // Load the passed XML file using it’s name.
                    try
                    {
                        doc.LoadXml(vXMLString);

                        // Verifica se a tag a ser assinada existe é única
                        int qtdeRefUri = doc.GetElementsByTagName(pUri).Count;

                        if (qtdeRefUri == 0)
                        {
                            // a URI indicada não existe
                            this.vResultado       = 4;
                            this.vResultadoString = "A tag de assinatura " + pUri.Trim() + " não existe";
                        }
                        // Exsiste mais de uma tag a ser assinada
                        else
                        {
                            if (qtdeRefUri > 1)
                            {
                                // existe mais de uma URI indicada
                                this.vResultado       = 5;
                                this.vResultadoString = "A tag de assinatura " + pUri.Trim() + " não é unica";
                            }
                            else
                            {
                                try
                                {
                                    // Create a SignedXml object.
                                    SignedXml signedXml = new SignedXml(doc);

                                    #region Alteracao01
                                    //                                if (!COM_Pin) &&
                                    //clsX509Certificate2Extension.IsA3(x509Cert) &&
                                    //!Empresas.Configuracoes[empresa].CertificadoPINCarregado)
                                    //                                {
                                    //                                    x509Cert.SetPinPrivateKey(Empresas.Configuracoes[empresa].CertificadoPIN);
                                    //                                    Empresas.Configuracoes[empresa].CertificadoPINCarregado = true;
                                    //                                }

                                    if (tipoassinatura == TipoAssinatura.Sha256)
                                    {
                                        signedXml.SignedInfo.SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";
                                        signedXml.SigningKey = _X509Cert.GetRSAPrivateKey();
                                    }
                                    else
                                    {
                                        signedXml.SigningKey = _X509Cert.PrivateKey;
                                    }
                                    #endregion Alteracao01

                                    // Add the key to the SignedXml document
                                    //signedXml.SigningKey = _X509Cert.PrivateKey;

                                    // Create a reference to be signed
                                    Reference reference = new Reference();

                                    // pega o uri que deve ser assinada
                                    XmlAttributeCollection _Uri = doc.GetElementsByTagName(pUri).Item(0).Attributes;
                                    reference.Uri = "#" + idUri;

                                    //foreach (XmlAttribute _atributo in _Uri)
                                    //{
                                    //    if (_atributo.Name == "Id")
                                    //    {
                                    //        reference.Uri = "#" + _atributo.InnerText;
                                    //    }
                                    //}

                                    // Add an enveloped transformation to the reference.
                                    XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
                                    reference.AddTransform(env);

                                    XmlDsigC14NTransform c14 = new XmlDsigC14NTransform();
                                    reference.AddTransform(c14);

                                    // Add the reference to the SignedXml object.
                                    signedXml.AddReference(reference);
                                    #region Alteracao2
                                    if (tipoassinatura == TipoAssinatura.Sha256)
                                    {
                                        reference.DigestMethod = "http://www.w3.org/2001/04/xmlenc#sha256";
                                    }
                                    #endregion Alteracao2

                                    // Create a new KeyInfo object
                                    KeyInfo keyInfo = new KeyInfo();

                                    // Load the certificate into a KeyInfoX509Data object
                                    // and add it to the KeyInfo object.
                                    keyInfo.AddClause(new KeyInfoX509Data(_X509Cert));

                                    // Add the KeyInfo object to the SignedXml object.
                                    signedXml.KeyInfo = keyInfo;
                                    signedXml.ComputeSignature();

                                    // Get the XML representation of the signature and save
                                    // it to an XmlElement object.
                                    XmlElement xmlDigitalSignature = signedXml.GetXml();

                                    // Gravar o elemento no documento XML
                                    doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, true));
                                    XMLDoc = new XmlDocument();
                                    XMLDoc.PreserveWhitespace = false;
                                    XMLDoc = doc;

                                    // Atualizar a string do XML já assinada
                                    this.vXMLStringAssinado = XMLDoc.OuterXml;

                                    // Gravar o XML no HD
                                    //wob alterei
                                    //StreamWriter SW_2 = File.CreateText(pArqXMLAssinar);
                                    //SW_2.Write(this.vXMLStringAssinado);
                                    //SW_2.Close();
                                }
                                catch (Exception caught)
                                {
                                    this.vResultado       = 6;
                                    this.vResultadoString = "Erro ao assinar o documento - " + caught.Message;
                                }
                            }
                        }
                    }
                    catch (Exception caught)
                    {
                        this.vResultado       = 3;
                        this.vResultadoString = "XML mal formado - " + caught.Message;
                    }
                }
            }
            catch (Exception caught)
            {
                this.vResultado       = 1;
                this.vResultadoString = "Problema ao acessar o certificado digital" + caught.Message;
            }

            return(XMLDoc);
        }
Exemplo n.º 9
0
        private static void ConfiguraAparencia(PdfSigner objStamper, CertSimples cert, int X, int Y, int Largura, int Altura, int Pagina, int Rotation, string Contact = "", string Reason = "Assinatura Digital", string Location = "Indústrias Nucleares do Brasil S/A - INB", string Creator = "Assinador da INB", TipoAssinatura Tipo = TipoAssinatura.Normal, string Cargo = "", string CREACRM = "")
        {
            PdfDocument pdfDoc = objStamper.GetDocument();
            PdfPage     oPage = pdfDoc.GetPage(Pagina);
            int         LarguraAssinatura = Largura;
            int         AlturaAssinatura = Altura;
            int         X_Ajustado, Y_Ajustado;

            X_Ajustado = X;
            Y_Ajustado = Y;
            var    crop = oPage.GetCropBox();
            float  Left, Top, Width, Height;
            Bitmap bmp            = Graphic.ConfiguraBMP(cert, out Altura, Tipo);

            if (Rotation == 270)
            {
                Left = (int)crop.GetLeft() + X_Ajustado;
                Top  = (int)crop.GetRight() - (Y_Ajustado + AlturaAssinatura + 5);
            }
            else if (Rotation == 90)
            {
                Left = (int)crop.GetRight() + X_Ajustado;
                Top  = (int)crop.GetLeft() - (Y_Ajustado + AlturaAssinatura + 5);
            }
            else
            {
                Left = (int)crop.GetLeft() + X_Ajustado;
                Top  = (int)crop.GetTop() - (Y_Ajustado + AlturaAssinatura + 5);
            }
            Width  = LarguraAssinatura;
            Height = AlturaAssinatura;
            iText.Kernel.Geom.Rectangle oRetangulo = new iText.Kernel.Geom.Rectangle(Left, Top, Width, Height);
            var pageSize          = pdfDoc.GetPage(Pagina).GetMediaBox();
            var signaturePosition = new iText.Kernel.Geom.Rectangle(pageSize.GetLeft(), pageSize.GetBottom(), pageSize.GetWidth(), pageSize.GetHeight());
            PdfSignatureAppearance signatureAppearance = objStamper.GetSignatureAppearance();
            var memoryStream = new MemoryStream();

            bmp.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
            iText.IO.Image.ImageData pic = iText.IO.Image.ImageDataFactory.Create(memoryStream.ToArray());
            signatureAppearance.SetReason(Reason);
            signatureAppearance.SetLocation(Location);
            signatureAppearance.SetSignatureCreator(Creator);
            signatureAppearance.SetSignatureGraphic(pic);
            signatureAppearance.SetRenderingMode(PdfSignatureAppearance.RenderingMode.GRAPHIC);
            signatureAppearance.SetPageRect(oRetangulo);
            signatureAppearance.SetPageNumber(Pagina);
        }
Exemplo n.º 10
0
        public static void AssinaPDF(byte[] File, out byte[] SignFile, CertSimples oCert, int Pagina, int X, int Y, int Rotation, bool AddTimeStamper = true, string urlTimeStamper = "https://freetsa.org/tsr", string timeStampUser = "", string timeStampPass = "", string Reason = "Assinatura Digital", bool AplicaPolitica = false, string Contact = "", TipoAssinatura Tipo = TipoAssinatura.Normal, string Cargo = "", string CREACRM = "")
        {
            List <ICrlClient> crlList;
            X509Certificate2  cert;

            cert = getDadosCadeiaCertificadao(oCert, out crlList);
            AssinaComCertificado(crlList, File, out SignFile, oCert, X, Y, Pagina, Rotation, AddTimeStamper, urlTimeStamper, timeStampUser, timeStampPass, Reason, AplicaPolitica, null, null, null, null, Tipo, Cargo, CREACRM);
        }
Exemplo n.º 11
0
        public static void AssinaComCertificado(List <ICrlClient> crlList, string FileName, string SignFileName, CertSimples cert, int X, int Y, int Pagina, int Rotation, bool AddTimeStamper = true, string urlTimeStamper = "https://freetsa.org/tsr", string timeStampUser = "", string timeStampPass = "", string Reason = "Assinatura Digital", bool AplicaPolitica = false, string MyDigestAlgorithm = "SHA-256", string Contact = "", string Location = "Indústrias Nucleares do Brasil S/A - INB", string Creator = "Assinador da INB", TipoAssinatura Tipo = TipoAssinatura.Normal, string Cargo = "", string CREACRM = "")
        {
            string             SourcePdfFileName = FileName;
            string             DestPdfFileName   = SignFileName;
            int                Largura           = 140;
            int                Altura            = 63;
            PdfReader          pdfReader         = new PdfReader(SourcePdfFileName);
            FileStream         signedPdf         = new FileStream(DestPdfFileName, FileMode.Create, FileAccess.ReadWrite);
            StampingProperties osp = new StampingProperties();

            osp.UseAppendMode();
            PdfSigner   objStamper = new PdfSigner(pdfReader, signedPdf, osp);
            ITSAClient  tsaClient  = null;
            IOcspClient ocspClient = null;

            ConfiguraAparencia(objStamper, cert, X, Y, Largura, Altura, Pagina, Rotation, Contact, Reason, Location, Creator, Tipo);

            Org.BouncyCastle.X509.X509Certificate       vert       = Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(cert.Certificado);
            Org.BouncyCastle.X509.X509CertificateParser cp         = new Org.BouncyCastle.X509.X509CertificateParser();
            Org.BouncyCastle.X509.X509Certificate[]     Arraychain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(cert.Certificado.RawData) };
            X509CertificateParser objCP = new X509CertificateParser();

            RSACryptoServiceProvider rsa;
            RSACryptoServiceProvider Provider;
            IExternalSignature       externalSignature;

            if (cert.Certificado.PrivateKey is RSACryptoServiceProvider)
            {
                rsa               = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                Provider          = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                externalSignature = new AsymmetricAlgorithmSignature(Provider, MyDigestAlgorithm);
            }
            else
            {
                //RETIRAR ESSA PARTE PARA IMPLEMENTAR OS DEMAIS MÉTODOS, OLHANDO OUTROS TIPOS DE CERTIFICADO
                rsa               = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                Provider          = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                externalSignature = new AsymmetricAlgorithmSignature(Provider, MyDigestAlgorithm);
            }
            if (AddTimeStamper)
            {
                tsaClient = new TSAClientBouncyCastle(urlTimeStamper, timeStampUser, timeStampPass);
            }
            OCSPVerifier ocspVerifier = new OCSPVerifier(null, null);

            ocspClient = new OcspClientBouncyCastle(ocspVerifier);
            if (AplicaPolitica)
            {
                SignaturePolicyInfo spi = getPolitica();
                objStamper.SignDetached(externalSignature, Arraychain, crlList, ocspClient, tsaClient, 0, PdfSigner.CryptoStandard.CADES, spi);
            }
            else
            {
                objStamper.SignDetached(externalSignature, Arraychain, crlList, ocspClient, tsaClient, 0, PdfSigner.CryptoStandard.CADES);
            }
            try { signedPdf.Flush(); }
            catch { }
            try { signedPdf.Close(); } catch { };
            pdfReader.Close();
        }
Exemplo n.º 12
0
        public static void AssinaComCertificado(List <ICrlClient> crlList, byte[] File, out byte[] SignFile, CertSimples cert, int X, int Y, int Pagina, int Rotation, bool AddTimeStamper = true, string urlTimeStamper = "https://freetsa.org/tsr", string timeStampUser = "", string timeStampPass = "", string Reason = "Assinatura Digital", bool AplicaPolitica = false, string MyDigestAlgorithm = "SHA-256", string Contact = "", string Location = "Indústrias Nucleares do Brasil S/A - INB", string Creator = "Assinador da INB", TipoAssinatura Tipo = TipoAssinatura.Normal, string Cargo = "", string CREACRM = "")
        {
            int                Largura       = 140;
            int                Altura        = 63;
            MemoryStream       ArquivoOrigem = new MemoryStream(File);
            PdfReader          pdfReader     = new PdfReader(ArquivoOrigem);
            MemoryStream       signedPdf     = new MemoryStream();
            StampingProperties osp           = new StampingProperties();

            osp.UseAppendMode();
            PdfSigner   objStamper = new PdfSigner(pdfReader, signedPdf, osp);
            ITSAClient  tsaClient  = null;
            IOcspClient ocspClient = null;

            ConfiguraAparencia(objStamper, cert, X, Y, Largura, Altura, Pagina, Rotation, Contact, Reason, Location, Creator, Tipo, Cargo, CREACRM);

            Org.BouncyCastle.X509.X509Certificate       vert       = Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(cert.Certificado);
            Org.BouncyCastle.X509.X509CertificateParser cp         = new Org.BouncyCastle.X509.X509CertificateParser();
            Org.BouncyCastle.X509.X509Certificate[]     Arraychain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(cert.Certificado.RawData) };
            X509CertificateParser objCP = new X509CertificateParser();

            RSACryptoServiceProvider rsa;
            RSACryptoServiceProvider Provider;
            IExternalSignature       externalSignature;

            if (cert.Certificado.PrivateKey is RSACryptoServiceProvider)
            {
                rsa               = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                Provider          = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                externalSignature = new AsymmetricAlgorithmSignature(Provider, MyDigestAlgorithm);
            }
            else
            {
                RSA rsaTeste = cert.Certificado.GetRSAPrivateKey();

                rsa               = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                Provider          = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                externalSignature = new AsymmetricAlgorithmSignature(Provider, MyDigestAlgorithm);
            }

            if (AddTimeStamper)
            {
                tsaClient = new TSAClientBouncyCastle(urlTimeStamper, timeStampUser, timeStampPass);
            }
            OCSPVerifier ocspVerifier = new OCSPVerifier(null, null);

            ocspClient = new OcspClientBouncyCastle(ocspVerifier);
            if (AplicaPolitica)
            {
                SignaturePolicyInfo spi = getPolitica();
                objStamper.SignDetached(externalSignature, Arraychain, crlList, ocspClient, tsaClient, 0, PdfSigner.CryptoStandard.CADES, spi);
            }
            else
            {
                objStamper.SignDetached(externalSignature, Arraychain, crlList, ocspClient, tsaClient, 0, PdfSigner.CryptoStandard.CADES);
            }

            try
            {
                SignFile = signedPdf.ToArray();
                try
                {
                    signedPdf.Close();
                    signedPdf.Dispose();
                }
                catch { }
            }
            catch (Exception ex)
            {
                SignFile = null;
                throw ex;
            }
            try
            {
                signedPdf.Close();
            }
            catch (Exception ex) { }
            pdfReader.Close();
        }