2016-11-18 95 views

回答

1

过期密钥将具有非零值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) 
} 
+0

Thanks @zeppelin。我是单位测试一个边缘案例,我今天创建了一个密钥(使用GPG工具),并尝试将到期日期设置为从现在开始的100年,但它没有让我这样做,它默认今天为过期日期,因此已过期钥匙。所以在这种情况下,key.getValidSeconds()是0,密钥已过期。我知道这不是现实世界的用例。感谢您的回答。 –