Skip to content

Commit 6f6fe18

Browse files
committed
Fix NPE when encoding signature without hashed area
1 parent 126ac9e commit 6f6fe18

2 files changed

Lines changed: 10 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
@@ -1015,7 +1015,7 @@ public int compare(OpenPGPSignatureChain o1, OpenPGPSignatureChain o2)
10151015
{
10161016
OpenPGPSignatureChain binding = it.next();
10171017
PGPSignature sig = binding.getSignature().getSignature();
1018-
if (sig.getHashedSubPackets().isPrimaryUserID())
1018+
if (sig.getHashedSubPackets() != null && sig.getHashedSubPackets().isPrimaryUserID())
10191019
{
10201020
return binding;
10211021
}
@@ -1830,6 +1830,11 @@ private void verifyEmbeddedPrimaryKeyBinding(PGPContentVerifierBuilderProvider c
18301830
OpenPGPPolicy policy, Date signatureCreationTime)
18311831
throws PGPSignatureException
18321832
{
1833+
if (signature.getHashedSubPackets() == null)
1834+
{
1835+
return;
1836+
}
1837+
18331838
int keyFlags = signature.getHashedSubPackets().getKeyFlags();
18341839
if ((keyFlags & KeyFlags.SIGN_DATA) != KeyFlags.SIGN_DATA)
18351840
{

0 commit comments

Comments
 (0)