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,密鑰已過期。我知道這不是現實世界的用例。感謝您的回答。 –