Création de l'armure ASCII

Lorsqu' OpenPGP encode des données dans une armure ASCII, il encapsule les données grâce à des entêtes spécifiques, dans l'optique de leur reconstruction ultérieure. OpenPGP informe l'utilisateur du type de donnée encodé dans l'armure ASCII par l'intermédiaire de ces entêtes.

La concaténation des données suivantes permet de créer l'armure ASCII :

La ligne d'en-tête d'armure se débute et se termine par cinq tirets ('-', 0x2D) encadrant le contenu approprié. Elle est choisie en fonction du type de donnée à encoder et de la méthode d'encodage.

Elle contient les chaînes de caractères suivantes :

BEGIN PGP MESSAGE

Utilisé pour les fichiers signés, cryptés ou compressés,

BEGIN PGP PUBLIC KEY BLOCK

Utilisé pour protéger par l'armure les clés publiques,

BEGIN PGP PRIVATE KEY BLOCK

Utilisé pour protéger par l'armure les clés privées,

BEGIN PGP MESSAGE, PART X/Y

Utilisé pour les messages composites, lorsque l'armure est séparée en Y morceaux et que le fichier est le Xième sur Y,

BEGIN PGP MESSAGE, PART X

Utilisé pour les messages composites, lorsque l'armure est séparée en un nombre de morceaux inconnu et que le fichier est le Xième. Nécessite l'en-tête d'armure MESSAGE-ID pour être utilisé,

BEGIN PGP SIGNATURE

Utilisé pour les signatures détachées, les signatures OpenPGP/MIME, et les signatures qui suivent des messages signés en clair. Remarque: PGP en version 2.x utilise BEGIN PGP MESSAGE pour les signatures détachées.

Les entêtes de l'armure sont des pairs de chaînes de caractère permettant à l'utilisateur ou à l'implémentation OpenPGP de réception d'obtenir des renseignements sur la manière de décoder ou d'utiliser le message. Ces entêtes font partie de l'armure et non pas du message. Par conséquent, elle ne sont protégées par aucune des signatures appliquées au message.

Le format d'une entête d'armure est est constitué d'une paire clé-valeur. La clé et sa valeur sont séparés par ': '(0x38) et le caractère d'espacement simple ' ' (0x20). OpenPGP considérera une entête d'armure mal formatée comme une altération de l'armure ASCII. Un cas de clé non reconnue sera signalé à l'utilisateur sans que le processus OpenPGP appliqué au message soit arrêté.

Les clés actuellement définies d'une entête d'armure sont :

Il est à noter qu'OpenPGP défini par défaut le texte comme étant en UTF-8. Le résultat d'un codage sera meilleur si les données sont au préalable traduites en UTF-8 puis retranscrite après décodage. Cependant, il est possible que cela soit plus facile à dire quà faire. Par ailleurs, certains groupes d'utilisateurs n'ont pas besoin de UTF-8 parce qu'un jeu de caractère japonais ou encore ISO Latin-5 leur suffit. Dans ce cas, l'implémentation peut redéfinir la description du jeu de caractères en utilisant cette clé. Une implémentation peut utilisée cette clé et tous les jeux de caractère à sa guise; ou encore l'ignorer et supposer que le texte suit la norme UTF-8.

La clé MessageID NE DOIT PAS apparaître à moins que le message soit un message composite. Au cas où il apparaîtrait, il DOIT IMPERATIVEMENT être calculé à partir du message terminé(crypté, signé, etc) et non pas initialisé à une valeur purement aléatoire. Ceci permet de prouver au bénéficiaire légitime du message que ce champ de donnée n'est pas un moyen caché de provoquer des fuites d'information, permettant d'accéder à des clés cryptographiques.

La ligne de fin d'armure est construite de la même manière que la ligne d'en-tête d'armure à l'exception de la chaîne "BEGIN" qui est remplacée par "END".