From 42e6bb483f52e350c30b0d413467353b038e3313 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Sat, 12 Jul 2025 11:29:07 +0200 Subject: [PATCH] More fuzzing tests and vectors --- .../sop/fuzzing/AsciiArmorFuzzTest.java | 4 +- .../fuzzing/EncryptedMessageFuzzingTest.java | 8 +++- .../sop/fuzzing/PublicKeyPacketFuzzTest.java | 44 ++++++++++++++++++ .../sop/fuzzing/SecretKeyPacketFuzzTest.java | 44 ++++++++++++++++++ .../sop/fuzzing/SignatureFuzzTest.java | 2 +- ...h-72aacd2d82d3c3fa750807ad1138e6a566996f04 | 1 + .../ed25519Legacy_v4.pgp | Bin 0 -> 53 bytes .../ed25519_v4.pgp | 1 + .../ed25519_v6.pgp | Bin 0 -> 44 bytes .../ed448_v4.pgp | Bin 0 -> 65 bytes .../ed448_v6.pgp | Bin 0 -> 69 bytes .../nistP256ECDH_v4.pgp | 1 + .../nistP256ECDH_v6.pgp | Bin 0 -> 92 bytes .../nistP256ECDSA_v4.pgp | 2 + .../nistP256ECDSA_v6.pgp | Bin 0 -> 88 bytes .../nistP384ECDH_v4.pgp | Bin 0 -> 117 bytes .../nistP384ECDH_v6.pgp | Bin 0 -> 121 bytes .../nistP384ECDSA_v4.pgp | Bin 0 -> 113 bytes .../nistP384ECDSA_v6.pgp | Bin 0 -> 117 bytes .../nistP521ECDH_v4.pgp | Bin 0 -> 153 bytes .../nistP521ECDH_v6.pgp | Bin 0 -> 157 bytes .../nistP521ECDSA_v4.pgp | Bin 0 -> 149 bytes .../nistP521ECDSA_v6.pgp | Bin 0 -> 153 bytes ...h-40b0e946bfad779a720ffb4ddf3afda127c381e0 | Bin 0 -> 38 bytes ...h-6ff0478f8c84828619d721a9c582cf0dc048198d | Bin 0 -> 11 bytes ...h-972998632851a93af5c647ad0f8f684afbb6e788 | 1 + ...h-b2703b347fec497f13d319cfd5e337052683f853 | Bin 0 -> 117 bytes ...h-b47757e7135bbaf31049992ed13461a1c95255c9 | Bin 0 -> 15 bytes ...h-fd8f91587a20a22513ee536aec3411052e5b3217 | 1 + .../rsa2048_v4.pgp | Bin 0 -> 272 bytes .../rsa2048_v6.pgp | Bin 0 -> 276 bytes .../rsa4096_v4.pgp | Bin 0 -> 528 bytes .../rsa4096_v6.pgp | Bin 0 -> 532 bytes .../x25519Legacy_v4.pgp | 2 + .../x25519_v4.pgp | 1 + .../x25519_v6.pgp | Bin 0 -> 44 bytes .../PublicKeyPacketFuzzTestInputs/x448_v4.pgp | 1 + .../PublicKeyPacketFuzzTestInputs/x448_v6.pgp | Bin 0 -> 68 bytes .../ed25519Legacy_v4.key.pgp | Bin 0 -> 90 bytes .../ed25519_v4.key.pgp | Bin 0 -> 75 bytes .../ed25519_v6.key.pgp | Bin 0 -> 77 bytes .../ed448_v4.key.pgp | Bin 0 -> 125 bytes .../ed448_v6.key.pgp | Bin 0 -> 127 bytes .../nistP256ECDH_v4.key.pgp | Bin 0 -> 125 bytes .../nistP256ECDH_v6.key.pgp | Bin 0 -> 127 bytes .../nistP256ECDSA_v4.key.pgp | Bin 0 -> 121 bytes .../nistP256ECDSA_v6.key.pgp | Bin 0 -> 123 bytes .../nistP384ECDH_v4.key.pgp | Bin 0 -> 170 bytes .../nistP384ECDH_v6.key.pgp | Bin 0 -> 172 bytes .../nistP384ECDSA_v4.key.pgp | Bin 0 -> 166 bytes .../nistP384ECDSA_v6.key.pgp | Bin 0 -> 168 bytes .../nistP521ECDH_v4.key.pgp | Bin 0 -> 225 bytes .../nistP521ECDH_v6.key.pgp | Bin 0 -> 225 bytes .../nistP521ECDSA_v4.key.pgp | Bin 0 -> 221 bytes .../nistP521ECDSA_v6.key.pgp | Bin 0 -> 223 bytes ...h-28f2677523ed3043117ea46f27bf8b9b990c4e3a | Bin 0 -> 3 bytes ...h-4fbc082c98d268e4495e09d40912053a9c08b896 | 1 + ...h-56fb7129479f381d7cfd4598b540d3b753730ffc | 1 + ...h-6c04193b9d8991eec00fdef05735bfed376c0f6c | 1 + ...h-8eb418bf4e4721c572e13bd11313a1d29de247a9 | Bin 0 -> 17 bytes ...h-e3411c8a800f1d8d38cd62027ff5c51f51ab5224 | Bin 0 -> 18 bytes .../rsa2048_v4.key.pgp | Bin 0 -> 923 bytes .../rsa2048_v6.key.pgp | Bin 0 -> 925 bytes .../rsa4096_v4.key.pgp | Bin 0 -> 1819 bytes .../rsa4096_v6.key.pgp | Bin 0 -> 1821 bytes .../x25519Legacy_v4.key.pgp | Bin 0 -> 95 bytes .../x25519_v4.key.pgp | Bin 0 -> 75 bytes .../x25519_v6.key.pgp | Bin 0 -> 77 bytes .../x448_v4.key.pgp | Bin 0 -> 123 bytes .../x448_v6.key.pgp | Bin 0 -> 125 bytes 70 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTest.java create mode 100644 pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTest.java create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/EncryptedMessageFuzzingTestInputs/decryptFuzzedMessage/crash-72aacd2d82d3c3fa750807ad1138e6a566996f04 create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/ed25519Legacy_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/ed25519_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/ed25519_v6.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/ed448_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/ed448_v6.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP256ECDH_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP256ECDH_v6.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP256ECDSA_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP256ECDSA_v6.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP384ECDH_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP384ECDH_v6.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP384ECDSA_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP384ECDSA_v6.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP521ECDH_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP521ECDH_v6.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP521ECDSA_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP521ECDSA_v6.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-40b0e946bfad779a720ffb4ddf3afda127c381e0 create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-6ff0478f8c84828619d721a9c582cf0dc048198d create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-972998632851a93af5c647ad0f8f684afbb6e788 create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-b2703b347fec497f13d319cfd5e337052683f853 create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-b47757e7135bbaf31049992ed13461a1c95255c9 create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-fd8f91587a20a22513ee536aec3411052e5b3217 create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/rsa2048_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/rsa2048_v6.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/rsa4096_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/rsa4096_v6.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/x25519Legacy_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/x25519_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/x25519_v6.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/x448_v4.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/x448_v6.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/ed25519Legacy_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/ed25519_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/ed25519_v6.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/ed448_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/ed448_v6.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP256ECDH_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP256ECDH_v6.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP256ECDSA_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP256ECDSA_v6.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP384ECDH_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP384ECDH_v6.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP384ECDSA_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP384ECDSA_v6.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP521ECDH_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP521ECDH_v6.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP521ECDSA_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP521ECDSA_v6.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-28f2677523ed3043117ea46f27bf8b9b990c4e3a create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-4fbc082c98d268e4495e09d40912053a9c08b896 create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-56fb7129479f381d7cfd4598b540d3b753730ffc create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-6c04193b9d8991eec00fdef05735bfed376c0f6c create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-8eb418bf4e4721c572e13bd11313a1d29de247a9 create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-e3411c8a800f1d8d38cd62027ff5c51f51ab5224 create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/rsa2048_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/rsa2048_v6.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/rsa4096_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/rsa4096_v6.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/x25519Legacy_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/x25519_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/x25519_v6.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/x448_v4.key.pgp create mode 100644 pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/x448_v6.key.pgp diff --git a/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/AsciiArmorFuzzTest.java b/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/AsciiArmorFuzzTest.java index c58090b9..7f068506 100644 --- a/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/AsciiArmorFuzzTest.java +++ b/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/AsciiArmorFuzzTest.java @@ -18,7 +18,9 @@ public class AsciiArmorFuzzTest { private final SOP sop = new SOPImpl(); - @FuzzTest() + @FuzzTest( + maxDuration = "60s" + ) public void armorAndDearmorData(FuzzedDataProvider data) throws IOException { byte[] bytes = data.consumeBytes(1024); diff --git a/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/EncryptedMessageFuzzingTest.java b/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/EncryptedMessageFuzzingTest.java index 7a2c18c0..4cc2daa0 100644 --- a/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/EncryptedMessageFuzzingTest.java +++ b/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/EncryptedMessageFuzzingTest.java @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2025 Paul Schaub +// +// SPDX-License-Identifier: Apache-2.0 + package org.pgpainless.sop.fuzzing; import com.code_intelligence.jazzer.api.FuzzedDataProvider; @@ -67,7 +71,9 @@ public class EncryptedMessageFuzzingTest { return keys; } - @FuzzTest + @FuzzTest( + maxDuration = "60s" + ) public void decryptFuzzedMessage(FuzzedDataProvider provider) { byte[] ciphertext = provider.consumeBytes(8192); if (ciphertext.length == 0) { diff --git a/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTest.java b/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTest.java new file mode 100644 index 00000000..bbd7e662 --- /dev/null +++ b/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTest.java @@ -0,0 +1,44 @@ +// SPDX-FileCopyrightText: 2025 Paul Schaub +// +// SPDX-License-Identifier: Apache-2.0 + +package org.pgpainless.sop.fuzzing; + +import com.code_intelligence.jazzer.api.FuzzedDataProvider; +import com.code_intelligence.jazzer.junit.FuzzTest; +import org.bouncycastle.bcpg.BCPGInputStream; +import org.bouncycastle.bcpg.UnsupportedPacketVersionException; +import org.bouncycastle.openpgp.PGPObjectFactory; +import org.bouncycastle.openpgp.PGPPublicKeyRing; +import org.bouncycastle.openpgp.bc.BcPGPObjectFactory; + +import java.io.ByteArrayInputStream; +import java.io.IOException; + +public class PublicKeyPacketFuzzTest { + + @FuzzTest(maxDuration = "30m") + public void parsePublicKeyPacket(FuzzedDataProvider provider) + { + byte[] encoding = provider.consumeBytes(8192); + if (encoding.length == 0) { + return; + } + + ByteArrayInputStream bIn = new ByteArrayInputStream(encoding); + BCPGInputStream pIn = new BCPGInputStream(bIn); + PGPObjectFactory objFac = new BcPGPObjectFactory(pIn); + try { + Object next = objFac.nextObject(); + if (next == null) return; + + PGPPublicKeyRing pubKey = (PGPPublicKeyRing) next; + } catch (IOException e) { + // ignore + } catch (UnsupportedPacketVersionException e) { + // ignore + } catch (ClassCastException e) { + // ignore + } + } +} diff --git a/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTest.java b/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTest.java new file mode 100644 index 00000000..2d0e94b5 --- /dev/null +++ b/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTest.java @@ -0,0 +1,44 @@ +// SPDX-FileCopyrightText: 2025 Paul Schaub +// +// SPDX-License-Identifier: Apache-2.0 + +package org.pgpainless.sop.fuzzing; + +import com.code_intelligence.jazzer.api.FuzzedDataProvider; +import com.code_intelligence.jazzer.junit.FuzzTest; +import org.bouncycastle.bcpg.BCPGInputStream; +import org.bouncycastle.bcpg.UnsupportedPacketVersionException; +import org.bouncycastle.openpgp.PGPObjectFactory; +import org.bouncycastle.openpgp.PGPSecretKeyRing; +import org.bouncycastle.openpgp.bc.BcPGPObjectFactory; + +import java.io.ByteArrayInputStream; +import java.io.IOException; + +public class SecretKeyPacketFuzzTest { + + @FuzzTest(maxDuration = "30m") + public void parseSecretKeyPacket(FuzzedDataProvider provider) + { + byte[] encoding = provider.consumeBytes(8192); + if (encoding.length == 0) { + return; + } + + ByteArrayInputStream bIn = new ByteArrayInputStream(encoding); + BCPGInputStream pIn = new BCPGInputStream(bIn); + PGPObjectFactory objFac = new BcPGPObjectFactory(pIn); + try { + Object next = objFac.nextObject(); + if (next == null) return; + + PGPSecretKeyRing secKey = (PGPSecretKeyRing) next; + } catch (IOException e) { + // ignore + } catch (UnsupportedPacketVersionException e) { + // ignore + } catch (ClassCastException e) { + // ignore + } + } +} diff --git a/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/SignatureFuzzTest.java b/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/SignatureFuzzTest.java index 1f7c10e2..6d1be4a2 100644 --- a/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/SignatureFuzzTest.java +++ b/pgpainless-sop/src/test/java/org/pgpainless/sop/fuzzing/SignatureFuzzTest.java @@ -270,7 +270,7 @@ public class SignatureFuzzTest { "-----END PGP PUBLIC KEY BLOCK-----\n"; @FuzzTest( - //maxDuration = "60s" + maxDuration = "60s" ) public void verifyFuzzedSig(FuzzedDataProvider provider) throws IOException { byte[] sig = provider.consumeBytes(1024); diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/EncryptedMessageFuzzingTestInputs/decryptFuzzedMessage/crash-72aacd2d82d3c3fa750807ad1138e6a566996f04 b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/EncryptedMessageFuzzingTestInputs/decryptFuzzedMessage/crash-72aacd2d82d3c3fa750807ad1138e6a566996f04 new file mode 100644 index 00000000..6a639ac1 --- /dev/null +++ b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/EncryptedMessageFuzzingTestInputs/decryptFuzzedMessage/crash-72aacd2d82d3c3fa750807ad1138e6a566996f04 @@ -0,0 +1 @@ +qP\Ù!J],ʥ t @:0.sd$X, bcv7G \ No newline at end of file diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/ed25519Legacy_v4.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/ed25519Legacy_v4.pgp new file mode 100644 index 0000000000000000000000000000000000000000..fc43a52ae545ab0f23d2e71d52f0a04c556606f3 GIT binary patch literal 53 zcmV-50LuTyGX!XG5{DKED+U1s0oq3o0RaakeJ-E=+u?{-|?X_7ehrP6dTPaXd^F*p`oQTHCou>7T%@ Xcy1%xd#!$D@>|-J91^cn@N+8T08*cE2DUuy|-uJf4<8!;LvL%-Q literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP384ECDH_v4.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP384ECDH_v4.pgp new file mode 100644 index 0000000000000000000000000000000000000000..eb69b803b09f7f43cda1946d49ca503b38773af9 GIT binary patch literal 117 zcmV-*0E+*{a|CE`5{D86D}e+6A_D^iZb%@bH@d1U*{QU=&jaqr#ROxQ-W~VMQJsr6 zM?L5bx+UK)H(A)is+`oa;Xf9JOy9h{X^Cq^^(Z}e+}yv5(Ad8Jk6qmJoWo7Zbhu#E XUwd>x!*#t{^eTFWSD{?z0|5yLLdZD) literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP384ECDH_v6.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP384ECDH_v6.pgp new file mode 100644 index 0000000000000000000000000000000000000000..fcd9418f0c88edb3a4838e5c11c7548b90fb6458 GIT binary patch literal 121 zcmV-<0EYj@cLr#15{D81003d*V!>XQvd@_r<2-#(Jk)}Nf@})Z^Ou-EFIsgOK_3Kns4CXy( bkZe#Vj7X1xoedv@a+Phlb6ro30|5yLuSGJL literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP384ECDSA_v4.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP384ECDSA_v4.pgp new file mode 100644 index 0000000000000000000000000000000000000000..753af46d1324d40a651a97ca577b71afec318b8c GIT binary patch literal 113 zcmV-%0FM90Zv<#?5{DB7D}e+6A_D^iz1KNv8AeWyeQRQL_}9*%8(U4$9hR29nA-DW zd_GZ&oiDEN=dRy7A99x|=2u~=ay&uqxHT_$^!8gknnx8@0s61#j$F4JU literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP384ECDSA_v6.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP384ECDSA_v6.pgp new file mode 100644 index 0000000000000000000000000000000000000000..e64e6b2391ca512ebe6b81a9e9a3603222844379 GIT binary patch literal 117 zcmV-*0E+*{a|UQ|5{DB2003zPD}e+6A_D^iNXr`Zp?6RKmUNWAHeuuDFCp@rs|z{* zW2;XP<6UKTzp5v>P?%}^J_lu~=&84()*)5;Gq4RvD0h7m*R}@%h?AQM7Rm#3-9S-M X1+PV&Wnk`7;`;)aICO(Ct>;NCgk3QX literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP521ECDH_v4.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP521ECDH_v4.pgp new file mode 100644 index 0000000000000000000000000000000000000000..c2dba861877ffdf23151075d4d71ddae2c5d070a GIT binary patch literal 153 zcmV;K0A~Njmjq~V5{D86D}e+6BLpJ^0Tat~A(2rLrQ%T&zs)M(VMCgxs2>_QYG49# zl?6=O@VtV7z!=?z>hHxRdgmd8Of13YNtOo{vS5$=l9Wb3ztaFQDm3(cD}==Hm(5N< z$O;Q%9HLBuFY6In0kWa30!+H59F|ruSvw6Me-e|5(AhmTUkhn^HOZTm9VGrc;k~?4 H0|5#Nv9muz literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP521ECDH_v6.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP521ECDH_v6.pgp new file mode 100644 index 0000000000000000000000000000000000000000..c9c82deef40054d4dcfffedcc5d7168d64c9ec58 GIT binary patch literal 157 zcmV;O0Al~fn+9lb5{D81005B%D}e+6BLpJ^0Q)nYRtOaN1(kOXj(**{G`InZJb{|_ z-c>k)340CE4(?PG&a^AMD5@K}2dFdjDKHM@Sev+gE=B0nWHl&gLYM&H_95;@p4J$4 zi)2Pl;j(oSU4@~*riZbPiBI^~g1}8{<7L(&SOWcm-+3{|&u9&2ZbM0i@$d4q__E7^ LAKT})0|5#Ner`ro literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP521ECDSA_v4.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP521ECDSA_v4.pgp new file mode 100644 index 0000000000000000000000000000000000000000..66a16898aeb3a7cc4bda168f552152123646c71b GIT binary patch literal 149 zcmV;G0BZlnlLTmR5{DB7D}e+6BLpJ^07OH#FM5PS(9jcH*xIsSfDnDD=$uhXt!!SR zxz9i+KoEFKji&<25q$Z{+02zJDM9w~=HmL$^`C0HjMn02-^c(``AZ)7_xw9>{Se`z zPYj+`1ZtPWPbt-%=Ok`ch~Ou|*c0^b D`;AIJ literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP521ECDSA_v6.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/nistP521ECDSA_v6.pgp new file mode 100644 index 0000000000000000000000000000000000000000..e751b3093a987a53a27dc12259b30fac693c3993 GIT binary patch literal 153 zcmV;K0A~Njmj-BX5{DB2004~zD}e+6BLpJ^0r%rB3;=e2(AZ!9yuecN?2d$~yMo%& zQs)+T@@5b1#sESuqCDQFPPHE~vGs+G`B%jSuIQXPBn)^Jds?IldISM#31nxE?v=%> zhe|vhi%FR6{F*Nn8)ts@pV`r~=net1L#pJ)vKjpp&l?WRbpfJPHb<6NQCxInp40}8 HD;pM2`J6-9 literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-40b0e946bfad779a720ffb4ddf3afda127c381e0 b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-40b0e946bfad779a720ffb4ddf3afda127c381e0 new file mode 100644 index 0000000000000000000000000000000000000000..6e8f29a8e22a879f4c0629e0d4aa4ba6fd1dbb6b GIT binary patch literal 38 ScmeBY0|EvH1~m|k6951wS^<0j literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-6ff0478f8c84828619d721a9c582cf0dc048198d b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-6ff0478f8c84828619d721a9c582cf0dc048198d new file mode 100644 index 0000000000000000000000000000000000000000..4ad30ddad61a9f2a2b3b2d5b7a11efadea0bdf8a GIT binary patch literal 11 QcmeBYW42~y00L%a00?~m-2eap literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-972998632851a93af5c647ad0f8f684afbb6e788 b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-972998632851a93af5c647ad0f8f684afbb6e788 new file mode 100644 index 00000000..ba689842 --- /dev/null +++ b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-972998632851a93af5c647ad0f8f684afbb6e788 @@ -0,0 +1 @@ +vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv \ No newline at end of file diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-b2703b347fec497f13d319cfd5e337052683f853 b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-b2703b347fec497f13d319cfd5e337052683f853 new file mode 100644 index 0000000000000000000000000000000000000000..ed86d1e54ac98b6d2e6cf7f3df6fd6be88277eb9 GIT binary patch literal 117 VcmdnZ3;{w=8cs1#3g9MTG5~%d0b~FG literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-b47757e7135bbaf31049992ed13461a1c95255c9 b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-b47757e7135bbaf31049992ed13461a1c95255c9 new file mode 100644 index 0000000000000000000000000000000000000000..5fc4ff51001737ca7d1447e07bec4c96996987ed GIT binary patch literal 15 QcmeBXV`kpX00qp<01)K?SpWb4 literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-fd8f91587a20a22513ee536aec3411052e5b3217 b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-fd8f91587a20a22513ee536aec3411052e5b3217 new file mode 100644 index 00000000..c31520de --- /dev/null +++ b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/parsePublicKeyPacket/crash-fd8f91587a20a22513ee536aec3411052e5b3217 @@ -0,0 +1 @@ ++ \ No newline at end of file diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/rsa2048_v4.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/rsa2048_v4.pgp new file mode 100644 index 0000000000000000000000000000000000000000..0547008838cb0d08583a06cac5d20f22165329e2 GIT binary patch literal 272 zcmV+r0q_3Cz)b{ba1w_B2mrQ8((4idUoLtR#*N<=;%|BM31(-B*Lc2Lw8&`Jl*R|u43X9i{&VLSiPXwKQ zqEOtu(?ZZ$CJ`nr_^hmQ#DZBE8#$OYEjX02saeNl_a*K{+xBzTJ-Bnl&e>M)FN<{c zZXj|#Mg3K5aj@H^Oh0FA&mY3qtx_*vh7o`>((=9QRCnbao~L|Dvqq9uc5)eXhC>QBNtlscZjeve-0 z5XYSJsBwb7s^)r-3ZEFqLewFlocq@%3TlVnA!y0!iti?`_t=qhhgH}#vYajpzJbxYqb+vQAgTdqN3EfE7fnqxLt=jqTgY3A*S&B}+?Pzr!belZ$Y4eG zo^o^^r-kb?fkd(L!qjqdEq4ZF6huT=oQlspwHi$6=5|$6<6h^RV#@fcFv`fkapcIX zWQh6Axi&6!>y!R#NdzVcwQ`__zhJx$)XJ+TXYw_$1lDzPOhpr5=b#76by{gR S#LGh+0lal*u1x?D0RRE(m;`qK literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/rsa4096_v6.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/rsa4096_v6.pgp new file mode 100644 index 0000000000000000000000000000000000000000..fa112b0c32f4819fa76ae9b617929ff87cc2ced8 GIT binary patch literal 532 zcmV+v0_*+8!BGZia1w_B000695CGC}T;2nsZMVQ%UwxAz&L<+rtR2bgDW(?cT$rIe z(YYk*J1Q}qJ~*`>o*=@-P^F0(+yU~Y`1R*R3U_D#9WBh5(+M(j4z!WCD}yIB&(tt?5Mzq`nOtpx5IE!>9puf;JD}bmY)#1iJRiv^nlr5 zFOT8*t$TgX3UVGdt=InqgCpjUP&X^^z|cEM=3YOSWb{OS&J0lu&=8uzG=K1eK5VB; zCb&YqVW0afhbU7bL3Ps7q|G3x*AkNjy)P^>aD* z*omY9I7>Szoh#ql_zv6Rs--Al!O)~t9)j?G_I1ueQ9<{94#-STmu6+jJrB6rEK*e( z{Z&`SRRE8ats$ie%Z*zXJIA^^Wwh%UN0Y+Go+56u3ln CH4{4k literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/x448_v4.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/x448_v4.pgp new file mode 100644 index 00000000..eda6730e --- /dev/null +++ b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/x448_v4.pgp @@ -0,0 +1 @@ +>hpEN.-?FBM_-'ň[kqnQԪ&[mY \ No newline at end of file diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/x448_v6.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/PublicKeyPacketFuzzTestInputs/x448_v6.pgp new file mode 100644 index 0000000000000000000000000000000000000000..a71f3a735638a6dd5203d4a37cc3dc770d8fce34 GIT binary patch literal 68 zcmV-K0K5OjLI!AX5{DW9001~Y=`gt>s4f(2SaO9hbK0nn>ODZ*mX|#)?|d|O&Ok_T a&KpXjl7|(FEju6738il2qhWC|Is|8jjvGk; literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/ed25519Legacy_v4.key.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/ed25519Legacy_v4.key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..4a8fecd65bcc3c95b8aea947ff0798d153f0ce15 GIT binary patch literal 90 zcmV-g0Hy!MSOjQr5{DKED+U1s0oq3o0Raa85Yk0@A#trVwTT%da*u^Q?CSo`*I@! literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/ed448_v4.key.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/ed448_v4.key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..738ca3a1285a265a51ec52a545e667cef56cc813 GIT binary patch literal 125 zcmV-@0D}L;djx235{Dew>keJ-E=+u?{-|?X_7ehrP6dTPaXd^F*p`oQTHCou>7T%@ zcy1%xd#!$D@>|-J90EGX=c?M{35{DB2002w~DuzhTJp%y;0s{o0XYTn)kxb3ZN=s-2`;c^V@vJ?} zxFw2*J|=Mz464S8gy=Y)Iu)S>1^cn@N+8T08*cE2DUuy|-uJf4<8!+J0RY7~*3SHM dJ|y^CyIF?R4kj&jk;(@Z8GW2SI&d4wu4U*2G)w>h literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP384ECDH_v4.key.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP384ECDH_v4.key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..d0c46bc14984cda2065406eb48df08efa09d86b2 GIT binary patch literal 170 zcmV;b09F6Rs03(m5{D86D}e+6A_D^iZb%@bH@d1U*{QU=&jaqr#ROxQ-W~VMQJsr6 zM?L5bx+UK)H(A)is+`oa;Xf9JOy9h{X^Cq^^(Z}e+}yv5(Ad8Jk6qmJoWo7Zbhu#E zUwd>x!*#t{^eTFWSD{?z0|5yL00DsL&+WXO7YkepS4#^zM~pPVAU@i*8};sOR3;{q Ycb(f;f{9>%gWO3jgg~eqqg*Z({E`+>K>z>% literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP384ECDH_v6.key.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP384ECDH_v6.key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..6ad434aa03c69230c55934171e3da0fb69a0b5ab GIT binary patch literal 172 zcmV;d08{_Pss?Cq5{D81003d*V!>XQvd@_r<2-#(Jk)}Nf@})Z^Ou-EFIsgOK_3Kns4CXy( zkZe#Vj7X1xoedv@a+Phlb6ro30|5yL00Dr5ZV!~_n6-QEQ;4T2MS7%j<`_BC;Yn6g aQSB}L%{W+iXen5x&J$7B%~5rS4UD)@PD>g9 literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP384ECDSA_v4.key.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP384ECDSA_v4.key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..7268e0ab810c4fa74e54976e96aae5995e343562 GIT binary patch literal 166 zcmV;X09pUVqy%Vi5{DB7D}e+6A_D^iz1KNv8AeWyeQRQL_}9*%8(U4$9hR29nA-DW zd_GZ&oiDEN=dRy7A99x|=2u~=ay&uqxHT_$^!8gknnx8@0s61#j00Do0iZ494fJd>l`MA5B!rpVdjR34oSZ!Mx0k)&Ru*R4I U&AgZAoxmr~j`EeJxH!%mYhFZ8nE(I) literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP384ECDSA_v6.key.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP384ECDSA_v6.key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..665e65bbcdd6529c58f3b3c134736693a1f09ade GIT binary patch literal 168 zcmV;Z09XITrUqzm5{DB2003zPD}e+6A_D^iNXr`Zp?6RKmUNWAHeuuDFCp@rs|z{* zW2;XP<6UKTzp5v>P?%}^J_lu~=&84()*)5;Gq4RvD0h7m*R}@%h?AQM7Rm#3-9S-M z1+PV&Wnk`7;`;)aICO(Ct>;NC00DsTrB|JLLy&N4z|OMEFc&L{Xea1w_S1uKCB03!q=1OXGvbRm&Z5vAf$6Ti(W;9*0Wrl=npIBH-5 za+L*4+wi=CfxsBuhU)LdC3@!}giI{K=Sh|a6|!KD{F0PLK)=%fF)B3leJg~-@t4g` zK*$OUV;rJPf-mb4S^=`5tpZHCrW}@5FIhVcAAb^)iqP3THD3#9dNs+Ll^rDhJK?>& zQUd`B2>=2K0qGk`X^789fGjg;T_jpN^_uA*o`pH75P)uEQv~7=R@S$E4HFi8Oq?D6 bSNoQf>6IbyuNalWJCp_vznt6TN;nj)_nB*Mh)JYvX0sB3J_bg5P;D$IoaDXKq7DhVk$6wD_{i zfgjuFwgUkQ2>=2B!d_JLxDdrHqC5qI#G>aF9Jniw^|C4kZgh-=;K~zVT12!)+T#SP bF9FKuygg*_r=cGnf8Hd+MM}^ASQW7u6_aI# literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP521ECDSA_v4.key.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/nistP521ECDSA_v4.key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..de6515e820a945cba1cd59d7b753ab5a59aa97d9 GIT binary patch literal 221 zcmV<303!dzz#0T-a1w_T1uKCB03!q=1OP-sw=a5xL(tF@T-e&OV1N*Pspya1w_T0001u1uKCB03!q=1OfNsE(`#6f6&-p|GdCb@$8O-sk?&O z(^BUack*Tr?ZyB?FQPo&rcSjVF|qZ9jrmu_1+M6vIwTBu6?1vqP%n#4$Pyhl60pwDuVM6j`sy=ey3J$MG`l@yzZb*rX9xP|DXOh=>>TXnjyusFB Z1>$F?9_;t5|FgJv1LQOl7-0gEgKVUAWB~vG literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-28f2677523ed3043117ea46f27bf8b9b990c4e3a b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-28f2677523ed3043117ea46f27bf8b9b990c4e3a new file mode 100644 index 0000000000000000000000000000000000000000..7a5d881cce87640adc3cd1197a091abba62375ae GIT binary patch literal 3 KcmZ3($N&HW2>`AD literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-4fbc082c98d268e4495e09d40912053a9c08b896 b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-4fbc082c98d268e4495e09d40912053a9c08b896 new file mode 100644 index 00000000..94423c97 --- /dev/null +++ b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-4fbc082c98d268e4495e09d40912053a9c08b896 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-56fb7129479f381d7cfd4598b540d3b753730ffc b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-56fb7129479f381d7cfd4598b540d3b753730ffc new file mode 100644 index 00000000..307e2ad8 --- /dev/null +++ b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-56fb7129479f381d7cfd4598b540d3b753730ffc @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-6c04193b9d8991eec00fdef05735bfed376c0f6c b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-6c04193b9d8991eec00fdef05735bfed376c0f6c new file mode 100644 index 00000000..eb9f0fc5 --- /dev/null +++ b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-6c04193b9d8991eec00fdef05735bfed376c0f6c @@ -0,0 +1 @@ +:: \ No newline at end of file diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-8eb418bf4e4721c572e13bd11313a1d29de247a9 b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/parseSecretKeyPacket/crash-8eb418bf4e4721c572e13bd11313a1d29de247a9 new file mode 100644 index 0000000000000000000000000000000000000000..8d55b6be9f3644ed6d005fc374bac88404d29c4b GIT binary patch literal 17 UcmbQvDkUl=El^bOQ(vWCmxl9GgKnSfNBQy2f6rB%c-u0Uu}T1 zcf8pTJhDxyG|ldTFrlB@R0)Q^5;Y#hE$n+y3#CSA2)`gtp3s6DnR#PwS%=HoABQJv z^8N}YvkHQBUy+>b4zy<)JI0~`B*Lj7qMHp&3hN3$MZ_#PzD0S31N$cY`83Y>Srl0O z&bpl7&B8eg*KjsAoODwd#RD~T$*4=$Wj2+;?%dxKJsQ9~PB=?X?})O!lBO6PS}YAP z8X-8A7?CmJT8=t1nIQ>1Q~?A4yj}0o*D2y>68svG*v=SDH{a_$`bA)IzyjGWrPTs% zDc;^p?Ep3S72qTh2KaXjI+1vcL|O?3!bZYa?mC#^2lK2fd96&<&y7F32$;(5l{6jiT6G@M{==I81PN zHe`ATz0(OG*~;2N?$#Z8f6pKEKzZcv#hAV3#A-6UnV-^SYrf{@vHxwy)glYXE#N2u zBZVg@53)>Nj0oLtR#*N<=;%|BM31(-B*Lc2Lw8&`Jl*R|u43X9i{&VLSiPXwKQ zqEOtu(?ZZ$CJ`nr_^hmQ#DZBE8#$OYEjX02saeNl_a*K{+xBzTJ-Bnl&e>M)FN<{c zZXj|#Mg3K5aj@H^Oh0FA&mY3qtx_*vh7o`>((=9QRCnbao~L|Dvqq9uc&E-sMBO(0OI7q?H+wty`8_j{px;Jk-+ zu`vbKl$~rNSAC13^C~7H;TnKs*Qd%)R{Hj7@moF^9DWW{s3+b0mgtll2+e#p+Zab0 z+Vgd^2pv~czvYjq)hGMWyR01v%Q?abq#)_fmCgNz14A2e<(BVlRY}~8^N?aU*n#A@ zK4-RZXY7AGW#|sZ1HyC=v{?pKPX9ow%TrVq3T!6jr1hCq!Hl`Wlheojm6xO0v8W$x z&NDNvi>kcBK~2z4j{daE@f1}P$VyJQS3iC+r;auumAS&yW}06dhzX_H4=mW|PnXL{ zLHFv&=aIk_nXVvSLwY3Rg}yUm*$^Udu@~Th zB!IsX|E|`<0!D>4@&lw>n&{3r2sl8}5|k^~Di;WsX4Ib{HygeYjMdMwU^h1P87%NF zXiGu^Bt}}Id+BJ|q+K(C4^Tdov)mKIUb}UbSd{k2Na|ld*qT2G6UqNGh-QI(1OUMp zo(7~td79J_ADEgT0NV%Vumj)R0=|WXHMUqJ{#Y=>6i_ZBM9PUUFgFflWwp*mX3hX2 z+Ym-FIVSnBb+G5g=^jHz#j47muC7Sqh|@2_061_prmPn34nwuuzo%sPmGM(mhxpKWQX5xTU?>ViR3;2 z-Nxsu!R32&{g9wT7?v(l2B>t0EDHC0{}tG$S84q{lhj=x915k%;KTCQ+;_YtTIRYr literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/rsa4096_v4.key.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/rsa4096_v4.key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..9b56e3e905ecdce94a88057f01f354fca1a358b3 GIT binary patch literal 1819 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 L2~bi9=+(I$u(gHp literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/x25519Legacy_v4.key.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/x25519Legacy_v4.key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..582aed09c52822dedfd8efa6888b22561ae90a22 GIT binary patch literal 95 zcmV-l0HFWHT?A-w5{D8BD+U1s0hd()1pxsEKvwIAN&LCch~}uHFvcyC$)s;0LpXe~xSB&3hs!)s_M=Du2v=2Z hDFas+Mrj*&pg+nyhO4c(DXe%AbRxV9QWH{q3uoM-9?Ad! literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/x25519_v6.key.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/x25519_v6.key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..04cc139269d31ec10988fd4fc2c17b0527525ec2 GIT binary patch literal 77 zcmV-T0J8tZO9p6g5{DT8001E1NxM5BKYAYi(r)-1lTo4xy(XLUfvx>Y+Go+56u3kH ja4nUoxeTosX$dhCM_k}{NuqG`6%QO$R>FoxWoA83#jzib literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/x448_v4.key.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/x448_v4.key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..44f5c11a7a6abed520b232946210b9288792a227 GIT binary patch literal 123 zcmV->0EGX=c?4*15{DW^PPnAv`YtVxhClvB&jUiOP1;{AC&h?cYp$UAagQ5r`Lj{G z(CXBx2jHV0inAtL(ru<$%LUT_I9bRpVWiUnuYIxPLkKD@`gXhO!%#AEv)B6qZ^+mk d`K{rO--p4oS=Zf%&uGmH1!M>H{8Y%I9`xRIKu7=p literal 0 HcmV?d00001 diff --git a/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/x448_v6.key.pgp b/pgpainless-sop/src/test/resources/org/pgpainless/sop/fuzzing/SecretKeyPacketFuzzTestInputs/x448_v6.key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..e9d7d88cdba9f5a033ed5e03ba7716636c26d5bf GIT binary patch literal 125 zcmV-@0D}L;dj@E55{DW9001~Y=`gt>s4f(2SaO9hbK0nn>ODZ*mX|#)?|d|O&Ok_T z&KpXjl7|(FEju6738il2qhWC|Is|6`L_SlmL+fmd|1d<0jx^RaRJ>R*z-6nq^~Coh f{$D)Jynu3=dcn1Wu}Ih