跳到主要内容

B.2.3. Full Coverage Using rsa-pss-sha512 (B.2.3. 使用 rsa-pss-sha512 的完全覆盖)

B.2.3. Full Coverage Using rsa-pss-sha512 (B.2.3. 使用 rsa-pss-sha512 的完全覆盖)

本示例覆盖 test-request 中所有适用的消息组成部分 (含内容类型与长度) 以及多个派生组成部分, 仍使用 rsa-pss-sha512 算法. 注意未覆盖 Host 头字段, 因为改而包含 @authority 派生组成部分.

对应的签名基为:

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"

这导致在标签 sig-b23 下将下列 Signature-Input 与 Signature 头字段加入消息:

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==:

注意本示例中 Date 头字段的值与 created 签名参数的值不必相同. 这是由于创建 HTTP 消息时添加 Date 头字段, 而在对该消息创建签名时填充 created 参数, 这两个时间可能不同. 若 Date 头字段被签名覆盖, 由验证者决定其值是否必须与 created 参数匹配. 更多讨论见第 7.2.4 节.

注意此处使用的 RSA-PSS 算法为非确定性, 即每次运行算法将产生不同签名值. 此处提供的签名值可相对给定密钥校验, 但新生成的签名值预计与示例不匹配. 见第 7.3.5 节.