【问题标题】:Differentiate between PGP subkey that is expired vs one that never expires - Java bouncycastle区分已过期的 PGP 子密钥与永不过期的 PGP 子密钥 - Java bouncycastle
【发布时间】:2016-11-18 22:15:02
【问题描述】:

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

【问题讨论】:

    标签: java bouncycastle openpgp


    【解决方案1】:

    过期的密钥将有一个非零的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)
    }
    

    【讨论】:

    • 谢谢@zeppelin。我正在对一个边缘案例进行单元测试,其中我今天创建了一个密钥(使用 GPG 工具)并尝试将到期日期设置为从现在起 100 年,但它没有让我这样做,它默认为今天作为到期日期,因此过期钥匙。所以在这种情况下 key.getValidSeconds() 为 0 并且密钥已过期。我知道这不是现实世界的用例。谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 2021-09-04
    • 2012-05-06
    • 2011-02-17
    • 1970-01-01
    • 2020-12-13
    相关资源
    最近更新 更多