1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
https://bugs.gentoo.org/970711
https://gitlab.com/sequoia-pgp/sequoia-chameleon-gnupg/-/commit/90e370fef788980e49aa807ac28531264bb9f404
From 90e370fef788980e49aa807ac28531264bb9f404 Mon Sep 17 00:00:00 2001
From: Malte Meiboom <malte@sequoia-pgp.org>
Date: Fri, 20 Feb 2026 13:50:40 +0100
Subject: [PATCH] Fix missing time corrections
- `gpg-sq` can set a fake system time via `--faked-system-time`.
- Fixed some occurrences where `None` was used as time instead of the
passed fake time.
- fixes: #156
---
src/decrypt.rs | 2 +-
src/generate_key.rs | 2 +-
src/gpg.rs | 2 +-
tests/gpg/decrypt.rs | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/decrypt.rs b/src/decrypt.rs
index 2749532..d722389 100644
--- a/src/decrypt.rs
+++ b/src/decrypt.rs
@@ -715,7 +715,7 @@ impl<'a, 'store> DHelper<'a, 'store> {
.filter_map(|cert| cert.to_cert().ok().cloned())
{
if let Some(key) = cert.keys()
- .with_policy(&self.config.de_vs_producer, None)
+ .with_policy(&self.config.de_vs_producer, self.config.now())
.key_handle(recipient.clone()).next()
{
compliant = compliant &&
diff --git a/src/generate_key.rs b/src/generate_key.rs
index 85e41b4..5dd42f9 100644
--- a/src/generate_key.rs
+++ b/src/generate_key.rs
@@ -280,7 +280,7 @@ async fn real_cmd_quick_add_key(config: &mut crate::Config<'_>, args: &[String])
all_expired_or_revoked: false,
})?;
- let vcert = cert.with_policy(config.policy(), None)?;
+ let vcert = cert.with_policy(config.policy(), config.now())?;
let mut primary_signer =
config.get_signer(&vcert, cert.primary_key().role_as_unspecified()).await?;
diff --git a/src/gpg.rs b/src/gpg.rs
index 81d5353..b4e4d38 100644
--- a/src/gpg.rs
+++ b/src/gpg.rs
@@ -721,7 +721,7 @@ impl<'store> Config<'store> {
all_expired_or_revoked: false,
})?;
- if let Ok(vcert) = cert.with_policy(self.policy(), None) {
+ if let Ok(vcert) = cert.with_policy(self.policy(), self.now()) {
for sk in vcert.keys().key_flags(&flags).alive()
.revoked(false)
{
diff --git a/tests/gpg/decrypt.rs b/tests/gpg/decrypt.rs
index 3fefe95..a34f693 100644
--- a/tests/gpg/decrypt.rs
+++ b/tests/gpg/decrypt.rs
@@ -489,7 +489,7 @@ fn encrypt_for(recipient_certs: &[&Cert]) -> Result<Vec<u8>> {
// Make sure we add at least one subkey from every
// certificate.
let mut found_one = false;
- for key in cert.keys().with_policy(p, None)
+ for key in cert.keys().with_policy(p, Experiment::now())
.supported().alive().revoked(false).for_transport_encryption()
{
recipients.push(key);
--
GitLab
|