'SignatureMethod'-Algorithmus vs.' DigestMethod'-Algorithmus in XML Signature
Wenn wir das folgende Signature-Element als Beispiel nehmen:
<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>
Es gibt einen SignatureMethod-Algorithmus http: //www.w3.org/2000/09/xmldsig#rsa-sha) und ein DigestMethod-Algorithmus http: //www.w3.org/2000/09/xmldsig#sha).
Soweit ich weiß, bedeutet der SignatureMethod-Algorithmus 'rsa-sha1', dass der zu signierende Inhalt zuerst mit SHA1 gehasht (verdaut) und dann mit RSA signiert wird.
Entspricht der DigestMethod-Algorithmus immer dem Digest-Mechanismus, der im SignatureMethod-Algorithmus angegeben ist sha1 Teil von 'rsa-sha1')?
Ich glaube, das ist nicht der Fall, da es sinnlos wäre, denselben Algorithmus zweimal anzugeben. Was ich spekuliere, ist, dass es mehrere Referenzen geben kann, die mit verschiedenen DigestMethod-Algorithmen verdaut werden können, und die Auflistung dieser Digests wird erneut mit dem Digest-Mechanismus gehasht, der vom SignatureMethod-Algorithmus angegeben wird.
Ich bin Versuch, um dies zu verstehen, indem Sie auf die Spezifikation 'XML-Signatursyntax und -verarbeitung' verweisen. Würde mich sehr freuen, wenn jemand bestätigen kann, ob ich das richtig verstanden habe, oder die Zwecke erklären kann, denen diese beiden Algorithmen dienen. Vielen Dank