* 仕様書

[REFS[
- [1] [CITE@en[[[RFC 7515]] - JSON Web Signature (JWS)]], [TIME[2020-03-29 16:13:43 +09:00]] <https://tools.ietf.org/html/rfc7515#section-4.1.5>
- [5] 
[CITE@en[[[RFC 7516]] - JSON Web Encryption (JWE)]], [TIME[2022-11-23T08:42:45.000Z]] <https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.7>
- [10] 
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-12-02T08:59:52.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html#section-4.6>


]REFS]

* 意味

[2] 
[[JWS]]
の[[ヘッダー引数]]
[DFN[[CODE[x5u]]]]
(X.509 URL)
は、
[[JWS]]
を
[[RFC 4949]] [[デジタル署名]]するのに使った[[鍵]]に対応する
[[RFC 5280]]
[[X.509]]
[[公開鍵]]の[[証明書]]または[[証明書鎖]]の[[資源][[CODE[x5u]]で指定された証明書鎖]]を参照する
[[RFC 3986]] [[URI]]
を表します。
[SRC[>>1]]

[6] 
[[JWE]]
の[[ヘッダー引数]]の
[CODE[x5u]]
(X.509 URL)
は、
それに対して [[JWE]] を[[暗号化]]した 
[[RFC 5280]] 
[[X.509]]
[[公開鍵]]の[[証明書]]または[[証明書鎖]]に関するものを表します。
[[JWE]] の[[解読]]に必要な[[秘密鍵]]の決定に使えます。
[SRC[>>5]]

[11] 
[[JWK]]
[[鍵引数]]の
[CODE[x5u]]
(X.509 URL)
は、
[[RFC 5280]]
[[X.509]]
[[公開鍵]]の[[証明書]]または[[証明書鎖]]の[[資源][[CODE[x5u]]で指定された証明書鎖]]を参照する
[[RFC 3986]] [[URI]]
を表します。
[SRC[>>10]]

* 構文

[4] 値は [[URL]] です。

[3] [[URL]] で指定するファイルについては、
[[[CODE[x5u]]で指定された証明書鎖]]の要件が適用されます。

[8] [[URL]] で指定されたファイルの取得については、
[[JWSの取得プロトコル]]の要件が適用されます。

* 文脈

[7] 
[CODE[x5u]]
引数の利用は[MAY[任意]]です。
[SRC[>>1, >>10]]

-*-*-

[12] 
[[JWK]]
において鍵用法、[[算法]]、その他の省略可能な情報を共に指定しなければならないということはありませんが、
指定することで
[[RFC 5280]] [[PKIX]] [[証明書]]を扱わない[[応用]]との[[相互運用性]]を改善させられるかもしれない
[SRC[>>10]]
とされます。

;; [14] 例示により [CODE[use][use (JWK)]] や [CODE[alg]] が想定されている
[SRC[>>10]] ことがわかります。「その他」は [CODE[alg]]
依存の各種[[鍵引数]]を指すと思われます。
「鍵用法」が指すものは不明瞭ですが、
[CODE[use][use (JWK)]]
の他に
[CODE[key_ops]]
も含まれると解するのが妥当でしょう。

[13] 
そのような情報を指定する場合には、
参照される[[資源][[CODE[x5u]]で指定された証明書鎖]]の最初の[[証明書]]の相当する欄と意味的に一貫していなければ[MUST[なりません]]。
[SRC[>>10]]

;; [15] 
つまり [[JWK]] に参照された[[証明書]]の[[メタ情報]]を入れておけば、
[CODE[x5u]] で参照された[[証明書]]を取得して [[PKIX]] [[証明書]]として解釈する実装と、
そこまでせずに [[JWK]] の[[メタ情報]]だけ読んで ([[鍵]]自体は使わない) 
処理をする (ことができる) 実装との[[相互運用性]]が向上する、
ということらしいです。

;;
[16] 
しかし[[応用]]間の[[相互運用性]]が云々と言っているのは謎です。
特定[[応用]]「内」では当該[[メタ情報]]を含めなければならない、含めなくても構わない、
いつどの情報を読んでどう処理する、
ということを決めておかなければ、
そもそも[[相互運用]]不能です。
そのような[[合意]]が取れない異なる[[応用]]「間」の[[相互運用性]]が求められるのは、
いったいどういう状況なのでしょう。

;;
[17] 
多数の [[JWK]] [[応用]]に適用可能な汎用的な [[JWK]] 実装を提供する場合でしょうか?
でもそういうものを実現したいなら、それこそ [[JWK]] の [[RFC]] 
がしっかり要件を定めないと無理でしょう...

[18] 
なお、これと同等の規定が [CODE[x5c]], [CODE[x5t]] にもあります。

* 処理

[SEE[ [[JOSE鍵識別]], [[JWSの取得プロトコル]] ]]

* 関連

[9] 
[[URL]] でなく[[証明書鎖]]自体を指定する 
[CODE[x5c]] もあります。


* メモ
