1
0
Fork 0
mirror of https://github.com/pgpainless/pgpainless.git synced 2025-09-09 10:19:39 +02:00

More fuzzing tests and vectors

This commit is contained in:
Paul Schaub 2025-07-12 11:29:07 +02:00
parent 1560980c7e
commit 42e6bb483f
Signed by: vanitasvitae
GPG key ID: 62BEE9264BF17311
70 changed files with 113 additions and 3 deletions

View file

@ -18,7 +18,9 @@ public class AsciiArmorFuzzTest {
private final SOP sop = new SOPImpl(); private final SOP sop = new SOPImpl();
@FuzzTest() @FuzzTest(
maxDuration = "60s"
)
public void armorAndDearmorData(FuzzedDataProvider data) throws IOException { public void armorAndDearmorData(FuzzedDataProvider data) throws IOException {
byte[] bytes = data.consumeBytes(1024); byte[] bytes = data.consumeBytes(1024);

View file

@ -1,3 +1,7 @@
// SPDX-FileCopyrightText: 2025 Paul Schaub <vanitasvitae@fsfe.org>
//
// SPDX-License-Identifier: Apache-2.0
package org.pgpainless.sop.fuzzing; package org.pgpainless.sop.fuzzing;
import com.code_intelligence.jazzer.api.FuzzedDataProvider; import com.code_intelligence.jazzer.api.FuzzedDataProvider;
@ -67,7 +71,9 @@ public class EncryptedMessageFuzzingTest {
return keys; return keys;
} }
@FuzzTest @FuzzTest(
maxDuration = "60s"
)
public void decryptFuzzedMessage(FuzzedDataProvider provider) { public void decryptFuzzedMessage(FuzzedDataProvider provider) {
byte[] ciphertext = provider.consumeBytes(8192); byte[] ciphertext = provider.consumeBytes(8192);
if (ciphertext.length == 0) { if (ciphertext.length == 0) {

View file

@ -0,0 +1,44 @@
// SPDX-FileCopyrightText: 2025 Paul Schaub <vanitasvitae@fsfe.org>
//
// 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
}
}
}

View file

@ -0,0 +1,44 @@
// SPDX-FileCopyrightText: 2025 Paul Schaub <vanitasvitae@fsfe.org>
//
// 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
}
}
}

View file

@ -270,7 +270,7 @@ public class SignatureFuzzTest {
"-----END PGP PUBLIC KEY BLOCK-----\n"; "-----END PGP PUBLIC KEY BLOCK-----\n";
@FuzzTest( @FuzzTest(
//maxDuration = "60s" maxDuration = "60s"
) )
public void verifyFuzzedSig(FuzzedDataProvider provider) throws IOException { public void verifyFuzzedSig(FuzzedDataProvider provider) throws IOException {
byte[] sig = provider.consumeBytes(1024); byte[] sig = provider.consumeBytes(1024);

View file

@ -0,0 +1 @@
ÃÑóæqP\Ù±!J]÷µ,Ê¥‡ ¶Ò@:¨0.sd³±Ÿ¢å$X“<58>úÝ, ·bc«v7îG‡

View file

@ -0,0 +1 @@
Ζ&hpΥΗΊ›Σπ"µϋ^<5E><11>Έh­κεeh„(ΐύ

View file

@ -0,0 +1 @@
фVhp*├Hн=$И■;а*вnх(У╧²cчЩy▐╨╝НЭ4 ,▒sU;хТь эй#!┘прA╩gДjL< ▐B▌7?

View file

@ -0,0 +1,2 @@
ÆRhp*†HÎ=-ä $öí5?» <0C>¡¥xÄH4—ÅÌt?“Ïè’%<25>[sTpXý
8ãG:I)I/a¥¦"‡ÌyA9

View file

@ -0,0 +1 @@
<EFBFBD><03>vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

View file

@ -0,0 +1,2 @@
Æ8hp
+—U@Vë‡Iü¹Ðˆæ¨£1]ŠýÀêøÙ<E280B9>¸_l‰4J 

View file

@ -0,0 +1 @@
Æ&hpó^ñöoƒÈëuGɤo"C8|±¸šC‡Ë<Qö£H

View file

@ -0,0 +1 @@
Æ>hpEN¸¤âú.-<2D>†?þFÏB­MÚ_-'ň[k® ùq<C3B9>nù³Q»ÐêÔªà£г&[Òm¦YËÓ

View file

@ -0,0 +1 @@
<EFBFBD>