メインコンテンツまでスキップ

3. ABNF

3. ABNF

テキストエンコーディングの ABNF [RFC5234] は以下の通りです:

textualmsg = preeb *WSP eol
*eolWSP
base64text
posteb *WSP [eol]

preeb = "-----BEGIN " label "-----" ; [RFC1421] (A)BNF と異なり,
; eol は必須ではありません (ただし
posteb = "-----END " label "-----" ; [RFC1421], Section 4.4 参照)

base64char = ALPHA / DIGIT / "+" / "/"

base64pad = "="

base64line = 1*base64char *WSP eol

base64finl = *base64char (base64pad *WSP eol base64pad /
*2base64pad) *WSP eol
; ...AB= <EOL> = <EOL> は良くないが, 有効

base64text = *base64line base64finl
; RFC 1421 の <encbinbody> も使用できますが, これは
; 16グループの4文字を要求し, 最終行を除いて
; 正確に64文字/行を意味しますが, これはより正確です

labelchar = %x21-2C / %x2E-7E ; 任意の印字可能文字,
; ハイフンマイナスを除く

label = [ labelchar *( ["-" / SP] labelchar ) ] ; 空でもOK

eol = CRLF / CR / LF

eolWSP = WSP / CR / LF ; LWSP と比較

図1: ABNF (標準)

laxtextualmsg    = *W preeb
laxbase64text
posteb *W

W = WSP / CR / LF / %x0B / %x0C ; 空白文字

laxbase64text = *(W / base64char) [base64pad *W [base64pad *W]]

図2: ABNF (緩やか)

stricttextualmsg = preeb eol
strictbase64text
posteb eol

strictbase64finl = *15(4base64char) (4base64char / 3base64char
base64pad / 2base64char 2base64pad) eol

base64fullline = 64base64char eol

strictbase64text = *base64fullline strictbase64finl

図3: ABNF (厳密)

新しい実装は上記で指定された厳密フォーマット (図3) を出力すべきです (SHOULD)。解析戦略の選択は使用のコンテキストに依存します。