Re: [openpgp] OpenPGP Armor Message specification

Werner Koch <> Thu, 14 September 2017 09:13 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 4DB78132D18 for <>; Thu, 14 Sep 2017 02:13:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -6.9
X-Spam-Status: No, score=-6.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 2Ma_DDaz9oPY for <>; Thu, 14 Sep 2017 02:13:39 -0700 (PDT)
Received: from ( [IPv6:2001:aa8:fff1:100::22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 0280C132D51 for <>; Thu, 14 Sep 2017 02:13:38 -0700 (PDT)
Received: from uucp by with local-rmail (Exim 4.89 #1 (Debian)) id 1dsQDJ-00037F-4m for <>; Thu, 14 Sep 2017 11:13:37 +0200
Received: from wk by with local (Exim 4.84 #3 (Debian)) id 1dsQ8F-00077A-KT; Thu, 14 Sep 2017 11:08:23 +0200
From: Werner Koch <>
To: Guillem Jover <>
References: <> <> <>
Organisation: The GnuPG Project
X-message-flag: Mails containing HTML will not be read! Please send only plain text.
OpenPGP: url=
Mail-Followup-To: Guillem Jover <>,
Date: Thu, 14 Sep 2017 11:08:23 +0200
In-Reply-To: <> (Guillem Jover's message of "Sat, 12 Aug 2017 20:57:53 +0200")
Message-ID: <>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=Taiwan_kibo_mailbomb_cracking_Sundevil_Lon_Horiuchi_AMW_2600_Magazin"; micalg="pgp-sha256"; protocol="application/pgp-signature"
Archived-At: <>
Subject: Re: [openpgp] OpenPGP Armor Message specification
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "Ongoing discussion of OpenPGP issues." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 14 Sep 2017 09:13:41 -0000

On Sat, 12 Aug 2017 20:57, said:

> I've fixed a couple of typos and, now opened a merge request
> <>.

I have pushed your changes.  For reference I include the patch below.



commit 24b1bba57e3739deb593554c94822b01b7589a32
Author: Guillem Jover <>
Date:   Mon Oct 19 16:33:32 2015 +0200

    Clarify ASCII Armoring and Cleartext formats
    Describe explicitly what ASCII characters are considered whitespace.
    Use "blank" instead of "empty" when referring to a blank line that can
    be either zero-length or contain only whitespace, and describe what it
    means. Mention that Section 7 follows the same format and restrictions
    of Section 6.2. Add that trailing whitespace at the end of any line is
    removed for both signature generation and verification.

	Modified   middle.mkd
diff --git a/middle.mkd b/middle.mkd
index ec864c4..7f4b1fb 100644
--- a/middle.mkd
+++ b/middle.mkd
@@ -2730,7 +2730,7 @@ ## {6.2} Forming ASCII Armor
   * Armor Headers
-  * A blank (zero-length, or containing only whitespace) line
+  * A blank line
   * The ASCII-Armored data
@@ -2777,7 +2777,8 @@ ## {6.2} Forming ASCII Armor
 line.  That is to say, there is always a line ending preceding the
 starting five dashes, and following the ending five dashes.  The header
 lines, therefore, MUST start at the beginning of a line, and MUST NOT
-have text other than whitespace following them on the same line.  These
+have text other than whitespace -- space (0x20), tab (0x09) or carriage
+return (0x0d) -- following them on the same line.  These
 line endings are considered a part of the Armor Header Line for the
 purposes of determining the content they delimit.  This is particularly
 important when computing a cleartext signature (see below).
@@ -2798,7 +2799,7 @@ ## {6.2} Forming ASCII Armor
 there is a limit of 76 characters for the Radix-64 data (Section 6.3),
 there is no limit to the length of Armor Headers.  Care should be taken
 that the Armor Headers are short enough to survive transport.  One way
-to do this is to repeat an Armor Header key multiple times with
+to do this is to repeat an Armor Header Key multiple times with
 different values for each so that no one line is overly long.
 Currently defined Armor Header Keys are as follows:
@@ -2844,6 +2845,9 @@ ## {6.2} Forming ASCII Armor
     cares to; an implementation MAY ignore it and assume all text
     is UTF-8.
+The blank line can either be zero-length or contain only whitespace,
+that is spaces (0x20), tabs (0x09) or carriage returns (0x0d).
 The Armor Tail Line is composed in the same manner as the Armor Header
 Line, except the string "BEGIN" is replaced by the string "END".
@@ -2966,7 +2970,9 @@ # {7}  Cleartext Signature Framework
 It is desirable to be able to sign a textual octet stream without
 ASCII armoring the stream itself, so the signed text is still readable
 without special software.  In order to bind a signature to such a
-cleartext, this framework is used. (Note that this framework is not
+cleartext, this framework is used, which follows the same basic
+format and restrictions as the ASCII armoring described above in
+"Forming ASCII Armor" (Section 6.2). (Note that this framework is not
 intended to be reversible.  RFC 3156 [](#RFC3156) defines another way
 to sign cleartext messages for environments that support MIME.)
@@ -2977,7 +2983,7 @@ # {7}  Cleartext Signature Framework
   - One or more "Hash" Armor Headers,
-  - Exactly one empty line not included into the message digest,
+  - Exactly one blank line not included into the message digest,
   - The dash-escaped cleartext that is included into the message
@@ -3022,9 +3028,9 @@ ## {7.1} Dash-Escaped Text
 "- " if it occurs at the beginning of a line, and SHOULD warn on "-"
 and any character other than a space at the beginning of a line.
-Also, any trailing whitespace -- spaces (0x20) and tabs (0x09) -- at
-the end of any line is removed when the cleartext signature is
+Also, any trailing whitespace -- spaces (0x20), tabs (0x09) or
+carriage returns (0x0d) -- at the end of any line is removed when
+the cleartext signature is generated and verified.
 # {8}  Regular Expressions

Die Gedanken sind frei.  Ausnahmen regelt ein Bundesgesetz.