Aller au contenu principal

3. ABNF

3. ABNF

L'ABNF [RFC5234] de l'encodage textuel est:

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

preeb = "-----BEGIN " label "-----" ; contrairement à l'(A)BNF [RFC1421],
; eol n'est pas requis (mais
posteb = "-----END " label "-----" ; voir [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> n'est pas bon, mais est valide

base64text = *base64line base64finl
; nous pourrions aussi utiliser <encbinbody> du RFC 1421, qui exige
; 16 groupes de 4 caractères, ce qui signifie exactement 64 caractères par
; ligne, sauf la ligne finale, mais ceci est plus précis

labelchar = %x21-2C / %x2E-7E ; tout caractère imprimable,
; sauf le trait d'union-moins

label = [ labelchar *( ["-" / SP] labelchar ) ] ; vide ok

eol = CRLF / CR / LF

eolWSP = WSP / CR / LF ; comparer avec LWSP

Figure 1: ABNF (Standard)

laxtextualmsg    = *W preeb
laxbase64text
posteb *W

W = WSP / CR / LF / %x0B / %x0C ; whitespace

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

Figure 2: ABNF (Lax)

stricttextualmsg = preeb eol
strictbase64text
posteb eol

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

base64fullline = 64base64char eol

strictbase64text = *base64fullline strictbase64finl

Figure 3: ABNF (Strict)

Les nouvelles implémentations DEVRAIENT émettre le format strict (Figure 3) spécifié ci-dessus. Le choix de la stratégie d'analyse dépend du contexte d'utilisation.