Algoritmo 'SignatureMethod' versus Algoritmo 'DigestMethod' en XML Signature
Si tomamos el siguiente elemento Signature como ejemplo:
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<ds:Reference URI="#_884D49DAD03AD60748547F8322C11AA0">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<ds:DigestValue>...</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>...</ds:SignatureValue>
<ds:KeyInfo>
<ds:KeyName>...</ds:KeyName>
</ds:KeyInfo>
</ds:Signature>
Hay un algoritmo SignatureMethod (http://www.w3.org/2000/09/xmldsig#rsa-sha1) y un algoritmo DigestMethod (http://www.w3.org/2000/09/xmldsig#sha1)
Según tengo entendido, el algoritmo SignatureMethod es 'rsa-sha1' significa que el contenido que se firmará primero se codificará (digerirá) con SHA1 y luego se firmará con RSA.
¿El Algoritmo DigestMethod siempre es igual al mecanismo de resumen especificado en el Algoritmo SignatureMethod (sha1 parte de 'rsa-sha1')?
Creo que no es el caso, porque sería inútil especificar el mismo algoritmo dos veces. Lo que especulo es que puede haber múltiples 'referencias' que se pueden digerir usando diferentes algoritmos de resumen, y la colección de esos resúmenes se volverá a analizar utilizando el mecanismo de resumen especificado por el algoritmo SignatureMethod.
estoymolesto para entender esto refiriéndose a la especificación 'XML Signature Syntax and Processing'. Realmente agradecería si alguien puede confirmar si he entendido correctamente, o explicar los propósitos cumplidos por esos dos algoritmos. Gracias.