Example #1
0
 /// <summary>
 ///     Assinar
 /// </summary>
 /// <param name="entity"></param>
 /// <returns></returns>
 private void Assinar(NFe entity)
 {
     try
     {
         var assinatura = AssinaturaDigital.AssinarNFe(entity, entity.infNFe.Id, _certificadoDigital);
         entity.Signature = assinatura;
     }
     catch (Exception ex)
     {
         Utils.TraceException(ex, "Erro ao assinar arquivo Xml");
         throw new FalhaAssinaturaException("Erro ao assinar arquivo Xml", ex);
     }
 }
 /// <summary>
 ///     Assinar
 /// </summary>
 /// <param name="entity"></param>
 /// <returns></returns>
 private void Assinar(evento entity)
 {
     try
     {
         if (entity.infEvento.Id == null)
         {
             throw new Exception("Não é possível assinar um objeto evento sem sua respectiva Id!");
         }
         var assinatura = AssinaturaDigital.AssinarNFe(entity, entity.infEvento.Id, _certificadoDigital);
         entity.Signature = assinatura;
     }
     catch (Exception ex)
     {
         Utils.TraceException(ex, "Erro ao assinar arquivo Xml");
         throw new FalhaAssinaturaException("Erro ao assinar arquivo Xml", ex);
     }
 }
        public static ResultadoAssinatura AssinaXML(String arqxml, String SUri, X509Certificate2 cert, VersaoXML versao)
        {
            var retorno = new ResultadoAssinatura();

            string _stringXml;
            string newArqXml;
            var    stType = string.Empty;

            if (SUri == "infNFe")
            {
                stType    = "TNFe";
                newArqXml = arqxml.Substring(0, arqxml.Length - 51) + "ass" + arqxml.Substring(arqxml.Length - 51, 51);
            }
            else if (SUri == "infCanc")
            {
                stType    = "TCancNFe";
                newArqXml = arqxml.Substring(0, arqxml.Length - 7) + "-ped-can.xml";
            }
            else if (SUri == "infInut")
            {
                stType    = "TInutNFe";
                newArqXml = arqxml.Substring(0, arqxml.Length - 7) + "-ped-inu.xml";
            }
            else if (SUri == "infEvento")
            {
                stType    = "TEvento";
                newArqXml = arqxml.Substring(0, arqxml.Length - 7) + "-ass-env.xml";
            }
            else
            {
                retorno.codigoRetorno = TRetornoAssinatura.RefURiNaoExiste;// 4; //erro refURi
                return(retorno);
            }


            //Verifica se arquivo da nota Existe;
            if (File.Exists(arqxml))
            {
                _stringXml = XMLUtils.GetXML(XMLUtils.CarregaXML_HD(arqxml, versao, stType), versao);

                // realiza assinatura
                AssinaturaDigital AD = new AssinaturaDigital();

                retorno.codigoRetorno = AD.AssinarNFe(_stringXml, SUri, cert);

                //limpar certificado
                cert.Reset();

                //assinatura bem sucedida
                if (retorno.codigoRetorno == TRetornoAssinatura.Assinada)
                {
                    if (File.Exists(newArqXml))
                    {
                        File.Delete(newArqXml);
                    }

                    XMLUtils.SalvaXML(newArqXml, (XMLUtils.CarregaXML_STR(AD.XMLStringAssinado, versao, stType)), versao);
                }
                else
                {
                    retorno.mensagem = AD.mensagemResultado;
                }

                return(retorno); //Retorna o resultado da assinatura
            }
            else
            {
                retorno.codigoRetorno = TRetornoAssinatura.ArquivoNaoEncontrado;// 11;//Arquivo nao encontrado
                return(retorno);
            }
        }