From e3eb298ab7a138e9dad5e0c6df29c4e53ae67511 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Obernd=C3=B6rfer?= Date: Wed, 30 Aug 2017 16:09:53 +0200 Subject: [PATCH] Set keyExpirationTime for subkey binding signature --- src/key.js | 4 ++++ test/general/key.js | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/src/key.js b/src/key.js index b99fd6db..e30ee266 100644 --- a/src/key.js +++ b/src/key.js @@ -1247,6 +1247,10 @@ function wrapKeyObject(secretKeyPacket, secretSubkeyPacket, options) { subkeySignaturePacket.publicKeyAlgorithm = options.keyType; subkeySignaturePacket.hashAlgorithm = config.prefer_hash_algorithm; subkeySignaturePacket.keyFlags = [enums.keyFlags.encrypt_communication | enums.keyFlags.encrypt_storage]; + if (options.keyExpirationTime > 0) { + subkeySignaturePacket.keyExpirationTime = options.keyExpirationTime; + subkeySignaturePacket.keyNeverExpires = false; + } subkeySignaturePacket.sign(secretKeyPacket, dataToSign); packetlist.push(secretSubkeyPacket); diff --git a/test/general/key.js b/test/general/key.js index a180b6c0..da017a94 100644 --- a/test/general/key.js +++ b/test/general/key.js @@ -1335,6 +1335,12 @@ describe('Key', function() { var actual_delta = (new Date(expiration) - new Date()) / 1000; expect(Math.abs(actual_delta - expect_delta)).to.be.below(60); + var subKeyExpiration = key.subKeys[0].getExpirationTime(); + expect(subKeyExpiration).to.exist; + + var actual_subKeyDelta = (new Date(subKeyExpiration) - new Date()) / 1000; + expect(Math.abs(actual_subKeyDelta - expect_delta)).to.be.below(60); + done(); }).catch(done); });