0
我正在使用bouncycastle.openpgp库来获取PGP密钥的有效日期。如果key.getValidDays()== 0,可以认为PGP密钥永不过期。如何区分一次有效的和现在过期的密钥与永不过期的密钥?区分已过期的PGP子密钥与永不过期的PGP子密钥 - Java bouncycastle
我正在使用bouncycastle.openpgp库来获取PGP密钥的有效日期。如果key.getValidDays()== 0,可以认为PGP密钥永不过期。如何区分一次有效的和现在过期的密钥与永不过期的密钥?区分已过期的PGP子密钥与永不过期的PGP子密钥 - Java bouncycastle
过期密钥将具有非零值getValidDays,因为它们是相对于创建日期而不是当前值指定的。
getValidDays
public int getValidDays()
Returns:
number of valid days from creation time - zero means no expiry.
I.e.你应该能够区分永不过期的和有效/过期的密钥,代码如下:
if(key.getValidSeconds() == 0) {
//Never Expiring Key
} else if(Instant.now().isAfter(key.getCreationTime().toInstant().plusSeconds(key.getValidSeconds()))) {
//Expired Key
} else {
//Valid Key (has not expired yet)
}
Thanks @zeppelin。我是单位测试一个边缘案例,我今天创建了一个密钥(使用GPG工具),并尝试将到期日期设置为从现在开始的100年,但它没有让我这样做,它默认今天为过期日期,因此已过期钥匙。所以在这种情况下,key.getValidSeconds()是0,密钥已过期。我知道这不是现实世界的用例。感谢您的回答。 –