[12] 
[DFN[JWK集合]]は、 [[JWK]] をいくつか含められる [[JSON応用]]です。

* 仕様書

[REFS[
- [2] 
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-11-25T08:37:32.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html#section-2>
- [5] 
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-12-08T13:49:03.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html#section-5>
- [13] 
[CITE[JSON Object Signing and Encryption ([[JOSE]])]], [TIME[2022-10-17T22:55:51.000Z]], [TIME[2022-12-08T14:04:20.274Z]] <https://www.iana.org/assignments/jose/jose.xhtml#web-key-set-parameters>
- [34] 
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-12-15T11:45:52.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html#section-8.5.1>

]REFS]


* 構文

[35] 
[CODE[application/jwe-set+json]]
では
[[RFC 3629]] [[UTF-8]]
[[符号化]]する[SHOULD[べき]]とされます。
[SRC[>>34]]

[36] なぜか[MUST[必須]]ではなく、他の[[文字符号化]]の余地が残されています。

[37] 
[[暗号化JWK集合]]では [[RFC 3629]] [[UTF-8]] と定義されていて、他の選択肢は提供されていません。

* データモデル

[3] 
[DFN[[RUBYB[JWK[RUBY[集][しゅう]][RUBY[合][ごう]]][JWK Set]]]]は、
[[JWK]] の[[集合]]を表す[[JSONオブジェクト]]です。
[SRC[>>2, >>5]]

[FIG(list members)[ [6] [[JSONオブジェクト]]

: [DFN[[F[[CODE[keys]]]]]] :
[MUST[必須]]。
[[JWK]] の[[配列]]でなければ[MUST[なりません]]。
[SRC[>>2, >>5]]
既定では [[JWK]] の順序は優先度を表しませんが、
[[応用]]次第で順序に意味を持たせることができます。
[SRC[>>5]]


]FIG]

;; [10] [CODE[keys]] の規定より、「JWK集合」は[[集合]]と称していますが、
順序が意味を持つことがある点に注意。

;; [11]
まったく同等の [[JWK]] を複数含められるのか不明ですが、
特に禁止されていないので可能と考えるべきでしょう。

;; [15] [[空]]の[[配列]] = 事実上[[空]]の [[JWK集合]]とできるのかは不明です。
禁止されていないので素直に読めば出来るということになります。

[27] 
[[JWK集合]]にはその他の[[メンバー]]があるかもしれません。
実装は理解しない[[メンバー]]を無視しなければ[MUST[なりません]]。
[SRC[>>5]]


[28] 
[[JWK集合]]の[[メンバー]]の名前は、
[[IANA登録簿]] [SRC[>>13]]
に登録された値か、
[[耐衝突名]]を含む値である[RUBYB[べき][should]]です。
[SRC[>>5]]

[14] 
本段落執筆 (令和4年) 時点で、
[[IANA登録簿]]にあるのは [CODE[keys]] だけです [SRC[>>13]]。


[26] 
[[メンバー]]の名前は、[[JWK集合]]内で固有でなければ[MUST[なりません]]。
[[JWK集合]][[構文解析器]]は、
[[JWK集合]]が[[メンバー]]名の重複を含む時、
これを拒絶するか、
または重複するメンバー名について字句的に最後のもののみ採用する
[[JavaScript]] [CODE[JSON.parse]]
と同じ挙動の [[JSON]] [[構文解析器]]を使うかしなければ[MUST[なりません]]。
[SRC[>>5]]


* 文脈

[1] [CODE[jku]] [[ヘッダー引数]]から参照されます。

[16] [[暗号化JWK集合]]としても使われます。

* MIME型

[FIG(data list middle)[ [32] [[MIME型]]
:[[MIME型]]:[DFN[[CODE[application/jwk-set+json]]]]
:説明:[[JWK]]
:[[CTE]]:[CODE[8bit]]
]FIG]

[33] [CODE[cty]] では省略されて [DFN[[CODE[jwk-set+json]]]]
と書かれます。

* 処理

[4] 
実装は、
[[JWK集合]]中の [[JWK]] について、

- [7] [CODE[kty]] 値が理解できないもの
- [8] 必須のメンバーの欠けたるもの
- [9] 値が対応する範囲から外れているもの

... のいずれかを満たすならば、無視する[SHOULD[べきです]]。
[SRC[>>5]]



* メモ