区分过期的PGP子密钥和从不过期的PGP子密钥-Java bouncycastle

区分过期的PGP子密钥和从不过期的PGP子密钥-Java bouncycastle,java,bouncycastle,openpgp,Java,Bouncycastle,Openpgp,我正在使用bouncycastle.openpgp库获取PGP密钥的有效日期。如果key.getValidDays()=0,则可以假定PGP密钥永不过期。如何区分曾经有效且现在过期的密钥与从未过期的密钥 过期密钥将具有非零getValidDays,因为它们是相对于创建日期而不是当前日期指定的 getValidDays public int getValidDays() Returns: number of valid days from creation time - zero means n

我正在使用bouncycastle.openpgp库获取PGP密钥的有效日期。如果key.getValidDays()=0,则可以假定PGP密钥永不过期。如何区分曾经有效且现在过期的密钥与从未过期的密钥

过期密钥将具有非零getValidDays,因为它们是相对于创建日期而不是当前日期指定的

getValidDays

public int getValidDays()
Returns:
number of valid days from creation time - zero means no expiry.
也就是说,您应该能够区分永不过期和有效/过期的密钥,代码如下:

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)
}

谢谢齐柏林飞艇。我在对一个edge案例进行单元测试,我今天创建了一个密钥(使用GPG工具),并试图将到期日期设置为100年后,但它不允许我这么做,它默认到今天作为到期日期,因此密钥过期。因此,在本例中,key.getValidSeconds()为0,并且密钥已过期。我知道这不是真实的用例。谢谢你的回答。