2016-11-18 1 views
0

Я использую библиотеку bouncycastle.openpgp, чтобы получить даты действительности ключа PGP. Можно предположить, что ключ PGP никогда не истекает, если key.getValidDays() == 0. Как отличить один раз действительный и теперь истекший ключ от никогда не истекающего?Дифференциация между подразделением PGP, срок действия которого истек, и тот, который никогда не истекает - Java bouncycastle

ответ

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 Tool) сегодня, и попытался установить дату истечения срока действия до 100 лет, но он не позволил мне сделать это, и он по умолчанию не был установлен как дата истечения срока действия и, следовательно, истек ключ. Таким образом, key.getValidSeconds() был равен 0, и ключ был истек. Я знаю, что это не реальный случай использования в мире. Спасибо за Ваш ответ. –

Смежные вопросы