1
0
Fork 0
mirror of https://github.com/pgpainless/pgpainless.git synced 2024-12-03 17:52:07 +01:00

Move getKeyLifetimeInSeconds to SignatureSubpacketsUtil and make public

This commit is contained in:
Paul Schaub 2021-11-28 13:09:10 +01:00
parent b09858e186
commit b874aee6bb
Signed by: vanitasvitae
GPG key ID: 62BEE9264BF17311
2 changed files with 21 additions and 19 deletions

View file

@ -92,28 +92,10 @@ public final class SignatureSubpacketGeneratorUtil {
@Nonnull Date creationDate, @Nonnull Date creationDate,
PGPSignatureSubpacketGenerator subpacketGenerator) { PGPSignatureSubpacketGenerator subpacketGenerator) {
removeAllPacketsOfType(SignatureSubpacketTags.KEY_EXPIRE_TIME, subpacketGenerator); removeAllPacketsOfType(SignatureSubpacketTags.KEY_EXPIRE_TIME, subpacketGenerator);
long secondsToExpire = getKeyLifetimeInSeconds(expirationDate, creationDate); long secondsToExpire = SignatureSubpacketsUtil.getKeyLifetimeInSeconds(expirationDate, creationDate);
subpacketGenerator.setKeyExpirationTime(true, secondsToExpire); subpacketGenerator.setKeyExpirationTime(true, secondsToExpire);
} }
/**
* Calculate the duration in seconds until the key expires after creation.
*
* @param expirationDate new expiration date
* @param creationTime key creation time
* @return life time of the key in seconds
*/
private static long getKeyLifetimeInSeconds(Date expirationDate, @Nonnull Date creationTime) {
long secondsToExpire = 0; // 0 means "no expiration"
if (expirationDate != null) {
if (creationTime.after(expirationDate)) {
throw new IllegalArgumentException("Key MUST NOT expire before being created. (creation: " + creationTime + ", expiration: " + expirationDate + ")");
}
secondsToExpire = (expirationDate.getTime() - creationTime.getTime()) / 1000;
}
return secondsToExpire;
}
/** /**
* Return true, if the subpacket generator has a {@link KeyFlags} subpacket which carries the given key flag. * Return true, if the subpacket generator has a {@link KeyFlags} subpacket which carries the given key flag.
* Returns false, if no {@link KeyFlags} subpacket is present. * Returns false, if no {@link KeyFlags} subpacket is present.

View file

@ -11,6 +11,7 @@ import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import org.bouncycastle.bcpg.sig.Exportable; import org.bouncycastle.bcpg.sig.Exportable;
@ -204,6 +205,25 @@ public final class SignatureSubpacketsUtil {
return SignatureUtils.datePlusSeconds(signingKey.getCreationTime(), subpacket.getTime()); return SignatureUtils.datePlusSeconds(signingKey.getCreationTime(), subpacket.getTime());
} }
/**
* Calculate the duration in seconds until the key expires after creation.
*
* @param expirationDate new expiration date
* @param creationDate key creation time
* @return life time of the key in seconds
*/
public static long getKeyLifetimeInSeconds(@Nullable Date expirationDate, @Nonnull Date creationDate) {
long secondsToExpire = 0; // 0 means "no expiration"
if (expirationDate != null) {
if (creationDate.after(expirationDate)) {
throw new IllegalArgumentException("Key MUST NOT expire before being created. " +
"(creation: " + creationDate + ", expiration: " + expirationDate + ")");
}
secondsToExpire = (expirationDate.getTime() - creationDate.getTime()) / 1000;
}
return secondsToExpire;
}
/** /**
* Return the revocable subpacket of this signature. * Return the revocable subpacket of this signature.
* We only look for it in the hashed area of the signature. * We only look for it in the hashed area of the signature.