Skip to content

Commit 119319f

Browse files
committed
Merge branch 'fixHashedSubpacketsNull' of https://github.com/pgpainless/bc-java into pgpainless-fixHashedSubpacketsNull
2 parents dc12e70 + 257ac6e commit 119319f

3 files changed

Lines changed: 64 additions & 2 deletions

File tree

pg/src/main/java/org/bouncycastle/openpgp/PGPSignature.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -907,7 +907,10 @@ public void encode(
907907
throws IOException
908908
{
909909
// Exportable signatures MUST NOT be exported if forTransfer==true
910-
if (forTransfer && (!getHashedSubPackets().isExportable() || !getUnhashedSubPackets().isExportable()))
910+
if (forTransfer &&
911+
((getHashedSubPackets() != null && !getHashedSubPackets().isExportable()) ||
912+
(getUnhashedSubPackets() != null && !getUnhashedSubPackets().isExportable()))
913+
)
911914
{
912915
return;
913916
}

pg/src/main/java/org/bouncycastle/openpgp/api/OpenPGPCertificate.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1014,7 +1014,7 @@ public int compare(OpenPGPSignatureChain o1, OpenPGPSignatureChain o2)
10141014
{
10151015
OpenPGPSignatureChain binding = it.next();
10161016
PGPSignature sig = binding.getSignature().getSignature();
1017-
if (sig.getHashedSubPackets().isPrimaryUserID())
1017+
if (sig.getHashedSubPackets() != null && sig.getHashedSubPackets().isPrimaryUserID())
10181018
{
10191019
return binding;
10201020
}
@@ -1829,6 +1829,11 @@ private void verifyEmbeddedPrimaryKeyBinding(PGPContentVerifierBuilderProvider c
18291829
OpenPGPPolicy policy, Date signatureCreationTime)
18301830
throws PGPSignatureException
18311831
{
1832+
if (signature.getHashedSubPackets() == null)
1833+
{
1834+
return;
1835+
}
1836+
18321837
int keyFlags = signature.getHashedSubPackets().getKeyFlags();
18331838
if ((keyFlags & KeyFlags.SIGN_DATA) != KeyFlags.SIGN_DATA)
18341839
{
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package org.bouncycastle.openpgp.api.test;
2+
3+
import org.bouncycastle.openpgp.PGPException;
4+
import org.bouncycastle.openpgp.api.OpenPGPApi;
5+
import org.bouncycastle.openpgp.api.OpenPGPCertificate;
6+
import org.bouncycastle.openpgp.api.OpenPGPKey;
7+
8+
import java.io.IOException;
9+
10+
public class OpenPGPV3KeyTest
11+
extends APITest
12+
{
13+
14+
private static final String V3Key = "-----BEGIN PGP PRIVATE KEY BLOCK-----\n" +
15+
"\n" +
16+
"lQHYA2JqgDIAAAEEAOYdcIKFQ5ZWBx0D5DKwMMNFcIhFyqmfDJ0v23ehMxOkXN/o\n" +
17+
"HO/43+dq6ZqQn0gNw53Tp9no+EmcCYNrZuN0C4Zu8XHSyY6UB+CqzNkz/CwmV10E\n" +
18+
"dRDipcG1O6scJyy2MWpuOG67til+o+wOLgEkkVkSW8Bl2oqtzVVP4swtKLRZAAUR\n" +
19+
"AAP+JBiyRqt+DYr8GKE85NBX9nlS6DMaxUYgGKgibR5OSVsJjIjNUtG0sNmODjTN\n" +
20+
"sPMZqlNln6wS3l7APMWNoStNGc9JG9Puz3eR2W69lPDzhuxuxrHIUBO+3UlEQB/p\n" +
21+
"N3NPhnwCjh3OWHSMM6rzsX5ExUv0Z4FypnzvMG1x6GRJDVECAO6PyY8NDHsktMVN\n" +
22+
"HAdgC61iIOz+GbLhNGeikuB+DQpSoyckAF0N5reBxRbyjzNZQ7aVvWpxigUp5OdK\n" +
23+
"HMK7YcwTAgD275bcqhd+oWHDhyesi6RVswlqGfix48qahf9wOmDkc0nzp8evy/4V\n" +
24+
"4Qu5zUJGVzi4aEIbFaAnc5lMD9/ydTNjAf485vh4MDFRd3tPvx9mPrHQgaArCBX8\n" +
25+
"9oImPDk0oaKixwSIFzXeg1qZQeLiwv26Fs8gawWsLVZpR4+zZc1nhZlGnrQpSm9o\n" +
26+
"biBRLiBTbWl0aCA8MTIzNDUuNjc4OUBjb21wdXNlcnZlLmNvbT6JAJUDBRBiaoAy\n" +
27+
"VU/izC0otFkBAYIsBACykJ7s82vqCIKewgLpFuqoVGjlfwn9z+G1oa7vr/GxA/mF\n" +
28+
"Dr4E8rZ1ytUFMUCfzy52FfOtDQUVUeOpAraWQ4JfjXkHuDuZcW2VRh2ctT/hVHG7\n" +
29+
"1GgOWUBH3EeXASSnFjvUVE39vEjEsidaMxZtMj5jmtieTMB8pSG1QJXPXGoNyQ==\n" +
30+
"=p7Lr\n" +
31+
"-----END PGP PRIVATE KEY BLOCK-----\n";
32+
33+
public static void main(String[] args)
34+
{
35+
runTest(new OpenPGPV3KeyTest());
36+
}
37+
38+
@Override
39+
public String getName()
40+
{
41+
return "OpenPGPV3KeyTest";
42+
}
43+
44+
@Override
45+
protected void performTestWith(OpenPGPApi api)
46+
throws PGPException, IOException
47+
{
48+
OpenPGPKey key = api.readKeyOrCertificate().parseKey(V3Key);
49+
isNotNull(key.getEncoded());
50+
51+
OpenPGPCertificate certificate = key.toCertificate();
52+
isNotNull(certificate.getEncoded());
53+
}
54+
}

0 commit comments

Comments
 (0)