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