From 90cdac4117700a31df12576206f11ef725c0b325 Mon Sep 17 00:00:00 2001 From: link2xt Date: Wed, 7 Oct 2026 16:26:26 +0000 Subject: [PATCH] test_select_only_expired_subkey Test key is generated with: ``` #!/bin/sh set -e export GNUPGHOME="$PWD/gnupghome" rm -fr "$GNUPGHOME" mkdir -p "$GNUPGHOME" chmod 700 "$GNUPGHOME" GPG="gpg --batch --quiet --faked-system-time 20070924T154812" USERID='Alice ' $GPG --passphrase '' --quick-generate-key "$USERID" ed25519 default never FINGERPRINT="$($GPG --list-secret-keys --with-colons | awk -F: '$1 == "fpr" { print $10 }')" $GPG --passphrase '' --quick-add-key "$FINGERPRINT" cv25519 encr 1y $GPG --armor --export "$FINGERPRINT" > alice.tpk.asc ``` --- src/pgp/pgp_tests.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/pgp/pgp_tests.rs b/src/pgp/pgp_tests.rs index 57e7a18b5..2940f5a1a 100644 --- a/src/pgp/pgp_tests.rs +++ b/src/pgp/pgp_tests.rs @@ -505,3 +505,28 @@ FFoiBQJG99w8AhsMAAoJECcqAms0FFoirSMA/0gVP98sPFga+UhQ3uJxJw5bO2Rs expected_expiring_fingerprint ); } + +/// Tests that key selection fails if there is only an expired subkey. +#[test] +fn test_select_only_expired_subkey() { + let alice_tpk_asc = " + -----BEGIN PGP PUBLIC KEY BLOCK----- + +mDMERvfcPBYJKwYBBAHaRw8BAQdAUz6AZXIRE8T04Vh8RReFiP3tEV8UfSs2EiYs +8b8i4ce0GUFsaWNlIDxhbGljZUBleGFtcGxlLm9yZz6IkAQTFgoAOBYhBNRG3w/A +qWyPitBaqkGLyqDx3CaUBQJG99w8AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA +AAoJEEGLyqDx3CaUMjIA/Rq9/iORLP360s6EsIDe9qSmlmSCggtivafH+uVBWa0X +AP0Wb+kailDwISq2O9Ef/jceZw7ozyzDLeDskKpCYiL3A7g4BEb33DwSCisGAQQB +l1UBBQEBB0BXhbrks9iskW1GfT3B022W3KhJCgz8gw81z9lAWv7OZgMBCAeIfgQY +FgoAJhYhBNRG3w/AqWyPitBaqkGLyqDx3CaUBQJG99w8AhsMBQkB4TOAAAoJEEGL +yqDx3CaU6/YA/jaYJsZMXvu5grrMq1wq3Z/yzGXd15zeWp+alY/6UYxoAQCmSrBC +SOtE3ODLZN9tC3F7k1N9clme1cHXyUiH3EliBQ== +=zWPq +-----END PGP PUBLIC KEY BLOCK----- +"; + + let alice_tpk = SignedPublicKey::from_asc(alice_tpk_asc).unwrap(); + let now = pgp::types::Timestamp::now(); + + assert_eq!(select_pk_for_encryption(now.as_secs(), &alice_tpk), None); +}