Guest User

Untitled

a guest
Jan 21st, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. var listas = xmlAssinar.GetElementsByTagName(infosTipoOperacao.TagAssinatura);
  2.  
  3. foreach (XmlNode nodes in listas)
  4. {
  5. foreach (XmlNode childNodes in nodes.ChildNodes)
  6. {
  7. if (!childNodes.Name.Equals(infosTipoOperacao.TagAtributoId))
  8. {
  9. continue;
  10. }
  11.  
  12. // Cria uma referência para ser assinado
  13. var reference = new Reference
  14. {
  15. DigestMethod = "http://www.w3.org/2000/09/xmldsig#sha1",
  16. Uri = string.Empty
  17. };
  18.  
  19. // Pega o uri que deve ser assinada
  20. var childElemen = (XmlElement)childNodes;
  21.  
  22. if (childElemen.GetAttributeNode("Id") != null)
  23. {
  24. reference.Uri = string.Format("#{0}", childElemen.GetAttributeNode("Id").Value);
  25. }
  26. else if (childElemen.GetAttributeNode("id") != null)
  27. {
  28. reference.Uri = string.Format("#{0}", childElemen.GetAttributeNode("id").Value);
  29. }
  30.  
  31. // Cria um objeto SignedXml
  32. var signedXml = new SignedXml(xmlAssinar)
  33. {
  34. // Adicione a chave ao documento SignedXml
  35. SigningKey = certificadoDigital.PrivateKey
  36. };
  37.  
  38. // Adiciona uma transformação envelopada à referência
  39. var env = new XmlDsigEnvelopedSignatureTransform();
  40. reference.AddTransform(env);
  41.  
  42. var c14 = new XmlDsigC14NTransform();
  43. reference.AddTransform(c14);
  44.  
  45. // Adiciona a referência ao objeto SignedXml
  46. signedXml.AddReference(reference);
  47.  
  48. // Cria um novo objeto KeyInfo
  49. var keyInfo = new KeyInfo();
  50.  
  51. // Carrega o certificado em um objeto KeyInfoX509Data e adicione-o ao objeto KeyInfo
  52. keyInfo.AddClause(new KeyInfoX509Data(certificadoDigital));
  53.  
  54. // Adiciona o objeto KeyInfo ao objeto SignedXml
  55. signedXml.KeyInfo = keyInfo;
  56. signedXml.ComputeSignature();
  57.  
  58. // Obtém a representação XML da assinatura e salve-a em um objeto XmlElement
  59. var xmlDigitalSignature = signedXml.GetXml();
  60.  
  61. // Grava o elemento no documento XML
  62. nodes.AppendChild(xmlAssinar.ImportNode(xmlDigitalSignature, true));
  63. }
  64. }
  65.  
  66. xmlAssinar.PreserveWhitespace = false;
  67.  
  68. return xmlAssinar;
Add Comment
Please, Sign In to add comment