Если ваша подпись не является подэлементом подписанных данных, вам не требуется преобразование с подписью в конвертах.
Так что просто пропустите XmlDsigEnvelopedSignatureTransform
и выполните подпись, как в противном случае:
public XmlElement SignXml(XmlDocument xmlDoc, RSA key)
{
SignedXml xml = new SignedXml();
xml.SigningKey = key;
// Add the data to be signed as a sub-element of the Signature-element:
DataObject dataObject = new DataObject();
dataObject.Data = xmlDoc.ChildNodes;
dataObject.Id = "doc";
xml.AddObject(dataObject);
// Add a reference to the signed data:
Reference reference = new Reference();
reference.Uri = "#doc";
xml.AddReference(reference);
// Perform the signature. No transforms are needed.
xml.ComputeSignature();
return xml.GetXml();
}