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
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.
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.
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.
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
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].
[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 .
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.