From cc00e160574d984fa90a3044a67e38ed3b175e52 Mon Sep 17 00:00:00 2001 From: Hannah Stern Date: Mon, 8 Jun 2026 19:06:37 +0200 Subject: [PATCH 1/2] Updated signature example --- hs/README.md | 13 ++----------- hs/dkim2-keys.txt | 3 +++ hs/signed1.eml | 40 +++++++++++++++++++++------------------- 3 files changed, 26 insertions(+), 30 deletions(-) create mode 100644 hs/dkim2-keys.txt diff --git a/hs/README.md b/hs/README.md index 15d56d1..f097e73 100644 --- a/hs/README.md +++ b/hs/README.md @@ -5,14 +5,5 @@ Files: * pub.rsa/priv.rsa: RSA keypair used here * pub.ed/priv.ed: ED25519 keypair used here * signed1.eml: First simple signed email, according to my best - understanding of draft-clayton-dkim2-spec-08 - -Note: The JSON in Message-Instance may not yet be in a final shape - -Note: My interpretation of algorithm agility representation in -DKIM2-Signature's "s" tag is crude, just using multiples of 3 -array elements (selector, algorithm, signature) instead of something -more structured. - -Note: I think the algorithm specifiers would need to be changed to -include the hash name! + understanding of draft-ietf-dkim-dkim2-spec-02 +* dkim2-keys.txt: Simple text based entries for verification diff --git a/hs/dkim2-keys.txt b/hs/dkim2-keys.txt new file mode 100644 index 0000000..c017580 --- /dev/null +++ b/hs/dkim2-keys.txt @@ -0,0 +1,3 @@ +selector1._domainkey.signer.example p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvDckC9n3Ds9uFZ7Kd7CwT7qV69CCq4L9pWha1O1W38yGQ1wHiWFwTXG4Kc5Dr8COLnLOZDPTERKbfGC3/nr9yWVoL4c7Rkwfvzk9YmQl89znjMyXuB7R3KAKbU6uZKSuOX/HONL2LQWv4oB+ab2TE0WnZj41LYboOS+mkemSuDMVsyTGJZJvGQT8im1dnGiqPCYexVkVwCw4z8+iFo82fBkO/m5vNqfSKWHerbuQBkG1Ubm2cshXCf6JWnnbOHLqMkLNz0z9B9/P1OE6pyP1AsjJi7YwyEnICbQ6LQ7/I54IcLHDtSoTZtSX+Zn1M7ihCj7GVbPpQriatROdP1kmRwIDAQAB; +selector._domainkey.bar.example p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvDckC9n3Ds9uFZ7Kd7CwT7qV69CCq4L9pWha1O1W38yGQ1wHiWFwTXG4Kc5Dr8COLnLOZDPTERKbfGC3/nr9yWVoL4c7Rkwfvzk9YmQl89znjMyXuB7R3KAKbU6uZKSuOX/HONL2LQWv4oB+ab2TE0WnZj41LYboOS+mkemSuDMVsyTGJZJvGQT8im1dnGiqPCYexVkVwCw4z8+iFo82fBkO/m5vNqfSKWHerbuQBkG1Ubm2cshXCf6JWnnbOHLqMkLNz0z9B9/P1OE6pyP1AsjJi7YwyEnICbQ6LQ7/I54IcLHDtSoTZtSX+Zn1M7ihCj7GVbPpQriatROdP1kmRwIDAQAB; +selector2._domainkey.bar.example k=ed25519; p=J3pRkHKe/Bz/V/hx4xPZMhYa7dnxgtgJlrSKIGP4G/Y= diff --git a/hs/signed1.eml b/hs/signed1.eml index c5808f1..f9fd88e 100644 --- a/hs/signed1.eml +++ b/hs/signed1.eml @@ -1,24 +1,26 @@ -DKIM2-Signature: i=1; v=1; t=2; +DKIM2-Signature: i=1; m=2; t=2; + mf=PGZvb0BiYXIuZXhhbXBsZT4=; + rt=PGJhcjFAYmFyLmV4YW1wbGU+, + PGJhcjJAYmFyLmV4YW1wbGU+; d=bar.example; - m=eyJtZiI6Ijxmb29AYmFyLmV4YW1wbGU+IiwicnQiOlsiPGJhcjFAYmFyLmV4 - YW1wbGU+IiwiPGJhcjJAYmFyLmV4YW1wbGU+Il19; - s=WyJzZWxlY3RvciIsInJzYSIsInNoeEVZOFI3WjVsN2pxTjRIRE1CaFJQMzdz - NUxHT2dRam05MXRNZzQ0N09MSEJHcXoxeW15SWJMU2pidDc5SDQvZXVLWERq - V2FhampmZnk0dGVVM2Y0TUd2U0JxZllRbStjYXVYdjlFYUJyZWJJM1lGR1lS - MmpsZndaWmdLcjJ6S0pXYnNDTGpqeHRjWFlHVUIzMVcwaTFJK2lYSEphU1d6 - REExZFZVNzVEUXAyTmpQS2tGN0ZJNkwvK2pZOEdaT2VyZ1hGYUdOSDZ1Z0V5 - dEhlRm41bG5rMEFDakswUmZIL3h3cTJsWE84SmRnSk1FTzRDc005UEZ5V1lq - VlNhbkdTYm15eW1kbmN2TWJxdVhocW55Y0NqNldvNWFYeXozWVRTRjhob09I - Z2JPc29uck9DSlRXckxONXhiOXZjcGN2OWxzN2V3OUFEaFhObGU3dTg3UTh2 - dz09Iiwic2VsZWN0b3IyIiwiZWQyNTUxOSIsIlR2aHVBdC9tQkRNby9LTytP - N3Nhc1YxbEZGSHRTaTB4UHdDSk9iS2RoVnIrbUlrQ3YyODRYcjMyd2o4eWlN - NjNXWHNuVXhXamU4Tkl4R0ZNMkxGQkRnPT0iXQ== -Message-Instance: v=1; - h=eyJiIjpbInNoYTI1NiIsImZka2VCL0EwRmtiVlAyazRKNHBOUG9lV0g2dnFC - bTkrYjBDM09ZODdDdzg9Il0sImgiOlsic2hhMjU2IiwiK3VFRmJ6aVJOdmhn - WkMyZjliNHlFVjVELzdFZTBDU21aRW5tS3loZVhQdz0iXX0= + s=selector:rsa-sha256:eOPHetWUHtGaBgkKHW8gGpjIGTag + pcDe99VJQQ73x1uvkxIDrtLZUvmDlbSbfFt7t0Xx8sjbpYZFeOFf1Z94bt394qwzt8D8oqWxAcq + 56g5MA2P7B7lm+m4CmuspVDVHtRTTnqX9BTuj1G8oA8oCXRviO92ljTKBZV6NaIc/DSNdA/mYSw + 8UgctIIvdMzMhEStE8yq88psZJsZbT9Ao8ITonvNuWABVZ/lBvvbmJ/0ZAS4ktjAtFTQsEc8WGQ + jFaqDAqLJ6a/CP1Xggt4nmr5N0NGd1rvjHpYfp5LYfXMu+NtsKF/in7MuGzYV5IXooduD+sn6po + G5X7alwFr91l0g==, + selector2:ed25519-sha256:E6aN9nPEjKzzIbA7QC6tiI/v4MP7 + mltTubA5N17UcrO0ECrLQOKV3Y0eeY3lby/Dup1yF9Hi8EH46ieFNhwtCQ==; +Message-Instance: m=2; h=sha256:8QVWwKrbt6EVO5mfBAXV2W2qrUakghw9z9Sbc8wy0xk=:fdkeB/A0FkbVP2k4J4pNPoeWH6vqBm9+b0C3OY87Cw8=; r=eyJoIjpudWxsfQ==; +Message-Instance: m=1; h=sha256:+uEFbziRNvhgZC2f9b4yEV5D/7Ee0CSmZEnmKyheXPw=:fdkeB/A0FkbVP2k4J4pNPoeWH6vqBm9+b0C3OY87Cw8=; From: Foo -To: Bar1 , Bar2 +To : Bar1 , + Bar2 Subject: Test +Subject: Test2 Test + + + + From 0181a289f4d081832c7fb14bb9fab26b8806290d Mon Sep 17 00:00:00 2001 From: Hannah Stern Date: Mon, 8 Jun 2026 19:10:08 +0200 Subject: [PATCH 2/2] Add debug information --- hs/README.md | 1 + .../dkim2-spike-02-body-in.hash | 1 + .../dkim2-spike-02-body-in.in | 1 + .../dkim2-spike-02-header-in.hash | 1 + .../dkim2-spike-02-header-in.in | 4 ++++ .../dkim2-spike-02-toplevel-hash-signing.hash | 1 + .../dkim2-spike-02-toplevel-hash-signing.in | 3 +++ hs/signed1-debug-info/dkim2-spike.out | 24 +++++++++++++++++++ 8 files changed, 36 insertions(+) create mode 100644 hs/signed1-debug-info/dkim2-spike-02-body-in.hash create mode 100644 hs/signed1-debug-info/dkim2-spike-02-body-in.in create mode 100644 hs/signed1-debug-info/dkim2-spike-02-header-in.hash create mode 100644 hs/signed1-debug-info/dkim2-spike-02-header-in.in create mode 100644 hs/signed1-debug-info/dkim2-spike-02-toplevel-hash-signing.hash create mode 100644 hs/signed1-debug-info/dkim2-spike-02-toplevel-hash-signing.in create mode 100644 hs/signed1-debug-info/dkim2-spike.out diff --git a/hs/README.md b/hs/README.md index f097e73..5cbf13b 100644 --- a/hs/README.md +++ b/hs/README.md @@ -7,3 +7,4 @@ Files: * signed1.eml: First simple signed email, according to my best understanding of draft-ietf-dkim-dkim2-spec-02 * dkim2-keys.txt: Simple text based entries for verification +* signed1-debug-info/...: Debug information diff --git a/hs/signed1-debug-info/dkim2-spike-02-body-in.hash b/hs/signed1-debug-info/dkim2-spike-02-body-in.hash new file mode 100644 index 0000000..1bb186b --- /dev/null +++ b/hs/signed1-debug-info/dkim2-spike-02-body-in.hash @@ -0,0 +1 @@ +fdkeB/A0FkbVP2k4J4pNPoeWH6vqBm9+b0C3OY87Cw8= diff --git a/hs/signed1-debug-info/dkim2-spike-02-body-in.in b/hs/signed1-debug-info/dkim2-spike-02-body-in.in new file mode 100644 index 0000000..464a7cf --- /dev/null +++ b/hs/signed1-debug-info/dkim2-spike-02-body-in.in @@ -0,0 +1 @@ +Test diff --git a/hs/signed1-debug-info/dkim2-spike-02-header-in.hash b/hs/signed1-debug-info/dkim2-spike-02-header-in.hash new file mode 100644 index 0000000..12f4b22 --- /dev/null +++ b/hs/signed1-debug-info/dkim2-spike-02-header-in.hash @@ -0,0 +1 @@ +8QVWwKrbt6EVO5mfBAXV2W2qrUakghw9z9Sbc8wy0xk= diff --git a/hs/signed1-debug-info/dkim2-spike-02-header-in.in b/hs/signed1-debug-info/dkim2-spike-02-header-in.in new file mode 100644 index 0000000..b486a1f --- /dev/null +++ b/hs/signed1-debug-info/dkim2-spike-02-header-in.in @@ -0,0 +1,4 @@ +from:Foo +subject:Test2 +subject:Test +to:Bar1 , Bar2 diff --git a/hs/signed1-debug-info/dkim2-spike-02-toplevel-hash-signing.hash b/hs/signed1-debug-info/dkim2-spike-02-toplevel-hash-signing.hash new file mode 100644 index 0000000..25502d8 --- /dev/null +++ b/hs/signed1-debug-info/dkim2-spike-02-toplevel-hash-signing.hash @@ -0,0 +1 @@ +ubYbNnDAnWDufOsBQdEsW4SJg17WIXegy44fh4tIPVc= diff --git a/hs/signed1-debug-info/dkim2-spike-02-toplevel-hash-signing.in b/hs/signed1-debug-info/dkim2-spike-02-toplevel-hash-signing.in new file mode 100644 index 0000000..ed6d645 --- /dev/null +++ b/hs/signed1-debug-info/dkim2-spike-02-toplevel-hash-signing.in @@ -0,0 +1,3 @@ +message-instance:m=1;h=sha256:+uEFbziRNvhgZC2f9b4yEV5D/7Ee0CSmZEnmKyheXPw=:fdkeB/A0FkbVP2k4J4pNPoeWH6vqBm9+b0C3OY87Cw8=; +message-instance:m=2;h=sha256:8QVWwKrbt6EVO5mfBAXV2W2qrUakghw9z9Sbc8wy0xk=:fdkeB/A0FkbVP2k4J4pNPoeWH6vqBm9+b0C3OY87Cw8=;r=eyJoIjpudWxsfQ==; +dkim2-signature:i=1;m=2;t=2;mf=PGZvb0BiYXIuZXhhbXBsZT4=;rt=PGJhcjFAYmFyLmV4YW1wbGU+,PGJhcjJAYmFyLmV4YW1wbGU+;d=bar.example;s=selector:rsa-sha256:,selector2:ed25519-sha256:; diff --git a/hs/signed1-debug-info/dkim2-spike.out b/hs/signed1-debug-info/dkim2-spike.out new file mode 100644 index 0000000..2f583b2 --- /dev/null +++ b/hs/signed1-debug-info/dkim2-spike.out @@ -0,0 +1,24 @@ +New Message-Instance: m=2; h=sha256:8QVWwKrbt6EVO5mfBAXV2W2qrUakghw9z9Sbc8wy0xk=:fdkeB/A0FkbVP2k4J4pNPoeWH6vqBm9+b0C3OY87Cw8=; r=eyJoIjpudWxsfQ==; +New template: i=1; m=2; t=2; + mf=PGZvb0BiYXIuZXhhbXBsZT4=; + rt=PGJhcjFAYmFyLmV4YW1wbGU+, + PGJhcjJAYmFyLmV4YW1wbGU+; + d=bar.example; + s=selector:rsa-sha256:, + selector2:ed25519-sha256:; +RSA key bits: 2048 +RSA signature: eOPHetWUHtGaBgkKHW8gGpjIGTagpcDe99VJQQ73x1uvkxIDrtLZUvmDlbSbfFt7t0Xx8sjbpYZFeOFf1Z94bt394qwzt8D8oqWxAcq56g5MA2P7B7lm+m4CmuspVDVHtRTTnqX9BTuj1G8oA8oCXRviO92ljTKBZV6NaIc/DSNdA/mYSw8UgctIIvdMzMhEStE8yq88psZJsZbT9Ao8ITonvNuWABVZ/lBvvbmJ/0ZAS4ktjAtFTQsEc8WGQjFaqDAqLJ6a/CP1Xggt4nmr5N0NGd1rvjHpYfp5LYfXMu+NtsKF/in7MuGzYV5IXooduD+sn6poG5X7alwFr91l0g== +ED25519 signature: E6aN9nPEjKzzIbA7QC6tiI/v4MP7mltTubA5N17UcrO0ECrLQOKV3Y0eeY3lby/Dup1yF9Hi8EH46ieFNhwtCQ== +newDkim2SignatureValue: i=1; m=2; t=2; + mf=PGZvb0BiYXIuZXhhbXBsZT4=; + rt=PGJhcjFAYmFyLmV4YW1wbGU+, + PGJhcjJAYmFyLmV4YW1wbGU+; + d=bar.example; + s=selector:rsa-sha256:eOPHetWUHtGaBgkKHW8gGpjIGTag + pcDe99VJQQ73x1uvkxIDrtLZUvmDlbSbfFt7t0Xx8sjbpYZFeOFf1Z94bt394qwzt8D8oqWxAcq + 56g5MA2P7B7lm+m4CmuspVDVHtRTTnqX9BTuj1G8oA8oCXRviO92ljTKBZV6NaIc/DSNdA/mYSw + 8UgctIIvdMzMhEStE8yq88psZJsZbT9Ao8ITonvNuWABVZ/lBvvbmJ/0ZAS4ktjAtFTQsEc8WGQ + jFaqDAqLJ6a/CP1Xggt4nmr5N0NGd1rvjHpYfp5LYfXMu+NtsKF/in7MuGzYV5IXooduD+sn6po + G5X7alwFr91l0g==, + selector2:ed25519-sha256:E6aN9nPEjKzzIbA7QC6tiI/v4MP7 + mltTubA5N17UcrO0ECrLQOKV3Y0eeY3lby/Dup1yF9Hi8EH46ieFNhwtCQ==;