Aller au contenu principal

B.2.3. Couverture complète avec rsa-pss-sha512

B.2.3. Couverture complète avec rsa-pss-sha512

Cet exemple couvre tous les composants de message applicables dans test-request (y compris le type et la longueur du contenu) ainsi que de nombreux composants dérivés, toujours avec l'algorithme rsa-pss-sha512. Notez que le champ d'en-tête Host n'est pas couvert car le composant dérivé @authority est inclus à la place.

La base de signature correspondante est :

NOTE: '' line wrapping per RFC 8792

"date": Tue, 20 Apr 2021 02:07:55 GMT "@method": POST "@path": /foo "@query": ?param=Value&Pet=dog "@authority": example.com "content-type": application/json "content-digest": sha-512=:WZDPaVn/7XgHaAy8pmojAkGWoRx2UFChF41A2svX
+TaPm+AbwAgBWnrIiYllu7BNNyealdVLvRwEmTHWXvJwew==: "content-length": 18 "@signature-params": ("date" "@method" "@path" "@query"
"@authority" "content-type" "content-digest" "content-length")
;created=1618884473;keyid="test-key-rsa-pss"

Il en résulte l'ajout au message des champs d'en-tête Signature-Input et Signature suivants sous l'étiquette sig-b23 :

NOTE: '' line wrapping per RFC 8792

Signature-Input: sig-b23=("date" "@method" "@path" "@query"
"@authority" "content-type" "content-digest" "content-length")
;created=1618884473;keyid="test-key-rsa-pss" Signature: sig-b23=:bbN8oArOxYoyylQQUU6QYwrTuaxLwjAC9fbY2F6SVWvh0yB
iMIRGOnMYwZ/5MR6fb0Kh1rIRASVxFkeGt683+qRpRRU5p2voTp768ZrCUb38K0fU
xN0O0iC59DzYx8DFll5GmydPxSmme9v6ULbMFkl+V5B1TP/yPViV7KsLNmvKiLJH1
pFkh/aYA2HXXZzNBXmIkoQoLd7YfW91kE9o/CCoC1xMy7JA1ipwvKvfrs65ldmlu9
bpG6A9BmzhuzF8Eim5f8ui9eH8LZH896+QIF61ka39VBrohr9iyMUJpvRX2Zbhl5Z
JzSRxpJyoEZAFL2FUo5fTIztsDZKEgM4cUA==:

Notez dans cet exemple que la valeur du champ d'en-tête Date et la valeur du paramètre de signature created n'ont pas besoin d'être identiques. Cela tient au fait que le champ Date est ajouté lors de la création du message HTTP et que le paramètre created est renseigné lors de la création de la signature sur ce message, et ces deux instants peuvent différer. Si le champ Date est couvert par la signature, il appartient au vérificateur de déterminer si sa valeur doit correspondre ou non à celle du paramètre created. Voir la section 7.2.4 pour plus de discussion.

Notez que l'algorithme RSA-PSS employé ici est non déterministe, c'est-à-dire qu'une valeur de signature différente sera produite à chaque exécution de l'algorithme. La valeur de signature fournie ici peut être validée avec les clés données, mais on ne s'attend pas à ce que les valeurs nouvellement générées correspondent à l'exemple. Voir la section 7.3.5.