Array
(
)

Assinando XML

Iago Melo
   - 14 set 2015

Bom dia pessoal!
Bom em alguns posts passados havia dito que sou novo na programação e estou de metido tentando desenvolver um sistema que troca informações com o Sefaz RS. Bom consegui fazer um metodo que cria um XML com a informações que preciso mas agora tenho que assinalo digitalmente, vi na MSDN *** https://msdn.microsoft.com/pt-br/library/ms229745%28v=VS.110%29.aspx *** um tutorial que explica muito bem porem o metodo deles não funciona:
#Códigousing System;
using System.Security.Cryptography;
using System.Security.Cryptography.Xml;
using System.Xml;
public class SignXML
{
public static void Main(String[] args)
{
try
{
// Create a new CspParameters object to specify
// a key container.
CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = "XML_DSIG_RSA_KEY";
// Create a new RSA signing key and save it in the container.
RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(cspParams);
// Create a new XML document.
XmlDocument xmlDoc = new XmlDocument();
// Load an XML file into the XmlDocument object.
xmlDoc.PreserveWhitespace = true;
xmlDoc.Load("test.xml");
// Sign the XML document.
SignXml(xmlDoc, rsaKey);
Console.WriteLine("XML file signed.");
// Save the document.
xmlDoc.Save("test.xml");

}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}

// Sign an XML file.
// This document cannot be verified unless the verifying
// code has the key with which it was signed.
public static void SignXml(XmlDocument xmlDoc, RSA Key)
{
// Check arguments.
if (xmlDoc == null)
throw new ArgumentException("xmlDoc");
if (Key == null)
throw new ArgumentException("Key");
// Create a SignedXml object.
SignedXml signedXml = new SignedXml(xmlDoc);
// Add the key to the SignedXml document.
signedXml.SigningKey = rsaKey; // *** Esta variável não é encontrada pois não é declarada dentro desta função.
// Create a reference to be signed.
Reference reference = new Reference();
reference.Uri = "";
// Add an enveloped transformation to the reference.
XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
reference.AddTransform(env);
// Add the reference to the SignedXml object.
signedXml.AddReference(reference);
// Compute the signature.
signedXml.ComputeSignature();
// Get the XML representation of the signature and save
// it to an XmlElement object.
XmlElement xmlDigitalSignature = signedXml.GetXml();
// Append the element to the XML document.
xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true));
}
}

Deixei destacado no código a variável que não é encontrada pois não foi declarada no void SignXml. Alguém saberia me informar como posso estar corrigindo isto ou sabe de uma outra função que assine XML?
Grato.