Groupe de travail Réseau

S. Legg, Adacel Technologies

Request for Comments : 3642

octobre 2003

Catégorie : Information

Traduction Claude Brière de L’Isle



Éléments communs des règles de codage de chaîne générique (GSER)



Statut du présent mémoire

Le présent mémoire apporte des informations pour la communauté de l’Internet. Il ne spécifie aucune sorte de norme de l’Internet. La distribution du présent mémoire n’est soumise à aucune restriction.


Notice de copyright

Copyright (C) The Internet Society (2003).


Résumé

Les règles génériques de codage de chaîne (GSER, Generic String Encoding Rules) décrivent un codage de texte lisible par l’homme pour une valeur en notation de syntaxe abstraite numéro un (ASN.1, Abstract Syntax Notation One) de tout type ASN.1. Les spécifications qui font usage de GSER peuvent souhaiter fournir une description équivalente en format Backus-Naur augmenté (ABNF, Augmented Backus-Naur Form) du codage GSER pour un type ASN.1 particulier pour les convenances de la mise en œuvre. Le présent document prend en charge de telles spécifications en fournissant un équivalent ABNF pour les codages GSER pour les types ASN.1 qui se présente couramment dans les syntaxes du protocole léger d’accès à un répertoire (LDAP, Lightweight Directory Access Protocol).


Table des Matières

1. Introduction 1

2. Conventions 1

3. Séparateurs 2

4. Types ASN.1 incorporés 2

5. Types ASN.1 de chaîne restreinte 4

6. Types ASN.1 de répertoire 6

7. Considérations sur la sécurité 6

8. Références 6

8.1 Références normatives 6

8.2 Références pour information 7

9. Notice de droits de propriété intellectuelle 7

10. Adresse de l’auteur 7

11. Déclaration complète de droits de reproduction 8


1. Introduction


Les règles génériques de codage de chaîne (GSER, Generic String Encoding Rules) [RFC3641] définissent un codage de texte lisible par l’homme, fondé sur la notation de la valeur ASN.1 [X.680], pour une valeur ASN.1 de tout type ASN.1. Les spécifications qui font usage des GSER peuvent souhaiter fournir une description non normative équivalente à l’ABNF [RFC2234] du codage GSER pour un type ASN.1 particulier pour la convenance des mises en œuvre non familiarisées avec l’ASN.1. Le présent document prend en charge de telles spécifications en fournissant l’ABNF équivalent aux codages GSER pour les types ASN.1 qui surviennent couramment dans les syntaxes d’attribut et d’assertion LDAP [RFC3377] ou [X.500], ainsi que l’équivalent ABNF pour les codages GSER de types ASN.1 incorporés.


L’ABNF donné dans le présent document ne remplace ni n’altère d’aucune façon GSER. Si il y a une discordance entre l’ABNF spécifié ici et le codage défini par GSER [RFC3641], GSER est celui qui doit être retenu.


2. Conventions


Les mots clés "DOIT", "NE DOIT PAS", "EXIGE", "DEVRA", "NE DEVRA PAS", "DEVRAIT", "NE DEVRAIT PAS", "RECOMMANDE", "PEUT", et "FACULTATIF" en majuscules dans ce document sont à interpréter comme décrit dans le BCP 14, [RFC2119]. Le mot clé "FACULTATIF" est exclusivement utilisé avec sa signification ASN.1.


3. Séparateurs


Certain séparateurs sont couramment utilisés pour construire l’équivalent ABNF des types SET et SEQUENCE.


sp = *%x20 ; zéro, un ou plusieurs caractères espace

msp = 1*%x20 ; un ou plusieurs caractères espace

sep = [ "," ]


La règle <sep> est utilisée dans la description ABNF pour le codage des types ASN.1 SET ou SEQUENCE lorsque tous les composants sont OPTIONAL (FACULTATIF) ou DEFAULT (PAR DEFAUT). Elle code en une chaîne vide si et seulement si le caractère immédiatement précédant dans le codage est "{", c’est-à-dire, elle est vide seulement pour le premier composant facultatif réellement présent dans la valeur SET ou SEQUENCE que l’on code.


4. Types ASN.1 incorporés


Cette section décrit le codage GSER des valeurs de types ASN.1 incorporés, sauf pour les types de chaînes de caractères restreintes.


La règle <BIT-STRING> décrit le codage GSER des valeurs du type BIT STRING (CHAINE BINAIRE) sans une liste de bits nommée.


BIT-STRING = bstring / hstring


Si le nombre de bits dans une valeur de BIT STRING est un multiple de quatre, la forme <hstring> de <BIT-STRING> PEUT être utilisée. Autrement, la forme <bstring> de <BIT-STRING> est utilisée. La règle <bstring> code chaque bit en caractère "0" ou "1" dans l’ordre du premier au dernier bit. La règle <hstring> code chaque groupe de quatre bits comme un nombre hexadécimal où le premier bit est le bit de poids fort. Un nombre impair de chiffres hexadécimaux est permis.


hstring = squote *chiffre-hexadecimal squote %x48 ; '...'H

chiffre-hexadecimal = %x30-39 / ; "0" to "9" %x41-46 ; "A" to "F"

bstring = squote *chiffre-binaire squote %x42 ; '...'B

chiffre-binaire = "0" / "1"

squote = %x27 ; ' (guillemet simple)


La règle <BOOLEAN> décrit le codage GSER des valeurs du type BOOLEAN (BOOLÉEN).


BOOLEAN = %x54.52.55.45 / ; "VRAI"

%x46.41.4C.53.45 ; "FAUX"


La règle <CHARACTER-STRING> décrit le codage GSER des valeurs du type associé pour le type CHARACTER STRING (CHAINE DE CARACTERES) sans restriction.


CHARACTER-STRING = "{" sp id-identification msp Identification "," sp id-data-value msp OCTET-STRING sp "}"


id-identification = %x69.64.65.6E.74.69.66.69.63.61.74.69.6F.6E ; "identification"

id-data-value = %x64.61.74.61.2D.76.61.6C.75.65 ; "valeur des données"


Identification = ( id-syntaxes ":" Syntaxes ) /

( id-syntax ":" IDENTIFIANT-D’OBJET ) /

( id-presentation-context-id ":" ENTIER ) /

( id-context-negotiation ":" ContextNegotiation ) /

( id-transfer-syntax ":" IDENTIFIANT-D’OBJET ) /

( id-fixed ":" NULL )

id-syntaxes = %x73.79.6E.74.61.78.65.73 ; "syntaxes"

id-syntax = %x73.79.6E.74.61.78 ; "syntaxe"

id-presentation-context-id = %x70.72.65.73.65.6E.74.61.74.69.6F.6E%x2D.63.6F.6E.74.65.78.74.2D.69.64

; "identifiant de contexte de présentation"

id-context-negotiation = %x63.6F.6E.74.65.78.74.2D.6E.65.67.6F%x74.69.61.74.69.6F.6E

; "négociation de contexte"

id-transfer-syntax = %x74.72.61.6E.73.66.65.72.2D.73.79.6E%x74.61.78 ; "syntaxe de transfert"

id-fixed = %x66.69.78.65.64 ; "fixe"

Syntaxes = "{" sp id-abstract msp IDENTIFIANT-D’OBJET "," sp id-transfer msp IDENTIFIANT-D’OBJET sp "}"

id-abstract = %x61.62.73.74.72.61.63.74 ; "abstrait"

id-transfer = %x74.72.61.6E.73.66.65.72 ; "transfert"


ContextNegotiation = "{" sp id-presentation-context-id msp ENTIER "," sp id-transfer-syntax msp IDENTIFIANT D’OBJET sp "}"


La règle <ENTIER> décrit le codage GSER des valeurs de type ENTIER sans une liste de nombres nommée. La règle <EINTIER-0-MAX> décrit le codage GSER des valeurs du type contrait ENTIER (0..MAX). La règle <ENTIER-1-MAX> décrit le codage GSER des valeurs du type contraint ENTIER (1..MAX).


ENTIER = "0" / nombre-positif / ("-" nombre-positif)

ENTIER-0-MAX = "0" / nombre-positif

ENTIER-1-MAX = nombre-positif

nombre-positif = chiffre-non-zero *chiffre-decimal

chiffre-decimal = %x30-39 ; "0" à "9"

chiffre-non-zero = %x31-39 ; "1" à "9"


La règle <EMBEDDED-PDV> décrit le codage GSER des valeurs du type associé pour le type EMBEDDED PDV.


EMBEDDED-PDV = "{" sp id-identification msp Identification "," sp id-data-value msp OCTET-STRING sp "}"


La règle <EXTERNAL> décrit le codage GSER des valeurs du type associé pour le type EXTERNAL.


EXTERNAL = "{" [ sp id-direct-reference msp IDENTIFIANT-D’OBJET "," ]

[ sp id-indirect-reference msp ENTIER "," ]

[ sp id-data-value-descriptor msp ObjectDescriptor "," ] sp id-encoding msp Encoding sp "}"

id-direct-reference = %x64.69.72.65.63.74.2D.72.65.66.65.72 %x65.6E.63.65

; "direct-reference"

id-indirect-reference = %x69.6E.64.69.72.65.63.74.2D.72.65.66 %x65.72.65.6E.63.65

; "indirect-reference"

id-data-value-descriptor = %x64.61.74.61.2D.76.61.6C.75.65.2D.64 %x65.73.63.72.69.70.74.6F.72

; "data-value-descriptor"

id-encoding = %x65.6E.63.6F.64.69.6E.67 ; "codage"


Encoding = ( id-single-ASN1-type ":" Value ) / ( id-octet-aligned ":" OCTET-STRING ) / ( id-arbitrary ":" BIT-STRING )


id-single-ASN1-type = %x73.69.6E.67.6C.65.2D.41.53.4E.31.2D.74.79 %x70.65 ; "single-ASN1-type"

id-octet-aligned = %x6F.63.74.65.74.2D.61.6C.69.67.6E.65.64 ; "octet-aligned"


id-arbitrary = %x61.72.62.69.74.72.61.72.79 ; "arbitraire"


La règle <Value> est définie par GSER [RFC3641]. Elle représente le codage GSER d’une seule valeur du type ASN.1 identifié par les composants direct-reference et/ou indirect-reference.


La règle <NULL> décrit le codage GSER des valeurs du type NULL.


NULL = %x4E.55.4C.4C ; "NULL"


La règle <IDENTIFIANT-D’OBJET> décrit le codage GSER des valeurs du type IDENTIFIANT-D’OBJET.


IDENTIFIANT-D’OBJET = oid-numérique / descr

oid-numérique = composant-d’oid 1*( "." composant-d’oid )

composant-d’oid = "0" / nombre-positif


Une valeur de OBJECT IDENTIFIER est codée en utilisant soit la représentation en décimal séparé par des ponts, soit un nom descriptif d’un objet, c’est-à-dire, <descr>. La règle <descr> est décrite dans la [RFC2252]. Un nom descriptif d’objet est potentiellement ambigu et devrait être utilisé avec précaution.


La règle <OCTET-STRING> décrit le codage GSER des valeurs du type OCTET STRING.


OCTET-STRING = hstring


Les octets sont codés dans l’ordre du premier au dernier octet. Chaque octet est codé comme une paire de chiffres hexadécimaux où le premier chiffre correspond aux quatre bits de poids fort de l’octet. Si la chaîne hexadécimale n’a pas un nombre pair de chiffres, le quatre bits de moindre poids dans le dernier octet sont supposés à zéro.


La règle <REAL> décrit le codage GSER des valeurs du type REAL.


REAL = "0" ; zéro

/ PLUS-INFINI ; infini positif

/ MOINS-INFINI ; infini négatif

/ nombre-réel ; valeur réelle positive en base 10

/ ( "-" nombre-réel ) ; valeur réelle négative en base 10

/ real-sequence-value ; valeur réelle non zéro en base 2 ou 10


PLUS-INFINI = %x50.4C.55.53.2D.49.4E.46.49.4E.49.54.59 ; "PLUS-INFINI"


MOINS-INFINI = %x4D.49.4E.55.53.2D.49.4E.46.49.4E.49.54.59 ; "MOINS-INFINI"


nombre-réel = mantisse exposant

mantisse = (nombre-positif [ "." *chiffre-décimal ]) / ( "0." *("0") nombre-positif )

exposant = "E" ( "0" / ([ "-" ] nombre-positif))


real-sequence-value = "{" sp id-mantisse msp ENTIER "," sp id-base msp ( "2" / "10" ) "," sp id-exposant msp ENTIER sp "}"

id-mantisse = %x6D.61.6E.74.69.73.73.61 ; "mantisse"

id-base = %x62.61.73.65 ; "base"

id-exposant = %x65.78.70.6F.6E.65.6E.74 ; "exposant"


Une valeur du type REAL DOIT être codée comme "0" si elle est zéro.


La règle <RELATIVE-OID> décrit le codage GSER des valeurs du type RELATIVE-OID.


RELATIVE-OID = oid-component *( "." oid-component )


5. Types ASN.1 de chaîne restreinte


Cette section décrit le codage GSER des valeurs des types de chaîne de caractères ASN.1 restreints. Les caractères d’une valeur du type de chaîne de caractères restreints sont toujours codés comme une chaîne de caractères UTF-8 entre des doubles guillemets. Pour certains des types de chaîne ASN.1, cela exige une traduction en ou du codage UTF-8. Certains des types de chaîne ASN.1 ne permettent qu’un sous ensemble des caractères représentables en UTF-8. Tous les caractères doubles guillemets dans la chaîne de caractères, lorsque ils sont permis par le jeu de caractères, sont échappés en étant répétés.


La règle <UTF8String> décrit le codage GSER des valeurs du type UTF8String. Les caractères de ce type de chaîne n’exigent aucune traduction avant leur codage.


UTF8String = StringValue

StringValue = dquote *SafeUTF8Character dquote


dquote = %x22 ; " (doubles guillemets)


SafeUTF8Character = %x00-21 / %x23-7F / ; ASCII moins dquote

dquote dquote / ; doubles guillemets échappés

%xC0-DF %x80-BF / ; caractère UTF-8 sur deux octets

%xE0-EF 2(%x80-BF) / ; caractère UTF-8 sur trois octets

%xF0-F7 3(%x80-BF) ; caractère UTF-8 sur quatre octets


Les règles <NumericString>, <PrintableString>, <VisibleString>, <ISO646String>, <IA5String>, <GeneralizedTime> et <UTCTime> décrivent le codage GSER des valeurs des typesASN.1 nommés correspondants. Les caractères de ces chaînes sont compatibles avec l’UTF-8 et n’exigent aucune traduction avant le codage. Les types GeneralizedTime et UTCTime utilisent le jeu de caractères VisibleString, mais ont un format défini de façon stricte.


NumericString = dquote *(chiffre-décimal / espace) dquote

espace = %x20


PrintableString = dquote *PrintableCharacter dquote

PrintableCharacter = chiffre-décimal / espace

/ %x41-5A ; A à Z

/ %x61-7A ; a à z

/ %x27-29 ; ' ( )

/ %x2B-2F ; + , - . /

/ %x3A ; :

/ %x3D ; =

/ %x3F ; ?


ISO646String = VisibleString

VisibleString = dquote *SafeVisibleCharacter dquote

SafeVisibleCharacter = %x20-21

/ %x23-7E ; ASCII imprimable moins dquote

/ dquote dquote ; double guillemets échappés


IA5String = dquote *SafeIA5Character dquote

SafeIA5Character = %x00-21 / %x23-7F ; ASCII moins dquote

/ dquote dquote ; double guillemets échappés

siècle = 2(%x30-39) ; "00" à "99"

année = 2(%x30-39) ; "00" à "99"

mois = ( %x30 %x31-39 ) ; "01" (janvier) à "09"

/ ( %x31 %x30-32 ) ; "10" to "12"

jour = ( %x30 %x31-39 ) ; "01" à "09"

/ ( %x31-32 %x30-39 ) ; "10" à "29"

/ ( %x32 %x30-31 ) ; "30" à "31"

heure = ( %x30-31 %x30-39 ) / ( %x32 %x30-33 ) ; "00" à "23"

minute = %x30-35 %x30-39 ; "00" à "59"

seconde = ( %x30-35 %x30-39 ) ; "00" à "59"

/ ( %x36 %x30 ) ; "60" (un saut de seconde)

UTCTime = dquote année mois jour heure minute [ seconde ] [ %x5A / u-differential ] dquote

u-differential = ( "-" / "+" ) heure minute


GeneralizedTime = dquote siècle année mois jour heure [ minute [ seconde ] ] [ fraction ] [ %x5A / g-differential ] dquote

fraction = ( "." / "," ) 1*(%x30-39)

g-differential = ( "-" / "+" ) heure [ minute ]


Les règles <BMPString> et <UniversalString> décrivent le codage GSER des valeurs des types respectifs de BMPString et UniversalString. Les valeurs de BMPString (UCS-2) et de UniversalString (UCS-4) sont traduites en chaînes de caractères UTF-8 [RFC2279] avant d’être codées conformément à <StringValue>.


BMPString = StringValue

UniversalString = StringValue


Les règles <TeletexString>, <T61String>, <VideotexString>, <GraphicString>, <GeneralString> et <ObjectDescriptor> décrivent le codage GSER des valeurs des types ASN.1 nommés correspondants. Les valeurs de ces chaînes sont traduites en chaînes de caractères UTF-8 avant d’être codées conformément à <StringValue>. Le type ObjectDescriptor utilise le jeu de caractères GraphicString.


TeletexString = StringValue

T61String = StringValue

VideotexString = StringValue

GraphicString = StringValue

GeneralString = StringValue

ObjectDescriptor = GraphicString


6. Types ASN.1 de répertoire


La présente section décrit le codage GSER des valeurs des types ASN.1 choisis définis pour LDAP et X.500. Les noms de règles ABNF qui commencent par des lettres majuscules décrivent le codage GSER des valeurs du type ASN.1 avec le même nom.


AttributeType = IDENTIFIANT-D’OBJET


Les caractères d’une DirectoryString sont traduits en caractères UTF-8 comme nécessaire avant d’être codés entre des doubles guillemets avec tous les doubles guillemets échappés en étant répétés.


DirectoryString = StringValue /

( id-teletexString ":" TeletexString ) /

( id-printableString ":" PrintableString ) /

( id-bmpString ":" BMPString ) /

( id-universalString ":" UniversalString ) /

( id-uTF8String ":" UTF8String )


id-teletexString = %x74.65.6C.65.74.65.78.53.74.72.69.6E.67 ; "teletexString"

id-printableString = %x70.72.69.6E.74.61.62.6C.65%x53.74.72.69.6E.67 ; "printableString"

id-bmpString = %x62.6D.70.53.74.72.69.6E.67 ; "bmpString"

id-universalString = %x75.6E.69.76.65.72.73.61.6C%x53.74.72.69.6E.67 ; "universalString"

id-uTF8String = %x75.54.46.38.53.74.72.69.6E.67 ; "uTF8String"


La règle <RDNSequence> décrit le codage GSER des valeurs du type RDNSequence, qui est syntaxiquement équivalent aux types DistinguishedName et LocalName. La règle <RDNSequence> code un nom comme une chaîne de caractères LDAPDN entre des guillemets doubles. La chaîne de caractères est d’abord déduite conformément à la règle <distinguishedName> de la Section 3 de la [RFC2253], puis elle est codée entre des guillemets doubles avec tous les guillemets doubles incorporés échappés en étant répétés.


DistinguishedName = RDNSequence

LocalName = RDNSequence

RDNSequence = dquote *SafeUTF8Character dquote


La règle <RelativeDistinguishedName> décrit le codage GSER des valeurs du type RelativeDistinguishedName qui ne font pas partie d’une valeur de RDNSequence. La règle <RelativeDistinguishedName> code un RDN comme une chaîne entre doubles guillemets contenant le RDN comme il apparaîtrait dans une chaîne de caractères LDAPDN. La chaîne de caractères est d’abord déduite conformément à la règle <name-component> de la Section 3 de la [RFC2253], et ensuite tous les caractères doubles guillemets incorporés sont échappés en étant répétés. Cette chaîne résultante est produite entre des guillemets doubles.


RelativeDistinguishedName = dquote *SafeUTF8Character dquote


La règle <ORAddress> code une adresse X.400 comme une chaîne de caractères IA5 entre des guillemets doubles. La chaîne de caractères est d’abord déduite conformément au paragraphe 4.1 de la [RFC2156], et ensuite, tous les guillemets doubles incorporés sont échappés en étant répétés. Cette chaîne résultante est produite entre des guillemets doubles.


ORAddress = dquote *SafeIA5Character dquote


7. Considérations sur la sécurité


Le présent document contient une solution de remplacement pour la description de parties des règles génériques de codage de chaîne, mais ne remplace ni n’altère en aucune façon GSER. Pour les implications complètes sur la sécurité de l’utilisation de GSER, voir la section des considérations sur la sécurité pour GSER de la [RFC3641].


8. Références

8.1 Références normatives


[RFC2119] S. Bradner, "Mots clés à utiliser dans les RFC pour indiquer les niveaux d'exigence", BCP 14, mars 1997.


[RFC2156] S. Kille, "MIXER (Relais amélioré Mime Internet X.400) : transposition entre X.400 et la RFC0822/MIME ", janvier 1998. (Remplace RFC0987, RFC1026, RFC1138, RFC1148, RFC1327, RFC1495) (MàJ RFC0822) (P.S.)


[RFC2234] D. Crocker et P. Overell, "BNF augmenté pour les spécifications de syntaxe : ABNF", novembre 1997. (Obsolète, voir RFC5234)


[RFC2252] M. Wahl, A. Coulbeck, T. Howes, S. Kille, "Protocole léger d’accès à un répertoire (v3) : Définitions de syntaxe d'attribut", décembre 1997. (Obsolète, voir RFC4510, RFC4517, RFC4523, RFC4512) (MàJ par RFC3377) (P.S.)


[RFC2253] M. Wahl, S. Kille et T. Howes, "Protocole léger d'accès à un répertoire (LDAPv3) : Représentation de chaîne UTF-8 des noms distinctifs", décembre 1997.


[RFC2279] F. Yergeau, "UTF-8, un format de transformation de la norme ISO 10646", janvier 1998. (Obsolète, voir RFC3629) (D.S.)


[RFC3641] S. Legg, "Règles génériques de codage de chaînes (GSER) pour les types ASN.1", octobre 2003. (MàJ par RFC 4792)


[X.680] Recommendation UIT-T X.680 (07/02) | ISO/CEI 8824-1:2002 "Technologies de l’information – Notation de syntaxe abstraite numéro un (ASN.1) : Spécification de la notation de base".


8.2 Références pour information


[RFC2028] R. Hovey, S. Bradner, "Les organisations impliquées dans le processus de normalisation de l'IETF", octobre 1996. (MàJ par RFC3668, RFC3979) (BCP0011)


[RFC3377] J. Hodges, R. Morgan, "Protocole léger d'accès à un répertoire (v3) : Spécification technique", septembre 2002. Obsolète, voir RFC4510) (P.S.)


[X.500] Recommendation UIT-T X.500 (1993) | ISO/CEI 9594-1:1994, "Technologies de l’information - Interconnexion des systèmes ouverts – L’Annuaire : Survol des concepts, modèles et services".


9. Notice de droits de propriété intellectuelle


L’IETF ne prend pas position sur la validité et la portée de tout droit de propriété intellectuelle ou autres droits qui pourrait être revendiqués au titre de la mise en œuvre ou l’utilisation de la technologie décrite dans le présent document ou sur la mesure dans laquelle toute licence sur de tels droits pourrait être ou n’être pas disponible ; pas plus qu’elle ne prétend avoir accompli aucun effort pour identifier de tels droits. Les informations sur les procédures de l’ISOC au sujet des droits dans les documents de l’ISOC figurent dans les BCP 78 et BCP 79.

Des copies des dépôts d’IPR faites au secrétariat de l’IETF et toutes assurances de disponibilité de licences, ou le résultat de tentatives faites pour obtenir une licence ou permission générale d’utilisation de tels droits de propriété par ceux qui mettent en œuvre ou utilisent la présente spécification peuvent être obtenues sur répertoire en ligne des IPR de l’IETF à http://www.ietf.org/ipr .

L’IETF invite toute partie intéressée à porter son attention sur tous copyrights, licences ou applications de licence, ou autres droits de propriété qui pourraient couvrir les technologies qui peuvent être nécessaires pour mettre en œuvre la présente norme. Prière d’adresser les informations à l’IETF à ietf-ipr@ietf.org .


10. Adresse de l’auteur


Steven Legg

Adacel Technologies Ltd.

250 Bay Street

Brighton, Victoria 3186

AUSTRALIA

téléphone : +61 3 8530 7710

mél : steven.legg@adacel.com.au


11. Déclaration complète de droits de reproduction


Copyright (C) The Internet Society (2003). Tous droits réservés.


Le présent document et ses traductions peuvent être copiés et fournis aux tiers, et les travaux dérivés qui les commentent ou les expliquent ou aident à leur mise en œuvre peuvent être préparés, copiés, publiés et distribués, en tout ou partie, sans restriction d’aucune sorte, pourvu que la déclaration de droits de reproduction ci-dessus et le présent paragraphe soient inclus dans toutes telles copies et travaux dérivés. Cependant, le présent document lui-même ne peut être modifié d’aucune façon, en particulier en retirant la notice de droits de reproduction ou les références à la Internet Society ou aux autres organisations Internet, excepté autant qu’il est nécessaire pour le besoin du développement des normes Internet, auquel cas les procédures de droits de reproduction définies dans les procédures des normes Internet doivent être suivies, ou pour les besoins de la traduction dans d’autres langues que l’anglais.


Les permissions limitées accordées ci-dessus sont perpétuelles et ne seront pas révoquées par la Internet Society ou ses successeurs ou ayant droits.


Le présent document et les informations contenues sont fournis sur une base "EN L’ÉTAT" et le contributeur, l’organisation qu’il ou elle représente ou qui le/la finance (s’il en est), la INTERNET SOCIETY et la INTERNET ENGINEERING TASK FORCE déclinent toutes garanties, exprimées ou implicites, y compris mais non limitées à toute garantie que l’utilisation des informations encloses ne violent aucun droit ou aucune garantie implicite de commercialisation ou d’aptitude à un objet particulier.


Remerciement

Le financement de la fonction d’édition des RFC est actuellement fourni par l’Internet Society.