|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Assinar XML com certificado Digital |
Débuté par TOM SILVA / RMT SYST, 30 mai 2016 21:18 - 3 réponses |
| |
| | | |
|
| |
Membre enregistré 7 messages Popularité : +2 (2 votes) |
|
Posté le 30 mai 2016 - 21:18 |
Aqui deixo para voces usando como assinar um xml usando certificado digital. em base ao exemplo do Vilani.
Agradecimentos a @JorgeMatos - PT e @mpDani - MX
Codigo do botao
sXmlstring , sMlfirmado is string sXmlstring = fLoadText(fExeDir()+"\arquivo.xml",foUnicode) sMlfirmado = AssinarXML(sXmlstring)
fSaveText(fExeDir()+"\arquivoAssinado.xml",sMlfirmado)
Procedure
Procedure AssinarXML(xmlString is string) s_IssuerName, s_SerialNumber are strings
X509Cert is X509Certificate2("certificado.pfx","SenhaCertificado")
Doc is System.Xml.XmlDocument;
Doc.LoadXml(xmlString)
VrSignedXml is SignedXml(Doc)
VrSignedXml.SigningKey = X509Cert.PrivateKey
Reference is Reference(); Reference.set_Uri("");
Env is XmlDsigEnvelopedSignatureTransform(); Reference.AddTransform(Env);
VrSignedXml.AddReference(Reference)
VrkeyInfo is KeyInfo
VrkeyInfo.AddClause(new KeyInfoX509Data(X509Cert))
kdata is KeyInfoX509Data(X509Cert) s_IssuerName = X509Cert.IssuerName.ToString() s_SerialNumber = X509Cert.SerialNumber kdata.AddIssuerSerial(s_IssuerName, s_SerialNumber) VrkeyInfo.AddClause(kdata)
VrSignedXml.keyInfo = VrkeyInfo
VrSignedXml.ComputeSignature()
xmlDigitalSignature is System.Xml.XmlElement dynamic = VrSignedXml.GetXml()
Doc.DocumentElement.AppendChild(Doc.ImportNode(xmlDigitalSignature, True))
RESULT Doc.get_InnerXml() |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 30 mai 2016 - 22:34 |
Parabéns Tom e Vilani!
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 31 mai 2016 - 04:28 |
SÉRIE NFe - Assinar NFe com Certificado A1
NFe, XML, Certificado digital, Assinatura...... Sei que o assunto não é novo, mas para mim é um novo desafio, hoje contamos com muitas soluções prontas que nos auxiliam com as tarefas da NFe desde a geração do XML, assinatura digital até a impressão da DANFE, em nosso caso optamos por uma versão grátis o escolhido foi o NFe PHP, inclusive quero deixar os meus agradecimentos ao Roberto L. Machado e aos demais colaboradores desta excelente solução, fiquei impressionado com a qualidade do material, o projeto é super organizado e documentado mesmo eu não tendo muita experiência com PHP não tive dificuldades para integrar ao meu projeto. Bom vamos ao que interessa, hoje pela manhã tive que ficar de molho uma hora e meia esperando minha consulta no dentista, para não ficar entediado resolvi dar uma olhada no post anterior para ver o que faltava para concluir nossa assinatura com o certificado digital, e depois de uns ajustes aqui e outros ali, pimba!!! XML Assinado com sucesso rsrsr.
Pretendemos iniciar uma série de posts sobre esse assunto (NFe), a ideia é podermos comparar as diversas formas de solucionar esse problema, seja usando Wlanguage, ou soluções de terceiros como NFePHP, OpenNFe, ACBR, vamos iniciar com esse tutorial complementar do post anterior, onde vamos fazer a assinatura do XML com o certificado digital A1, quero deixar aberto o espaço a quem quiser colaborar com qualquer material sobre o assunto, bom vamos colocar a mão na massa agora.
Código da Procedure:
Procedure ASSINA_NFe(xmlString, RefUri, sChNfe, x509Cert)
Doc is System.Xml.XmlDocument;
Doc.LoadXml(xmlString)
qtdeRefUri is int = Doc.GetElementsByTagName(RefUri).Count
IF (qtdeRefUri = 0)
ELSE
IF (qtdeRefUri > 1)
ELSE
VrSignedXml is SignedXml(Doc)
VrSignedXml.SigningKey = x509Cert.PrivateKey
Reference is Reference Reference.Uri = "#" + sChNfe
Env is XmlDsigEnvelopedSignatureTransform Reference.AddTransform(Env)
c14 is XmlDsigC14NTransform Reference.AddTransform(c14)
VrSignedXml.AddReference(Reference)
VrkeyInfo is KeyInfo
VrkeyInfo.AddClause(new KeyInfoX509Data(x509Cert))
VrSignedXml.keyInfo = VrkeyInfo VrSignedXml.ComputeSignature()
xmlDigitalSignature is System.Xml.XmlElement dynamic = VrSignedXml.GetXml()
Doc.DocumentElement.AppendChild(Doc.ImportNode(xmlDigitalSignature, True))
RESULT Doc.get_InnerXml() END END
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 12 février 2018 - 16:21 |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|