Murray S. Kucherawy wrote:
You could use an extension tag to capture the original
Content-Transfer-Encoding
as a hint to the canonical form that was signed, but that means the verifier
has to undo the conversion before computing the hashes, and it has to do that
bytewise precisely as well as reconstructing the original MIME header fields.
Getting that even a byte off (modulo "relaxed") means you're toast.
The idea was to only do it for certain situations, i.e. when converted
to base64. Since a unbase64 function is already in your DKIM
repertoire, no extra library is require and it would be one additional
conditional statement.
At that point I suspect you may as well bite the bullet and start down the
road of defining a new canonicalization that accommodates possible
downgrades in transit, picking either 7-bit or 8-bit as the canonical form,
and feeding that form to the hash to be used in signature generation. But
once you consider that a multipart can have some 7-bit and some 8-bit, this
can get real messy real fast.
+1 (on the last sentence)
How would 7/8 bit be considered?
Personally, the STRIP C14N idea would work just fine by removing all
trailing WSP (CR, LF, SP) and for QP text, decode it first. I'm
considering updating my 2006 I-D to include the QP decoding logic.
This, along with the et= idea, it would address at least three
additional cases I have encountered.
- MLM that add an extra line at the top (possibly because of any
empty
header file of size 2, crlf)
- Intermediaries that expand QP to 8 bit
- Intermediaries that reformat to BASE64
I personally have not seen anything else.
--
Hector Santos, CTO
http://www.santronics.com
http://santronics.blogspot.com
_______________________________________________
NOTE WELL: This list operates according to
http://mipassoc.org/dkim/ietf-list-rules.html