mirror of
https://github.com/pgpainless/pgpainless.git
synced 2025-12-16 17:21:08 +01:00
Fix OpenPgpMetadata.isSigned() returning false on signed message due to missing verification cert
This commit is contained in:
parent
dd77d6be74
commit
9e16fc37d7
3 changed files with 92 additions and 2 deletions
|
|
@ -56,6 +56,7 @@ import org.pgpainless.algorithm.SymmetricKeyAlgorithm;
|
|||
import org.pgpainless.exception.MessageNotIntegrityProtectedException;
|
||||
import org.pgpainless.exception.MissingDecryptionMethodException;
|
||||
import org.pgpainless.exception.MissingLiteralDataException;
|
||||
import org.pgpainless.exception.SignatureValidationException;
|
||||
import org.pgpainless.exception.UnacceptableAlgorithmException;
|
||||
import org.pgpainless.exception.WrongConsumingMethodException;
|
||||
import org.pgpainless.implementation.ImplementationFactory;
|
||||
|
|
@ -107,6 +108,8 @@ public final class DecryptionStreamFactory {
|
|||
long issuerKeyId = SignatureUtils.determineIssuerKeyId(signature);
|
||||
PGPPublicKeyRing signingKeyRing = findSignatureVerificationKeyRing(issuerKeyId);
|
||||
if (signingKeyRing == null) {
|
||||
SignatureValidationException ex = new SignatureValidationException("Missing verification certificate " + Long.toHexString(issuerKeyId));
|
||||
resultBuilder.addInvalidDetachedSignature(new SignatureVerification(signature, null), ex);
|
||||
continue;
|
||||
}
|
||||
PGPPublicKey signingKey = signingKeyRing.getPublicKey(issuerKeyId);
|
||||
|
|
@ -497,7 +500,8 @@ public final class DecryptionStreamFactory {
|
|||
// Find public key
|
||||
PGPPublicKeyRing verificationKeyRing = findSignatureVerificationKeyRing(keyId);
|
||||
if (verificationKeyRing == null) {
|
||||
LOGGER.debug("Missing verification key from {}", Long.toHexString(keyId));
|
||||
SignatureValidationException ex = new SignatureValidationException("Missing verification certificate " + Long.toHexString(keyId));
|
||||
resultBuilder.addInvalidInbandSignature(new SignatureVerification(null, null), ex);
|
||||
return;
|
||||
}
|
||||
PGPPublicKey verificationKey = verificationKeyRing.getPublicKey(keyId);
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public class SignatureVerification {
|
|||
* @param signature PGPSignature object
|
||||
* @param signingKey identifier of the signing key
|
||||
*/
|
||||
public SignatureVerification(PGPSignature signature, @Nullable SubkeyIdentifier signingKey) {
|
||||
public SignatureVerification(@Nullable PGPSignature signature, @Nullable SubkeyIdentifier signingKey) {
|
||||
this.signature = signature;
|
||||
this.signingKey = signingKey;
|
||||
}
|
||||
|
|
@ -48,6 +48,7 @@ public class SignatureVerification {
|
|||
*
|
||||
* @return signature
|
||||
*/
|
||||
@Nullable
|
||||
public PGPSignature getSignature() {
|
||||
return signature;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue