-
Notifications
You must be signed in to change notification settings - Fork 4
/
638.txt
119 lines (92 loc) · 4.54 KB
/
638.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
* 仕様書
[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.9>
- [13]
[CITE@en[[[RFC 7516]] - JSON Web Encryption (JWE)]], [TIME[2022-11-23T09:24:46.000Z]] <https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.11>
]REFS]
* 意味
[2]
[[ヘッダー引数]]
[DFN[[CODE[typ]]]]
(type)
は、
[[JWS]] [[応用]]が、
当該 [[JWS]] / [[JWE]]
全体の[[媒体型][MIME型]]を宣言するために使うものです。
[SRC[>>1, >>13]]
[11]
[[ヘッダー引数]]
[DFN[[CODE[cty]]]]
(content type)
は、
[[JWS]] [[応用]]が、
保安された内容 ([[JWSペイロード]] [SRC[>>1]],
[[JWE]] の[[平文]] [SRC[>>13]])
の[[媒体型]]を宣言するために使うものです。
[SRC[>>1, >>13]]
[3]
[CODE[typ]] は [[JWS]] を含み得る[[応用]][[データ構造]]が複数種類の[[オブジェクト]]の種別たり得るような[[応用]]で、
[CODE[cty]] は [[JWSペイロード]]に複数種類の[[オブジェクト]]が出現し得るような[[応用]]が使う想定です。
[[応用]]はこの値を使って[[オブジェクト]]の種類を区別できます。
[[応用]]が[[オブジェクト]]の種類を既に知っている時は、
普通はこれを使いません。
[SRC[>>1]]
;; [12] [CODE[typ]] は [CODE[application/jose]] や
[CODE[application/jose+json]] になることが多そうです
(がそれなら記述する必要はなさそうです)。
「[[JWS]] を使った○○[[応用]]のデータ形式」
のような記述を想定しているのでしょうが、
本当に需要はあるのでしょうか。
* 構文
[7] 値は[[RFC 2045]] [[媒体型][MIME型]]で、[[引数]]も利用できます。
[SRC[>>1]]
[8]
値の先頭が [CODE[application/]] のとき、
他に [CODE[/]] が含まれないなら、
この [CODE[application/]]
を省略する[SHOULD[べきです]]。
[[受信者]]は、
[CODE[/]] を含まない時、
[CODE[application/]]
を先頭に補って解釈しなければ[MUST[なりません]]。
[SRC[>>1]]
;; [10] この規定は、
[[RFC 2045]] [[MIME型]]の構文にはない独自のものです。
[15]
[[MIME型]]には通常 [CODE[/]] をちょうど1個だけ含めることができます。
非標準の値で複数の [CODE[/]] が含まれることも稀にありますが、
[[JOSE]] でそのような値が使われるとも思えません。
もし [CODE[/]] が含まれ得るとしたら、それは[[引数値]]としてでしょうか。
[16]
[CODE[typ]]
で
[CODE[application/]] が省略可能であるのは、
それ以外の[[型][MIME型]] (例えば [CODE[image/[VAR[*]]]])
が使われることがおおよそ考え得ないからでしょう。
[CODE[cty]] ではそうとも限りませんが、
省略可能なのは整合性のためでしょうか。
[18]
些細な事とはいえ、このわずかな違いのせいで既存の汎用的な [[MIME型]]の処理のプログラムはそのまま使えず、その前段、後段にちょっとした分岐を入れることになってしまいます。
;; [17] 確かに[[MIME型]]の[[型][MIME型]]はあまり活用されておらず、
[CODE[application/]] に属するものが圧倒的という現実はあります。
本来[[インターネットメール]]用だった [[MIME型]]が、
その構造を本格的に見直すことなく他の色々な[[データ形式]]の記述に転用されたことによる不均衡といえます。
その不均衡に最適化しようとすると、多少アーキテクチャー的に美しくないとしても、
このような省略を認めるのが良いと考えられたのでしょう。
歪んだ設計が蓄積されてどんどん歪んでいく悪い症例です。
;; [9] [[仕様書]]に明記がありませんが、[[MIME型]] ([[引数]]値以外)
が [[ASCII大文字・小文字不区別]]であることには敢えて言及しているので、
この規定は [CODE[application/]] が[[小文字]]以外で表記される場合にも適用されると解するべきでしょう。
;; [14] このような省略構文の他の事例は [[MIME型]]参照。
* 文脈
[6]
この[[引数]]の利用は[MAY[任意]]です。
[SRC[>>1]]
* 処理
[4] [[JWS]] の実装は、これを無視します。
[SRC[>>1]]
[5]
[[JWS]] [[応用]]は、任意の処理を行えます。 [SRC[>>1]]
* 応用
[SEE[ [[暗号化JWK]], [[暗号化JWK集合]] ]]
* メモ