1
0
Fork 0
mirror of https://github.com/pgpainless/pgpainless.git synced 2025-12-07 21:01:16 +01:00

Support version 3 signature packets

This commit is contained in:
Bastien JANSEN 2023-02-08 09:16:53 +01:00 committed by Paul Schaub
parent 6c2331d4e6
commit 30771f470a
3 changed files with 75 additions and 3 deletions

View file

@ -158,8 +158,10 @@ public abstract class SignatureValidator {
@Override
public void verify(PGPSignature signature) throws SignatureValidationException {
signatureIsNotMalformed(signingKey).verify(signature);
signatureDoesNotHaveCriticalUnknownNotations(policy.getNotationRegistry()).verify(signature);
signatureDoesNotHaveCriticalUnknownSubpackets().verify(signature);
if (signature.getVersion() >= 4) {
signatureDoesNotHaveCriticalUnknownNotations(policy.getNotationRegistry()).verify(signature);
signatureDoesNotHaveCriticalUnknownSubpackets().verify(signature);
}
signatureUsesAcceptableHashAlgorithm(policy).verify(signature);
signatureUsesAcceptablePublicKeyAlgorithm(policy, signingKey).verify(signature);
}
@ -373,7 +375,9 @@ public abstract class SignatureValidator {
return new SignatureValidator() {
@Override
public void verify(PGPSignature signature) throws SignatureValidationException {
signatureHasHashedCreationTime().verify(signature);
if (signature.getVersion() >= 4) {
signatureHasHashedCreationTime().verify(signature);
}
signatureDoesNotPredateSigningKey(creator).verify(signature);
if (signature.getSignatureType() != SignatureType.PRIMARYKEY_BINDING.getCode()) {
signatureDoesNotPredateSigningKeyBindingDate(creator).verify(signature);

View file

@ -141,6 +141,9 @@ public final class SignatureSubpacketsUtil {
* @return signature creation time subpacket
*/
public static @Nullable SignatureCreationTime getSignatureCreationTime(PGPSignature signature) {
if (signature.getVersion() == 3) {
return new SignatureCreationTime(false, signature.getCreationTime());
}
return hashed(signature, SignatureSubpacket.signatureCreationTime);
}