summaryrefslogtreecommitdiffstats
path: root/openpgp/tests
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2022-02-16 12:11:23 +0100
committerJustus Winter <justus@sequoia-pgp.org>2022-02-16 12:31:19 +0100
commit72c829e39f3628f6bc8400b67045230f4449e8dc (patch)
treec11c78e0254b85c294bb62e8a9fef27fa8fdddbd /openpgp/tests
parent579113cd358d873f75b61a5688e86e934d04baa5 (diff)
openpgp: Fix verifying cleartext signed messages with multiple sigs.
- We implement the cleartext signature framework by transforming the message on the fly to a signed message, then using our parsing framework as usual. However, we need to tweak the behavior slightly. - Notably, our CSF transformation yields just one OPS packet per encountered 'Hash' algorithm header, and it cannot know how many signatures are in fact following. Therefore, the message will not be well-formed according to the grammar. But, since we created the message structure during the transformation, we know it is good, even if it is a little out of spec. - This patch tweaks the streaming verifier's behavior to accommodate this.
Diffstat (limited to 'openpgp/tests')
-rw-r--r--openpgp/tests/data/keys/InRelease.signers.pgp406
-rw-r--r--openpgp/tests/data/messages/InRelease1258
2 files changed, 1664 insertions, 0 deletions
diff --git a/openpgp/tests/data/keys/InRelease.signers.pgp b/openpgp/tests/data/keys/InRelease.signers.pgp
new file mode 100644
index 00000000..bb64d1e1
--- /dev/null
+++ b/openpgp/tests/data/keys/InRelease.signers.pgp
@@ -0,0 +1,406 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+=PLZd
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/openpgp/tests/data/messages/InRelease b/openpgp/tests/data/messages/InRelease
new file mode 100644
index 00000000..0cce038c
--- /dev/null
+++ b/openpgp/tests/data/messages/InRelease
@@ -0,0 +1,1258 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
+Origin: Debian
+Label: Debian
+Suite: stable
+Version: 11.2
+Codename: bullseye
+Changelogs: https://metadata.ftp-master.debian.org/changelogs/@CHANGEPATH@_changelog
+Date: Sat, 18 Dec 2021 10:38:58 UTC
+Acquire-By-Hash: yes
+No-Support-for-Architecture-all: Packages
+Architectures: all amd64 arm64 armel armhf i386 mips64el mipsel ppc64el s390x
+Components: main contrib non-free
+Description: Debian 11.2 Released 18 December 2021
+MD5Sum:
+ 7fdf4db15250af5368cc52a91e8edbce 738242 contrib/Contents-all
+ cbd7bc4d3eb517ac2b22f929dfc07b47 57319 contrib/Contents-all.gz
+ 37d6231ff08b9f383fba5134e90c1246 786460 contrib/Contents-amd64
+ f862fd63c5e4927f91c1cc77a27c89eb 54567 contrib/Contents-amd64.gz
+ 098f43776cd6b43334b2c1eb867a4d64 370054 contrib/Contents-arm64
+ 014eca050cdd0b30df0d5a72df217c5b 29661 contrib/Contents-arm64.gz
+ b6d2673f17fbdb3a5ce92404a62c2d7e 359292 contrib/Contents-armel
+ d02d94be587d56a1246b407669d2a24c 28039 contrib/Contents-armel.gz
+ d272ba9da0f302b6c09a36899e738115 367655 contrib/Contents-armhf
+ 317aa67ea34d625837d245f6fb00bdc4 29236 contrib/Contents-armhf.gz
+ ccb13401b0f48dded08ed089f8074765 407328 contrib/Contents-i386
+ e496015d7e6e8d5a91cec31fc4bde74c 33556 contrib/Contents-i386.gz
+ 44384de1db64f592fc69693b355a0ec7 359402 contrib/Contents-mips64el
+ a2abf38d14c1c7e3aafcb21881b0fe7d 27962 contrib/Contents-mips64el.gz
+ 457feed233db5ce7db62cc69e7a8a5c6 360549 contrib/Contents-mipsel
+ 90ec76d0dca539a4c4aa33404de4c633 27942 contrib/Contents-mipsel.gz
+ b9b7f20a6862237e3f73f027a5fef02d 369164 contrib/Contents-ppc64el
+ 2d38f6dcbbf1cb9536511eaa92375028 29322 contrib/Contents-ppc64el.gz
+ e2089c91540f7adb693675935dacf9e5 357860 contrib/Contents-s390x
+ bb90fb42e72d39da53b3e1e2c2f46bc3 27518 contrib/Contents-s390x.gz
+ 7523eead7a1c47ce357f9996a915aada 6714742 contrib/Contents-source
+ a1f2993cc5150bbdd647254dcd083017 470120 contrib/Contents-source.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 contrib/Contents-udeb-all
+ 4a4dd3598707603b3f76a2378a4504aa 20 contrib/Contents-udeb-all.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 contrib/Contents-udeb-amd64
+ 4a4dd3598707603b3f76a2378a4504aa 20 contrib/Contents-udeb-amd64.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 contrib/Contents-udeb-arm64
+ 4a4dd3598707603b3f76a2378a4504aa 20 contrib/Contents-udeb-arm64.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 contrib/Contents-udeb-armel
+ 4a4dd3598707603b3f76a2378a4504aa 20 contrib/Contents-udeb-armel.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 contrib/Contents-udeb-armhf
+ 4a4dd3598707603b3f76a2378a4504aa 20 contrib/Contents-udeb-armhf.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 contrib/Contents-udeb-i386
+ 4a4dd3598707603b3f76a2378a4504aa 20 contrib/Contents-udeb-i386.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 contrib/Contents-udeb-mips64el
+ 4a4dd3598707603b3f76a2378a4504aa 20 contrib/Contents-udeb-mips64el.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 contrib/Contents-udeb-mipsel
+ 4a4dd3598707603b3f76a2378a4504aa 20 contrib/Contents-udeb-mipsel.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 contrib/Contents-udeb-ppc64el
+ 4a4dd3598707603b3f76a2378a4504aa 20 contrib/Contents-udeb-ppc64el.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 contrib/Contents-udeb-s390x
+ 4a4dd3598707603b3f76a2378a4504aa 20 contrib/Contents-udeb-s390x.gz
+ ee111c5ba348acf3a21aae30b78295a9 103223 contrib/binary-all/Packages
+ a00614008aadb6c665ff89c7003f7226 27334 contrib/binary-all/Packages.gz
+ d994c197370662201c455e0010d8bb62 23912 contrib/binary-all/Packages.xz
+ e0bad22fd686fc487cfb80a047b2dfbe 117 contrib/binary-all/Release
+ cf4f12de2dddedd068776c4f2a5f385e 230485 contrib/binary-amd64/Packages
+ 5af05a35a003103b58fc6d404b7e59e7 60785 contrib/binary-amd64/Packages.gz
+ 8dc07073a1a348200b9ef4734868f1d1 50468 contrib/binary-amd64/Packages.xz
+ 96dca646966230f3c91fb015dac4ab79 119 contrib/binary-amd64/Release
+ 58ca3c2e5247de3ba82cf211fcbe25a4 179482 contrib/binary-arm64/Packages
+ 3b64db81c8b3b7a631e5cb3c739229b9 48744 contrib/binary-arm64/Packages.gz
+ 413207fc7f7edd2b9a369a93f1ecbca2 40828 contrib/binary-arm64/Packages.xz
+ e09a2b5876bfb130426aba1b6034a433 119 contrib/binary-arm64/Release
+ 8a9a0831df6c0b6c0c1c8d5ffa6d5c44 163026 contrib/binary-armel/Packages
+ ae9ed362208450bb7e5f676b78d0a790 44492 contrib/binary-armel/Packages.gz
+ c500c70f4478ce8d5bf67e186c35c150 37452 contrib/binary-armel/Packages.xz
+ aed60bcb645d3d5fbed85d20e5d376e0 119 contrib/binary-armel/Release
+ 03a9ea533d936d8b82092e4d4a22ac92 175400 contrib/binary-armhf/Packages
+ f6ff60f1c7472340f2b86499b4fa19bc 47754 contrib/binary-armhf/Packages.gz
+ a01eed75b8237d405ee441eb53f87d3b 40212 contrib/binary-armhf/Packages.xz
+ f12ce15e4d9a53798da7f2dd0bd1cdfa 119 contrib/binary-armhf/Release
+ 86ded1903059a9e5a10cd0a036d8a177 203348 contrib/binary-i386/Packages
+ c0af809d37542a47127fcd4964f02a81 54188 contrib/binary-i386/Packages.gz
+ 53123a7508a231ac92c2b1fcfd538e94 45328 contrib/binary-i386/Packages.xz
+ 230310562973cfcd1b41b85ce9557b68 118 contrib/binary-i386/Release
+ d11c244d2bc440e6639e83504269b2ce 163491 contrib/binary-mips64el/Packages
+ cca51ee769666dbd9e30f7a40a2b5f06 44721 contrib/binary-mips64el/Packages.gz
+ 5f728b2ab3bdbbc9d2e25bb36b9abba3 37488 contrib/binary-mips64el/Packages.xz
+ 0c18737c22efb33f0444d2b50fc9e34e 122 contrib/binary-mips64el/Release
+ e87482624fb8b6d22880980b32331700 164631 contrib/binary-mipsel/Packages
+ 14d303b017b3c1508667191d2e10b457 44755 contrib/binary-mipsel/Packages.gz
+ ecc9d364ea27de3ee8dc51f992b03c9e 37824 contrib/binary-mipsel/Packages.xz
+ 194b02e7860bf2922943bd8278c88c8b 120 contrib/binary-mipsel/Release
+ 684fd2b382d5983a1bfef274484146c5 179037 contrib/binary-ppc64el/Packages
+ 3e818de3abb1185bba96d7d380e3b11d 48655 contrib/binary-ppc64el/Packages.gz
+ 2507a38d7f549e74455a7e3185b9d26f 40668 contrib/binary-ppc64el/Packages.xz
+ 0f939660cc4944904c97614e2e3feea5 121 contrib/binary-ppc64el/Release
+ fa0ebfd876b369b44e6daa7a35c0fad9 162234 contrib/binary-s390x/Packages
+ d4fa89337e773c5710a98eee6b3923a9 44289 contrib/binary-s390x/Packages.gz
+ 3dd5755f5a1fa02b23e460bfc9fb1d0e 37248 contrib/binary-s390x/Packages.xz
+ 3fb7e0ec0