Desenvolvimento NFS-e
Desenvolvimento NFS-e
Desenvolvimento NFS-e
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Desenvolvimento NFS-e

Site destinado a desenvolvedores de softwares na integração com a NFS-e.
 
InícioInício  Últimas imagensÚltimas imagens  ProcurarProcurar  RegistarRegistar  Entrar  

 

 (RESOLVIDO)Assinar XML

Ir para baixo 
2 participantes
AutorMensagem
hudsonjm




Mensagens : 3
Data de inscrição : 07/11/2012

(RESOLVIDO)Assinar XML Empty
MensagemAssunto: (RESOLVIDO)Assinar XML   (RESOLVIDO)Assinar XML EmptyQua Nov 07, 2012 8:50 am

Bom dia, pessoal sou novo no fórum
estou desenvolvendo uma aplicação em JAVA para envio de NFSe GINFES Paranaguá-PR
eu conheço um pouco do processo. Enviamos NFSe hoje pelo Uninfse, mas preciso algo java para rodar em Linux.
Estou com dificuldade em como assinar os arquivos XML,
já tenho o arquivo xml validado,
ja tenho o certificado, alguem tem um exmplo de classe que posso utilizar.

Att Hudson
Ir para o topo Ir para baixo
BrunoSilva




Mensagens : 15
Data de inscrição : 18/10/2012

(RESOLVIDO)Assinar XML Empty
MensagemAssunto: Re: (RESOLVIDO)Assinar XML   (RESOLVIDO)Assinar XML EmptyTer Nov 13, 2012 12:14 pm

hudsonjm escreveu:
Bom dia, pessoal sou novo no fórum
estou desenvolvendo uma aplicação em JAVA para envio de NFSe GINFES Paranaguá-PR
eu conheço um pouco do processo. Enviamos NFSe hoje pelo Uninfse, mas preciso algo java para rodar em Linux.
Estou com dificuldade em como assinar os arquivos XML,
já tenho o arquivo xml validado,
ja tenho o certificado, alguem tem um exmplo de classe que posso utilizar.

Att Hudson

Boa Tarde,

Também estou iniciando o desenvolvimento de uma aplicação, na verdade eu não tenho ideia como seria no java, mas no c# eu tenho uma namespace que eu utilizo para assinar que tem todas as informações necessárias solicitadas na documentação da Ginfes,

criei um método passando como parâmetro

Código:
           
//Metodo que irá pegar as informações do meu Certificado. 
X509Certificate2 certificado = SelecionarCertificadoDoEmissor();

//Metodo que ira assinar o documento
NfeXmlSigner.AssinarDocumento(mensagemAEnviar, "NFse", certificado);


private static void SignDocument(XmlDocument doc, string nodeName, string identifiedNodeName, AppendTypeEnum appendType, X509Certificate2 certificado)
        {
            //Validar certificado
            if (certificado == null)
            {
                throw new Exception("Certificado Digital não encontrado");
            }
            if (!certificado.HasPrivateKey)
            {
                throw new Exception("Certificado Digital deve possuir chave privada.");
            }


            //Para cada elemento encontrado no documento
            XmlNodeList nodes = doc.GetElementsByTagName(nodeName);

            foreach (XmlElement elem in nodes)
            {

                string id = getId(elem, identifiedNodeName);

                //Identificar e referenciar o "bloco" dentro do documento XML
                Reference reference = new Reference();
                http://reference.Uri = "#NFe minha chave de acesso";
                reference.Uri = string.Concat("#", id);

                //Aplicar os algoritmos de transformação
                reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
                reference.AddTransform(new XmlDsigC14NTransform());

                //Definir a chave de criptografia do algoritmo de assinatura assimétrica
                SignedXml signedXml;

                switch (appendType)
                {
                    case AppendTypeEnum.Into:
                        XmlDocument docNfe = doc.Implementation.CreateDocument();
                        docNfe.AppendChild(docNfe.ImportNode(elem, true));
                        signedXml = new SignedXml(docNfe);
                        break;
                    case AppendTypeEnum.After:
                        signedXml = new SignedXml(elem);
                        break;
                    default:
                        throw new ArgumentException("O valor do parâmetro \"appendType\" não é válido.", "appendType");
                }

                signedXml.SigningKey = certificado.PrivateKey;
                signedXml.AddReference(reference);

                //Calcular a assinatura digital
                signedXml.ComputeSignature();

                //Adicionar o certificado ao documento NF-e assinado,
                KeyInfo keyInfo = new KeyInfo();
                keyInfo.AddClause(new KeyInfoX509Data(certificado));
                signedXml.KeyInfo = keyInfo;

                //Obter o "bloco" que representa o XML da assinatura
                XmlElement signedXmlElem = signedXml.GetXml();

                //Adicionar o Elemento de assinatura ao documento NF-e
                switch (appendType)
                {
                    case AppendTypeEnum.Into:
                        elem.AppendChild(doc.ImportNode(signedXmlElem, true));
                        break;
                    case AppendTypeEnum.After:
                        elem.ParentNode.InsertAfter(doc.ImportNode(signedXmlElem, true), elem);
                        break;
                    default:
                        throw new ArgumentException("O valor do parâmetro \"appendType\" não é válido.", "appendType");
                }
            }
        }
Ir para o topo Ir para baixo
 
(RESOLVIDO)Assinar XML
Ir para o topo 
Página 1 de 1
 Tópicos semelhantes
-
» Erro de Assinatura - E302
» Como assinar um xml com o php
» (RESOLVIDO)tagOutrasInformações
» Como assinar Tag de NFe e Tag de lote?
» (RESOLVIDO)NFS-e Modelo 21

Permissões neste sub-fórumNão podes responder a tópicos
Desenvolvimento NFS-e  :: Duvidas Frequentes-
Ir para: