Skip to content

Commit 32ecff8

Browse files
committed
Add test for parsing legacy ed25519 signatures with short MPIs
1 parent 303d59f commit 32ecff8

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

pg/src/test/java/org/bouncycastle/openpgp/test/PGPSignatureTest.java

+22-1
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,22 @@
1111
import java.util.Date;
1212
import java.util.Iterator;
1313

14-
import org.bouncycastle.bcpg.*;
14+
import org.bouncycastle.bcpg.ArmoredInputStream;
15+
import org.bouncycastle.bcpg.BCPGInputStream;
16+
import org.bouncycastle.bcpg.CompressionAlgorithmTags;
17+
import org.bouncycastle.bcpg.HashAlgorithmTags;
18+
import org.bouncycastle.bcpg.PublicKeyAlgorithmTags;
19+
import org.bouncycastle.bcpg.SignatureSubpacket;
20+
import org.bouncycastle.bcpg.SignatureSubpacketInputStream;
21+
import org.bouncycastle.bcpg.SignatureSubpacketTags;
22+
import org.bouncycastle.bcpg.SymmetricKeyAlgorithmTags;
1523
import org.bouncycastle.bcpg.sig.IntendedRecipientFingerprint;
1624
import org.bouncycastle.bcpg.sig.IssuerFingerprint;
1725
import org.bouncycastle.bcpg.sig.KeyFlags;
1826
import org.bouncycastle.bcpg.sig.NotationData;
1927
import org.bouncycastle.bcpg.sig.SignatureTarget;
2028
import org.bouncycastle.jce.provider.BouncyCastleProvider;
29+
import org.bouncycastle.math.ec.rfc8032.Ed25519;
2130
import org.bouncycastle.openpgp.PGPException;
2231
import org.bouncycastle.openpgp.PGPLiteralData;
2332
import org.bouncycastle.openpgp.PGPLiteralDataGenerator;
@@ -759,6 +768,7 @@ public void performTest()
759768
testUserAttributeEncoding();
760769
testExportNonExportableSignature();
761770
testRejectionOfIllegalSignatureType0xFF();
771+
testGetSignatureOfLegacyEd25519KeyWithShortMPIs();
762772
}
763773

764774
private void testUserAttributeEncoding()
@@ -1413,6 +1423,17 @@ private void testRejectionOfIllegalSignatureType0xFF()
14131423
}
14141424
}
14151425

1426+
private void testGetSignatureOfLegacyEd25519KeyWithShortMPIs()
1427+
throws PGPException, IOException
1428+
{
1429+
String ed25519KeyWithShortSignatureMPIs = "88740401160a00270502666a2d4009105ac5b83f1a5ad687162104229cfc85fe0ca2e3718b022c5ac5b83f1a5ad6870000a16b00f7754c1d14b068ae5e6816c376367569b1ae984587e8e5ec3cc54b811549a4920100ca2159e5965bf7d8655385449994aead14ccf05c3f33335b98d305c0f20ef50e";
1430+
ByteArrayInputStream bIn = new ByteArrayInputStream(Hex.decode(ed25519KeyWithShortSignatureMPIs));
1431+
BCPGInputStream pIn = new BCPGInputStream(bIn);
1432+
PGPSignature signature = new PGPSignature(pIn);
1433+
isEquals("Short MPIs in LegacyEd25519 signature MUST be properly parsed",
1434+
Ed25519.SIGNATURE_SIZE, signature.getSignature().length);
1435+
}
1436+
14161437
private PGPSignatureList readSignatures(String armored)
14171438
throws IOException
14181439
{

0 commit comments

Comments
 (0)