[Ietf-dkim] Re: I-D Action: draft-ietf-dkim-dkim2-spec-01.txt

Steve Atkins <steve@wordtothewise.com> Thu, 23 April 2026 16:32 UTC

Return-Path: <steve@wordtothewise.com>
X-Original-To: ietf-dkim@mail2.ietf.org
Delivered-To: ietf-dkim@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id AB9B7E1D3B9C for <ietf-dkim@mail2.ietf.org>; Thu, 23 Apr 2026 09:32:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1776961933; bh=RvlUZueWk4YFOs9BDJBhCnvoj+eFKMWHOOIz8YJEO8w=; h=From:Subject:Date:References:To:In-Reply-To; b=KNMbeW5blNtR35Zc6DIARu631xaHgR2CZ4d4JDuCGKEFQ+r75qth1WC3tsaIhxZes /EcVK4ZSWJ2bcbR4vhlZJC9GuSVgdtrqHt6H31eRWRgcNEkZsGGkNJAa2Y6mqu7IdJ 4+i5bsg/7HPwKuDpn+6S4gBNqaZpvDkARklRzH7E=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=wordtothewise.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id k6VTpvZ7ES7g for <ietf-dkim@mail2.ietf.org>; Thu, 23 Apr 2026 09:32:12 -0700 (PDT)
Received: from mail.turscar.ie (mail.turscar.ie [46.235.231.167]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 91080E1D3A44 for <ietf-dkim@ietf.org>; Thu, 23 Apr 2026 09:30:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=wordtothewise.com; s=blueberry; t=1776961847; bh=RvlUZueWk4YFOs9BDJBhCnvoj+eFKMWHOOIz8YJEO8w=; h=From:Subject:Date:References:To:In-Reply-To:From:Subject:Date:To: Reply-To:Cc; b=qIpRF9DeA5I2LWWxV2GHbo4S+Bjd7X89AKs4Z0dgBjH69qzBclVCcUjTHmz48HcwJ ZyQc3eYCScc8BeYDmyeJ2QXuS/fPQ34b8Yi7W1sZZzWpBL3xKmvy5+P3SNJjEL6uFG Ct0B+i8Ju48fESHCmM9fH6c7EGXO8w/wvpmTmE4oI2KzFnWjjpFVNptbyTTLrnfks5 Lp54jgHdG7AkTRANL3aNceQE7yAw7HVZK/KYxlfceXOyyAlwa2yi3K2bwuh80lvPfR d/FNw5nAAFiPhyh8J8WhqCwGOLm+/tlkCbC62pJehCshjGS6ZRoyJpZxXkj45iEM8N e13AA3fjQJsiw==
From: Steve Atkins <steve@wordtothewise.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_AE16A6EE-475C-4836-85B3-8186862C3DB7"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\))
Date: Thu, 23 Apr 2026 18:30:46 +0200
References: <177667911597.549216.12605184642110172871@dt-datatracker-b45949c58-5szpr> <+WsczAC5ig5pFAh5@highwayman.com> <77CECDF8-8FF3-4524-951C-54E0E003ED12@wordtothewise.com> <02543e6e-89a7-48bb-b05a-68b20304cd42@1und1.de>
To: ietf-dkim@ietf.org
In-Reply-To: <02543e6e-89a7-48bb-b05a-68b20304cd42@1und1.de>
Message-Id: <6400A4AE-3F0D-4B08-B60D-2C5F3884F090@wordtothewise.com>
X-Mailer: Apple Mail (2.3826.700.81)
Message-ID-Hash: HZWACPS6JRUCALM4ZAQG6Y6OE7TGS3OM
X-Message-ID-Hash: HZWACPS6JRUCALM4ZAQG6Y6OE7TGS3OM
X-MailFrom: steve@wordtothewise.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-ietf-dkim.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Ietf-dkim] Re: I-D Action: draft-ietf-dkim-dkim2-spec-01.txt
List-Id: IETF DKIM List <ietf-dkim.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf-dkim/YN8XH1duoKvG0ARBc-sq05yULbU>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf-dkim>
List-Help: <mailto:ietf-dkim-request@ietf.org?subject=help>
List-Owner: <mailto:ietf-dkim-owner@ietf.org>
List-Post: <mailto:ietf-dkim@ietf.org>
List-Subscribe: <mailto:ietf-dkim-join@ietf.org>
List-Unsubscribe: <mailto:ietf-dkim-leave@ietf.org>


> On 23 Apr 2026, at 17:42, Hannah Stern <hannah.stern=401und1.de@dmarc.ietf.org> wrote:
> 
> Hi!
> 
> On 4/23/26 15:08, Steve Atkins wrote:
> 
>>> On 20 Apr 2026, at 13:06, Richard Clayton <richard@highwayman.com> wrote:
> 
>>> [...]
> 
>>> As presaged a while back -- and no-one objected, I have removed the
>>> definition of tag value list and incorporated the relevant text into the
>>> descriptions of Message-Instance and DKIM2-Signature. This is the only
>>> change that implementors MUST address -- the trailing ";" on these two
>>> header fields is now required.
> 
>> This is a change from previous usage of tag value lists, and might
>> reduce some code reuse for header generation as existing libraries don’t
>> necessarily add the trailing semicolon.
> 
>> But as someone who mostly writes code that validates these fields I do
>> find the mandatory trailing semicolon a useful check to protect against
>> truncation.
> 
> I'm not sure I agree with that consideration.
> 
> Truncation will be caught in verification because it invalidates
> signatures.
> 
> So for me the trailing semicolon change is mostly inconsequential
> and I'm mostly agnostic about it.
> 
> Might simplify one or two code paths in generation/parsing though.

I don’t think there’s a lot in it either way. I’d marginally prefer it
being either required or forbidden rather than optional, just to
reduce the test space a little.

> 
>> The other is that the narrative text describes the body recipes as
>> either null or an array of recipe steps (“c”, “d” or “z”) while the json
>> schema describes it as either null, or a {“z”: true} object or an array
>> of recipe steps (“c” or “d”).
> 
> I'd want to do away with "z".  There has been discussion in some other
> thread that that's actually not useful.
> 
> In a DSN the original message is included either as is or headers only.
> 
> The verifier inspecting a DSN can easily "know" if the body is left
> off without such a hint.  (Check original body empty and the hash
> in the original newest Message-Instance doesn't match - the latter
> only if you need a distinction between "original message actually
> had an empty body" and "original message had a non-empty body
> that's not included in the DSN".)

Yes, I’m not sure the use case is there.

> 
>> I think the json schema might be simpler to understand if we treated
>> header steps and body steps separately, rather than reusing recipe-steps
>> for both.
> 
> That argument goes in the opposite direction to the argument for
> tag-lists.
> 
> Once you omit "z", you have uniform types (only with null alternatives
> in 2 places, namely directly under "h", as alternative to the
> field-name -> recipe-steps object, or directly under "h" as
> alternative to recipe-steps (an array) directly).

Agree. If they’re actually identical, rather than mostly identical plus
“z”, then describing that array just once is better.

Cheers,
  Steve