From 0d3fb446a85d4f1735b7117cc77fdbe694da3c3f Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 2 Feb 2024 16:34:25 +0100 Subject: [PATCH] Add tests for keys with malformed sig subpackets --- .../generation/MalformedKeyGenerationTest.kt | 54 ++++++++++++++++--- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/pgpainless-core/src/test/kotlin/org/pgpainless/key/generation/MalformedKeyGenerationTest.kt b/pgpainless-core/src/test/kotlin/org/pgpainless/key/generation/MalformedKeyGenerationTest.kt index c3c16a7b..64efb704 100644 --- a/pgpainless-core/src/test/kotlin/org/pgpainless/key/generation/MalformedKeyGenerationTest.kt +++ b/pgpainless-core/src/test/kotlin/org/pgpainless/key/generation/MalformedKeyGenerationTest.kt @@ -4,7 +4,9 @@ package org.pgpainless.key.generation +import org.bouncycastle.bcpg.sig.Exportable import org.bouncycastle.bcpg.sig.PrimaryUserID +import org.bouncycastle.bcpg.sig.Revocable import org.junit.jupiter.api.Test import org.pgpainless.PGPainless import org.pgpainless.key.generation.type.KeyType @@ -17,17 +19,55 @@ class MalformedKeyGenerationTest { @Test fun malformedPrimaryUserIdSubpacket() { val userId = "Alice " - val key = GenerateOpenPgpKey(Policy.getInstance()) - .buildV4Key(KeyType.EDDSA(EdDSACurve._Ed25519)) - .addUserId(userId, - SelfSignatureSubpackets.applyHashed { - setPrimaryUserId(PrimaryUserID(false, false, byteArrayOf(0x02))) - }) - .build() + val key = + GenerateOpenPgpKey(Policy.getInstance()) + .buildV4Key(KeyType.EDDSA(EdDSACurve._Ed25519)) + .addUserId( + userId, + SelfSignatureSubpackets.applyHashed { + setPrimaryUserId(PrimaryUserID(false, false, byteArrayOf(0x02))) + }) + .build() println(PGPainless.asciiArmor(key)) PGPainless.readKeyRing().secretKeyRing(key.encoded)!! // TODO: Check interpretation of faulty PrimaryUserID packet } + + @Test + fun malformedExportableSubpacket() { + val key = + GenerateOpenPgpKey(Policy.getInstance()) + .buildV4Key(KeyType.EDDSA(EdDSACurve._Ed25519)) + .addUserId( + "Alice ", + SelfSignatureSubpackets.applyHashed { + setExportable(Exportable(false, false, byteArrayOf(0x03))) + }) + .build() + + println(PGPainless.asciiArmor(key)) + + PGPainless.readKeyRing().secretKeyRing(key.encoded)!! + // TODO: Check interpretation of faulty packet + } + + @Test + fun malformedRevocableSubpacket() { + val key = + GenerateOpenPgpKey(Policy.getInstance()) + .buildV4Key(KeyType.EDDSA(EdDSACurve._Ed25519)) + .addUserId( + "Alice ", + SelfSignatureSubpackets.applyHashed { + setRevocable(Revocable(false, false, byteArrayOf(0x04))) + }) + .build() + + println(PGPainless.asciiArmor(key)) + + PGPainless.readKeyRing().secretKeyRing(key.encoded)!! + // TODO: Check interpretation of faulty packet + } }