Adriano,
Você tem que manter a mesma estrutura do TAG Signature.
Ele tem que ser sempre:
Código:
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="Ass_rps:1ABCDZ">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#rps:1ABCDZ">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue/>
</Reference>
</SignedInfo>
<SignatureValue/>
<KeyInfo>
<X509Data>
<X509Certificate/>
</X509Data>
</KeyInfo>
</Signature>
Isso é necessário para o que o TAG seja encontrado e o XML seja assinado.
Pois a linha abaixo procura pelo NAMESPACE xmldsig:
Código:
const
DSIGNS = 'xmlns:ds="http://www.w3.org/2000/09/xmldsig#"';
...
FXMLDoc.setProperty('SelectionNamespaces', DSIGNS);
sSigs := FXMLDoc.selectNodes('.//ds:Signature');
A única coisa que muda é o 1ABCDZ e que tem sempre de ser "Id":
Id="Ass_rps:1ABCDZ"
Ele é o código referente ao "Id" do RPS, NOTA ou LOTE.
Att,
Luiz Vaz