Exemple #1
0
        /// <summary>
        /// Localizar o certificado digital previamente selecionado nas configurações.
        /// </summary>
        /// <returns>X509Certificate2 - Certificado selecionado para NF-e</returns>
        internal static X509Certificate2 Certificado_Digital(int iEmpresa)
        {
            Certificado      cert   = new Certificado();
            string           sQuery = "select Serial_Number_Certifica_Digital from empresas where empresa = " + iEmpresa;
            string           sSerial_Number_Certificado = CompSoft.Data.SQL.ExecuteScalar(sQuery).ToString();
            X509Certificate2 X509Cert = cert.Buscar_Certificado_Digital(sSerial_Number_Certificado, X509FindType.FindBySerialNumber);

            return(X509Cert);
        }
Exemple #2
0
        /// <summary>
        /// Assina arquivo XML
        /// </summary>
        /// <param name="_arquivo">Path completo do arquivo que será assinado.</param>
        /// <param name="_uri">URI a ser assinada (Ex.: infCanc, infNFe, infInut, etc.)</param>
        /// <param name="sSerialNumber">string com o Serial number para localizar o Certificado Digital</param>
        /// <returns></returns>
        public bool AssinarArquivoXML(string _arquivo, string _uri, string sSerialNumber)
        {
            bool bRetorno = false;

            if (string.IsNullOrEmpty(_arquivo) || !File.Exists(_arquivo))
            {
                bRetorno = false;
            }
            else
            {
                if (_uri == null)
                {
                    bRetorno = false;
                }
                else
                {
                    string _stringXml;

                    //-- Le o arquivo xml
                    StreamReader SR;
                    SR         = File.OpenText(_arquivo);
                    _stringXml = SR.ReadToEnd();
                    SR.Close();

                    //-- Realiza assinatura
                    AssinaturaDigital AD   = new AssinaturaDigital();
                    X509Certificate2  cert = new X509Certificate2();

                    //-- Seleciona certificado do repositório MY do windows ou um certificado previamento selecionado.
                    Certificado certificado = new Certificado();
                    if (string.IsNullOrEmpty(sSerialNumber))
                    {
                        cert = certificado.Buscar_Certificado_Digital();
                    }
                    else
                    {
                        cert = certificado.Buscar_Certificado_Digital(sSerialNumber, X509FindType.FindBySerialNumber);
                    }

                    //-- Caso o certificado digital seja selecionado.
                    if (certificado.Certificado_Selecionado)
                    {
                        //-- Avisa usuário sobre vencimento do certificado digital.
                        this.Verifica_Vencimento_Certificado(cert);

                        //-- Assina o XML.
                        AssinaturaDigital.Retorno_Assinatura resultado = AD.Assinar(_stringXml, _uri, cert);
                        if (resultado == AssinaturaDigital.Retorno_Assinatura.Sucesso)
                        {
                            //-- grava arquivo assinado
                            StreamWriter SW;
                            SW = File.CreateText(_arquivo.Trim());
                            SW.Write(AD.XMLStringAssinado);
                            SW.Close();
                            bRetorno = true;
                        }
                        else
                        {
                            MsgBox.Show(AD.mensagemResultado);
                            bRetorno = false;
                        }
                    }
                    else
                    {
                        bRetorno = false;
                    }
                }
            }

            return(bRetorno);
        }