COMO ASSINAR UM ARQUIVO DIGITALMENTE

SPRITU 08/11/2011 11:09:46
#388695
Bom dia,

pessoal estou com uma dúvida. Possuo um sistema de jobs (similar ao tasks do windows) porém esses jobs são criados a partir do meu sistema.

Funciona assim:

eu crio uma DLL com a [Ô]funcionalidade[Ô] e implemento a interface IJob que eu criei. Depois desse processo eu gero um XML com as configurações. (nome do job, tipo, intervalo, horario de inicio e etc...). No terceiro momento eu entro no meu sistema e acesso a tela de criação de jobs, nesta tela eu seleciona o XML e a DLL e o sistema [Ô]une[Ô] os 2 criando um arquivo com a extensão .JOB.

Isso tudo funciona perfeitamente bem, o problema é que eu QUERO assinar esses arquivos .job digitalmente com um certificado para que o sistema não rode um [Ô]Job[Ô] que não passou pelo processo de validação e homologação.

Simples assim .... hasuhduahd

SPRITU 17/11/2011 14:31:32
#389298
Poxa vida, estou começando a ficar triste!!!

ultimamente só eu respondo meus topicos ahsdhasuhas

segue em anexo a solução:

   Private Sub SignXML(ByRef _pxml As XmlDocument, ByVal _cert As X509Certificate2, ByVal _puri As String)
Try

Dim _sig_xml As SignedXml
Dim _ref As New Reference
Dim _uri As XmlAttributeCollection
Dim _xml_dig As XmlElement

Dim x509data As New KeyInfoX509Data(_cert, X509IncludeOption.EndCertOnly)
Dim keyinfo As New KeyInfo


_sig_xml = New SignedXml(_pxml)
_sig_xml.SigningKey = _cert.PrivateKey

_uri = _pxml.GetElementsByTagName(_puri).Item(0).Attributes

For Each _attr As XmlAttribute In _uri
If _attr.Name = [Ô]id[Ô] Then
_ref.Uri = [Ô]#[Ô] + _attr.InnerText
End If
Next

keyinfo.AddClause(x509data)

_sig_xml.KeyInfo = keyinfo

_ref.AddTransform(New XmlDsigEnvelopedSignatureTransform())

_ref.AddTransform(New XmlDsigC14NTransform())

_sig_xml.SignedInfo.AddReference(_ref)

_sig_xml.ComputeSignature()

_xml_dig = _sig_xml.GetXml()

_pxml.DocumentElement.AppendChild(_pxml.ImportNode(_xml_dig, True))

Catch ex As Exception
Throw ex

End Try
End Sub


Resultado do XML Assinado:
  <?xml version=[Ô]1.0[Ô] encoding=[Ô]utf-8[Ô]?>
<job id=[Ô]1ACF0669-C195-4200-BEB9-521D19E13680[Ô]>
<identification>
<name>JOB_NAME</name>
<description>The job description</description>
</identification>
<schedule>
<type>0</type>
<start>08/11/2011 13:00</start>
<end></end>
<interval>10</interval>
</schedule>
<Signature xmlns=[Ô]http://www.w3.org/2000/09/xmldsig#[Ô]>
<SignedInfo>
<CanonicalizationMethod Algorithm=[Ô]http://www.w3.org/TR/2001/REC-xml-c14n-20010315[Ô] />
<SignatureMethod Algorithm=[Ô]http://www.w3.org/2000/09/xmldsig#rsa-sha1[Ô] />
<Reference URI=[Ô]#1ACF0669-C195-4200-BEB9-521D19E13680[Ô]>
<Transforms>
<Transform Algorithm=[Ô]http://www.w3.org/2000/09/xmldsig#enveloped-signature[Ô] />
<Transform Algorithm=[Ô]http://www.w3.org/TR/2001/REC-xml-c14n-20010315[Ô] />
</Transforms>
<DigestMethod Algorithm=[Ô]http://www.w3.org/2000/09/xmldsig#sha1[Ô] />
<DigestValue>YNQyzaLyYXP6pbivuMcseUuGq18=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>SLBGO6R3QtrmiiEQEP7ZLzsllra8R7S4zjYbSGltMMR8ybvAnRBzVBVyFG85EfxbTDVCxDX16hVK//g0/2I56pz1c5lkS/kkOBPHPHhdhrEG7fLDMfALGayB70FN1NY4l1l7D3YQBefP/0+j6v9VPzdbWsDrMlF6SP0LC2kpGvFJQxm9ixC9K53+gEZeBcdmNoaoKSZTBPA1yBjf3WzMxWmlK4PICQwXlY6+5KMkX84VvPByqNxvxuj7m1QqcZXCsqidqG1bfpF8/fA05YQzLJm6Sf3yMf5++IyMUa0GcsMW67k7WbMYAKi64aF+tNgQsOI2Q9Sggkbk0Y/qnx5NUg==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIDEjCCAfqgAwIBAgIQVSOWXLb35KpPE364koQFYTANBgkqhkiG9w0BAQUFADAZMRcwFQYDVQQDHg4ARQBzAHQAZQB2AOMAbzAgFw0xMTEwMTMxNzU2MDRaGA8yMTExMDkxOTE3NTYwNFowGTEXMBUGA1UEAx4OAEUAcwB0AGUAdgDjAG8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCw0KLz97SVgAfxwbLtgicEj8rz4xTHGILb0wOy7pZ1p4rHp4ZgtT30ejOz1aornzY1XeZh8+Yw9iq/46CbuXfFaU8c6J9+e6qtJk3fMhdwULiUuS5ILQr5XZcDUD22p76Q55MR+9gbWXu8AsYDSHxBZPuOanAzR8UL4datDd/uQkcJsWb+mrCd6bcJmgNWqZ8szcIAS7yZYdOCWYq4EPdMseScWvAwpCF6uDy+9uyUxzVA7ZbWPe+a3JQALOZ/sR+8Pph7IPtdEp++WQBK0hwTMjDtR1njrxvcDHnOVd2j8XpK4vrXiT4tpEhMI7L4G92PAUd3FpZdMMVxVMvuZ/JvAgMBAAGjVDBSMBUGA1UdJQQOMAwGCisGAQQBgjcKAwQwLgYDVR0RBCcwJaAjBgorBgEEAYI3FAIDoBUME0VzdGV2w6NvQGxzbHByajAwMQAwCQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOCAQEAgMpTvwuKhtr1FcYpl1+zPcUgPQafxJzCJyCfqYr2vRAJFeYU4ZRaBQZlF0M/QGFIi3VddHScd7amlyT/TsYE8B1SnAgCoQ48lUWbsger0gahouO2ypZrdxa2o8sawqbDEUvTvf0KU+iszgvrORBAgp2wgyI70aKlYoXIR9bG3ukYwf/e+voCTwzHKkm7UcII1DqoRSD+1CSNQLx55gDZEiFMGpbICv06Cw2pHfKabGQnT/n/RWHxcgpyHX3oW0W47R4izNLBgf6ye9gWYW04IdJJMi/RPocPk4h+6+BWjl3xuZpeAfe6CETe4naNa0yocgzFwRQVHLYOnQg9DojGCg==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</job>
Tópico encerrado , respostas não são mais permitidas