summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2023-10-02 12:14:57 +0200
committerJustus Winter <justus@sequoia-pgp.org>2023-10-02 12:14:57 +0200
commitf12bc77a76631579d1e102c5882b1964745c3d60 (patch)
tree9c3658b175b8c1f394c854c3518454ec51667c71
parentf9b4a6bde0edef6557233b0e7d3a80bb26e3085a (diff)
openpgp: Test that v3 revocation signatures are honored.
- Fixes #954.
-rw-r--r--openpgp/src/cert.rs21
-rw-r--r--openpgp/tests/data/keys/v4-revoked-by-v3.pgp28
2 files changed, 49 insertions, 0 deletions
diff --git a/openpgp/src/cert.rs b/openpgp/src/cert.rs
index fd5f5d0d..e1ba1b6a 100644
--- a/openpgp/src/cert.rs
+++ b/openpgp/src/cert.rs
@@ -7286,4 +7286,25 @@ Pu1xwz57O4zo1VYf6TqHJzVC3OMvMUM2hhdecMUe5x6GorNaj6g=
Ok(())
}
+
+ /// Tests v3 revocation signatures.
+ #[test]
+ fn v3_revocation_signature() -> Result<()> {
+ if ! crate::types::PublicKeyAlgorithm::ECDSA.is_supported()
+ || ! crate::types::Curve::NistP521.is_supported()
+ {
+ eprintln!("Skipping because ECDSA/NistP521 is not supported");
+ return Ok(());
+ }
+
+ let c = Cert::from_bytes(
+ crate::tests::key("v4-revoked-by-v3.pgp"))?;
+ assert_eq!(c.bad_signatures().count(), 0);
+
+ let sp = crate::policy::StandardPolicy::new();
+ assert!(matches!(c.revocation_status(&sp, None),
+ RevocationStatus::Revoked(_)));
+
+ Ok(())
+ }
}
diff --git a/openpgp/tests/data/keys/v4-revoked-by-v3.pgp b/openpgp/tests/data/keys/v4-revoked-by-v3.pgp
new file mode 100644
index 00000000..b1149b13
--- /dev/null
+++ b/openpgp/tests/data/keys/v4-revoked-by-v3.pgp
@@ -0,0 +1,28 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+xpMEVOErbRMFK4EEACMEIwQBoO/p4ydhEqbQqDltmNWgxTBsAhkU8JYxWU3ZwZhX
+xVFCVx80kBSiFCHN0gTxq2V1/AwESk3aWzFE+yaXyTU750YAUTirfwsNuvFWeJuP
+f7u8EsMhPQ3621MFiGghyRk+ouIdcTHMwTmbwmmoldmf/iumHvc2AZZ62FdpGoR7
+koNvXGnNEnRlc3QgPHRlc3RrZXktZWNjPsLARAQQEwoAUwUCVOErbTAUgAAAAAAg
+AAdwcmVmZXJyZWQtZW1haWwtZW5jb2RpbmdAcGdwLmNvbXBncG1pbWUECwkIBwIZ
+AQUbAwAAAAIWAgUeAQAAAAQVCgkIACEJEHzZZJXwFgGpFiEElcguADpNPi+DuthN
+fNlklfAWAalW4QIHTxUXadSW2UeH0iylk37AYwWmlVA8UXt+5NvsEvNIUBJukL4H
+caGlzzOozvm3NwNPN9iZWsjFAzaqOpOsAatrdVcCAwUmJEmXBS/RtGaazNRGBDo7
+wzVKOvdyHa/BeIaM1Jop0CUFfuCy9ABkO05bmK4jyyQQFz4CoxAdguVvtNkFAjUH
+zpcEVOErbRIFK4EEACMEIwQBUfFcAZ/0XXmmD8QddHh/WDNNF7X8n7+XCGRehn/x
+emMdkE25UIxlT2u0x+9vgW5+vdu4TquG1giro9PlnF5K/fIAz8uVYpctdUZRuibt
+wCBjRP4scGy7xSKGLpdeo77P5lDl58YH5+Pjlc1zE7Ma1FX4GjTjK356dWAxb3rH
+IYYWQwQDAQoJwrkEKBMKAAYFAleS0WEAIQkQfNlklfAWAakWIQSVyC4AOk0+L4O6
+2E182WSV8BYBqbYnAgkBPbrFaN9vN65uPaHZ+J7fbSzICjS0E3O1+zmzePpPWdwA
+NksAGKFWRVdEsmoAfd5KgnUUFBfRE4SByQltSWrnwmUCCQGvBvIvOdol1UJZvBn/
+ZFZwFDVdIR3reek4KQREj0bDV98fcutHuWznDRwc3Ob+y5X5Li8PyLpG1okSYQQt
++B3188K+BBgTCgAMBQJU4SttBRsMAAAAACEJEHzZZJXwFgGpFiEElcguADpNPi+D
+uthNfNlklfAWAakgTgIDBLys0DHw3Z0f2mpMZ8oovEq5Cb+XADdxf81W1s/oSN0M
+dX5MkM7DYbyKR6sgV6sCFrcQtlwrUZfaWzUbQqt43w8CCQFIWxXASdndRR+BAHAX
+Ido7fkjYgrdOjZ4esPPcPVMzT3KsSox+Abov3E+sK6bpDZal/D0/Xql7E+YGrIin
+LjyyJ8KaAwUgV5LRYXzZZJXwFgGpEwq8ZgIJAWQUpVg6PCqCXYHETrLvDqzvAsbK
+CeIwsjhoUwzL+p/2fpwgWM37VIBnntH9ZQubQN2jnzlKAc2NAAnSPXnEiOWTAgUX
+lPxjPcyOD9i3+7NA/3N4S/evrVnDzL6xKMOwhGjcM6UaiPVnajzVe7C+1kCBIVKo
+da+D3zV9nFaLv13apQPkdA==
+=tiMT
+-----END PGP PUBLIC KEY BLOCK-----