Алгоритм SignatureMethod и алгоритм DigestMethod в подписи XML
Если взять в качестве примера следующий элемент Signature:
<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>
Существует алгоритм SignatureMethod (http://www.w3.org/2000/09/xmldsig#rsa-sha1) и алгоритм DigestMethod (http://www.w3.org/2000/09/xmldsig#sha1).
Насколько я понимаю, алгоритм SignatureMethod, означающий «rsa-sha1», означает, что подписываемый контент сначала хэшируется (переваривается) с использованием SHA1, а затем подписывается с использованием RSA.
Всегда ли алгоритм DigestMethod равен механизму дайджеста, указанному в алгоритме SignatureMethod (sha1 часть rsa-sha1)?
Я считаю, что это не так, потому что было бы бесполезно указывать один и тот же алгоритм дважды. Я предполагаю, что может быть несколько ссылок, которые могут быть переварены с использованием различных алгоритмов DigestMethod, и коллекция этих дайджестов будет снова хеширована с использованием механизма дайджеста, заданного алгоритмом SignatureMethod.
япытаясь чтобы понять это, обратитесь к спецификации «Синтаксис и обработка подписи XML». Был бы очень признателен, если бы кто-то мог подтвердить, правильно ли я понял, или объяснить цели, служащие этим двум алгоритмам. Благодарю.