当我们使用 OpenPGP 创建新密钥时,我们如何设置 'expiration time'?

How do we set 'expiration time', when we create new key with OpenPGP?

在 OpenPGP.js 中我们有一个函数 Key.prototype.getExpirationTime,它 "returns the expiration time of the primary key or null if key does not expire": https://github.com/openpgpjs/openpgpjs/blob/master/src/key.js#L472

但是当我们创建新密钥时,我们如何设置这个过期时间呢? 我在这个函数中没有看到 https://github.com/openpgpjs/openpgpjs/blob/master/src/key.js#L938 or in documentation for it https://openpgpjs.org/openpgpjs/doc/module-key.html 参数 'expiration time'

OpenPGP.js this not implemented yet, see : https://github.com/openpgpjs/openpgpjs/issues/511#issuecomment-272376745

目前我看到的最简单的解决方案是使用 kbpgp.js for key generation, like this: https://ageyev.github.io/crypto/openpgp/ 它需要比 OpenPGP.js 更多的时间来生成密钥,但是有效。

简单如:

let expires = 60 * 60 * 24 * 30 // seconds to expire keys {Number}
let PGPOptions = {
    userIds: [{
        name: 'username',
        email: 'awesome@mail.com'
    }],
    numBits: 2048,                // RSA
    passphrase: 'good passphrase' // protects the private key
    keyExpirationTime: expires    // 30 days
}
// create keys (pub/priv)
openpgp.generateKey(PGPOptions).then(key => {
    let privkey = key.privateKeyArmored,
        pubkey = key.publicKeyArmored
})