PROFESSIONAL NEWSGROUPS
WINDEV
,
WEBDEV
and
WINDEV Mobile
Home
|
Recent messages
|
Connect
|
Sign out
|
English
Home
→
WINDEV 25
→
Assinar xml Sefaz com certificado A1 ou A3 em Windev
Assinar xml Sefaz com certificado A1 ou A3 em Windev
Started by amarildo, Aug., 04 2021 12:48 PM - No answer
Connect yourself…
amarildo
#1
Registered member
535 messages
Popularité : +14 (14 votes)
Posted on August, 04 2021 - 12:48 PM
https://windevdesenvolvimento.blogspot.com/2021/08/dicas-3377-windev-webdev-mobile_1.html
Procedure
assinar_xml
(
recebe_xml
,
recebe_refUri
,
recebe_id
,
receber_certificado_local_arquivo
,
receber_senha
)
//,recebe_dados_certificado
//Info(recebe_dados_certificado)
cl
X509certi
is
X509Certificate2
(
receber_certificado_local_arquivo
,
receber_senha
)
//clX509certi
is X509Certificate2(recebe_dados_certificado)
cl
Doc
is
System.Xml.XmlDocument
;
cl
Doc.LoadXml
(
recebe_xml
)
// Ler um arquivo Xml
n
QtdeRefUri
is int
=
cl
Doc.GetElementsByTagName
(
recebe_refUri
)
.
Count
//_refUri= (sRefUri IS STRING = "infNFe")
IF
(
n
QtdeRefUri
) =
0
THEN
RESULT
"erro assinar"
//nao existe // does not exists // ne pas exister
ELSE
VrSignedXml
is
SignedXml
(
cl
Doc
)
//cria um objeto assinado
VrSignedXml.SigningKey
=
cl
X509certi.PrivateKey
// adiciona a chave do certificado
Reference
is
Reference
//= new Reference(); // Cria a referencia para assinatura
Reference.URI
=
"#"
+
recebe_id
Env
is
XmlDsigEnvelopedSignatureTransform
// adiciona um XmlDsigEnvelopedSignatureTransform para a assinatura
Reference.AddTransform
(
Env
)
c
14
is
XmlDsigC14NTransform
Reference.AddTransform
(
c
14
)
VrSignedXml.AddReference
(
Reference
)
// adiciona a referencia no xml assinado
VrkeyInfo
is
KeyInfo
// Cria a chave
VrkeyInfo.AddClause
(
new
KeyInfoX509Data
(
cl
X509certi
)
)
// carrega o certificado em um keyinfox509 e adiciona ao keyinfo
VrSignedXml.KeyInfo
=
VrkeyInfo
// adiciona o keyinfo ao xml assinado
VrSignedXml.ComputeSignature
(
)
xmlDigitalSignature
is
System.Xml.XmlElement dynamic
=
VrSignedXml.GetXml
(
)
// busca a representacao XML da assinatura e salva no XML
cl
Doc.DocumentElement.AppendChild
(
cl
Doc.ImportNode
(
xmlDigitalSignature
,
True
)
)
// adiciona a assinatura no documento
RESULT
cl
Doc.get_InnerXml
(
)
//salva o documento assinado
END
Procedure
assinar_xml_serial
(
recebe_xml
,
recebe_refUri
,
recebe_id
,
receber_serial_numero
)
cl
Certificado
is
X509Store
(
StoreName.My
,
StoreLocation.CurrentUser
)
//Carrega Store do windows, utilizando o Usuario Logado
cl
Certificado.open
(
OpenFlags.ReadOnly
)
cl
Certificado_carrega
is
X509Certificate2Collection
(
cl
Certificado.Certificates
)
// Carregar Certificados
cl
Certificado_colecao
is
X509Certificate2Collection
(
cl
Certificado_carrega.Find
(
X509FindType.FindBySerialNumber
,
receber_serial_numero
,
False
)
)
//Busca certificado que tem o SerialNumber
cl
X509certi
is
X509Certificate2
FOR
E
ACH
cl
X509certi OF
cl
Certificado_colecao
// fazer um loop para pegar o certificado desejado
cl
Doc
is
System.Xml.XmlDocument
;
cl
Doc.LoadXml
(
recebe_xml
)
// Ler um arquivo Xml
n
QtdeRefUri
is int
=
cl
Doc.GetElementsByTagName
(
recebe_refUri
)
.
Count
//_refUri= (sRefUri IS STRING = "infNFe")
IF
(
n
QtdeRefUri
) =
0
THEN
RESULT
"erro assinar"
//nao existe // does not exists // ne pas exister
ELSE
VrSignedXml
is
SignedXml
(
cl
Doc
)
//cria um objeto assinado
VrSignedXml.SigningKey
=
cl
X509certi.PrivateKey
// adiciona a chave do certificado
Reference
is
Reference
//= new Reference(); // Cria a referencia para assinatura
Reference.URI
=
"#"
+
recebe_id
Env
is
XmlDsigEnvelopedSignatureTransform
// adiciona um XmlDsigEnvelopedSignatureTransform para a assinatura
Reference.AddTransform
(
Env
)
c
14
is
XmlDsigC14NTransform
Reference.AddTransform
(
c
14
)
VrSignedXml.AddReference
(
Reference
)
// adiciona a referencia no xml assinado
VrkeyInfo
is
KeyInfo
// Cria a chave
VrkeyInfo.AddClause
(
new
KeyInfoX509Data
(
cl
X509certi
)
)
// carrega o certificado em um keyinfox509 e adiciona ao keyinfo
VrSignedXml.KeyInfo
=
VrkeyInfo
// adiciona o keyinfo ao xml assinado
VrSignedXml.ComputeSignature
(
)
xmlDigitalSignature
is
System.Xml.XmlElement dynamic
=
VrSignedXml.GetXml
(
)
// busca a representacao XML da assinatura e salva no XML
cl
Doc.DocumentElement.AppendChild
(
cl
Doc.ImportNode
(
xmlDigitalSignature
,
True
)
)
// adiciona a assinatura no documento
RESULT
cl
Doc.get_InnerXml
(
)
//salva o documento assinado
END
END
Report
0
0
→ Go back to WINDEV 25
WINDEV 25
Français
English
Español
Portuguesa
Close this window
Search type
Only topics
All the messages
Search period
Any time
Past hour
Past 24 hours
Past week
Past month
Past year
Cancel
Preview of your message
Adding an image
Import an image from a URL
Send an image from a file of your disk
Drop a file or click "Browse..."
or
Cancel
0%
WLanguage
SQL
XML, HTML
JAVA, Javascript
Text