summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKai Michaelis <kai@sequoia-pgp.org>2019-01-18 15:03:23 +0100
committerKai Michaelis <kai@sequoia-pgp.org>2019-01-18 15:10:15 +0100
commit37b79c2cca645cac52a5c2ca9cbcd083b78dc40a (patch)
tree8032ae1305c3bf0ab12aa929dfc94abd8dfed46a
parentbc449472af7519be591a9e8279a8e7d8b0d19aab (diff)
sqv: fix sqv revocation test case.
Subkeys weren't signing capable. I also added to re-create the test data to improve transparency.
-rw-r--r--sqv/tests/data/msg.txt (renamed from sqv/tests/data/rev-unrev-msg.txt)0
-rw-r--r--sqv/tests/data/rev-unrev-t1-t2.sigbin119 -> 122 bytes
-rw-r--r--sqv/tests/data/rev-unrev-t2-t3.sigbin119 -> 122 bytes
-rw-r--r--sqv/tests/data/rev-unrev-t3-now.sigbin119 -> 122 bytes
-rw-r--r--sqv/tests/data/revoked-unrevoked.keybin440 -> 440 bytes
-rw-r--r--sqv/tests/revoked-key.rs147
6 files changed, 142 insertions, 5 deletions
diff --git a/sqv/tests/data/rev-unrev-msg.txt b/sqv/tests/data/msg.txt
index 1856e9be..1856e9be 100644
--- a/sqv/tests/data/rev-unrev-msg.txt
+++ b/sqv/tests/data/msg.txt
diff --git a/sqv/tests/data/rev-unrev-t1-t2.sig b/sqv/tests/data/rev-unrev-t1-t2.sig
index 812bd623..b63ee3c7 100644
--- a/sqv/tests/data/rev-unrev-t1-t2.sig
+++ b/sqv/tests/data/rev-unrev-t1-t2.sig
Binary files differ
diff --git a/sqv/tests/data/rev-unrev-t2-t3.sig b/sqv/tests/data/rev-unrev-t2-t3.sig
index 3a3b0de7..13a866fc 100644
--- a/sqv/tests/data/rev-unrev-t2-t3.sig
+++ b/sqv/tests/data/rev-unrev-t2-t3.sig
Binary files differ
diff --git a/sqv/tests/data/rev-unrev-t3-now.sig b/sqv/tests/data/rev-unrev-t3-now.sig
index 79ff5b11..29850942 100644
--- a/sqv/tests/data/rev-unrev-t3-now.sig
+++ b/sqv/tests/data/rev-unrev-t3-now.sig
Binary files differ
diff --git a/sqv/tests/data/revoked-unrevoked.key b/sqv/tests/data/revoked-unrevoked.key
index 6ebb9ee6..320fa119 100644
--- a/sqv/tests/data/revoked-unrevoked.key
+++ b/sqv/tests/data/revoked-unrevoked.key
Binary files differ
diff --git a/sqv/tests/revoked-key.rs b/sqv/tests/revoked-key.rs
index f57831ff..4e6e71ad 100644
--- a/sqv/tests/revoked-key.rs
+++ b/sqv/tests/revoked-key.rs
@@ -13,8 +13,8 @@ mod integration {
&["--keyring",
&"revoked-unrevoked.key",
&"rev-unrev-t1-t2.sig",
- &"rev-unrev-msg.txt"])
- .stdout().is("5EC9 FDA7 E49B 0F43 F480 2DC7 2BD6 1C89 D633 7855")
+ &"msg.txt"])
+ .stdout().is("7859 B79C 7312 7826 6852 15BE 8254 0C25 2B52 1ED8")
.unwrap();
}
@@ -26,7 +26,7 @@ mod integration {
&["--keyring",
&"revoked-unrevoked.key",
&"rev-unrev-t2-t3.sig",
- &"rev-unrev-msg.txt"])
+ &"msg.txt"])
.fails()
.unwrap();
}
@@ -39,8 +39,145 @@ mod integration {
&["--keyring",
&"revoked-unrevoked.key",
&"rev-unrev-t3-now.sig",
- &"rev-unrev-msg.txt"])
- .stdout().is("5EC9 FDA7 E49B 0F43 F480 2DC7 2BD6 1C89 D633 7855")
+ &"msg.txt"])
+ .stdout().is("7859 B79C 7312 7826 6852 15BE 8254 0C25 2B52 1ED8")
.unwrap();
}
}
+
+// Code to create the data for the test cases above
+// extern crate sequoia_openpgp;
+// extern crate rand;
+//
+// #[test]
+// fn create_key() {
+// use std::fs::File;
+// use sequoia_openpgp::{
+// TPK,
+// PacketPile,
+// packet::{
+// signature,
+// key::SecretKey,
+// Features,
+// KeyFlags,
+// Key,
+// Tag,
+// },
+// crypto::KeyPair,
+// serialize::Serialize,
+// constants::{
+// SignatureType,
+// HashAlgorithm,
+// PublicKeyAlgorithm,
+// }
+// };
+// use rand::{thread_rng, Rng, distributions::Open01};
+//
+// let msg = b"Hello, World";
+// let t1 = time::strptime("2000-1-1", "%F").unwrap();
+// let t2 = time::strptime("2001-1-1", "%F").unwrap();
+// let t3 = time::strptime("2002-1-1", "%F").unwrap();
+// let f1: f32 = thread_rng().sample(Open01);
+// let f2: f32 = thread_rng().sample(Open01);
+// let t12 = t1 + time::Duration::days((300.0 * f1) as i64);
+// let t23 = t2 + time::Duration::days((300.0 * f2) as i64);
+// let key = Key::new(PublicKeyAlgorithm::EdDSA).unwrap();
+// let (bind1, rev, bind2, sig1, sig2, sig3) = {
+// let mpis = match key.secret() {
+// Some(SecretKey::Unencrypted{ ref mpis }) => mpis,
+// _ => unreachable!(),
+// };
+// // 1st binding sig valid from t1 on
+// let mut b = signature::Builder::new(SignatureType::DirectKey);
+// b.set_features(&Features::sequoia()).unwrap();
+// b.set_key_flags(&KeyFlags::default().set_sign(true)).unwrap();
+// b.set_signature_creation_time(t1).unwrap();
+// b.set_key_expiration_time(Some(time::Duration::weeks(10 * 52))).unwrap();
+// b.set_issuer_fingerprint(key.fingerprint()).unwrap();
+// b.set_issuer(key.fingerprint().to_keyid()).unwrap();
+// b.set_preferred_hash_algorithms(vec![HashAlgorithm::SHA512]).unwrap();
+// let bind1 = b.sign_primary_key_binding(
+// &mut KeyPair::new(key.clone(), mpis.clone()).unwrap(),
+// HashAlgorithm::SHA512).unwrap();
+//
+// // Revocation sig valid from t2 on
+// b = signature::Builder::new(SignatureType::KeyRevocation);
+// b.set_signature_creation_time(t2).unwrap();
+// b.set_issuer_fingerprint(key.fingerprint()).unwrap();
+// b.set_issuer(key.fingerprint().to_keyid()).unwrap();
+// let rev = b.sign_primary_key_binding(
+// &mut KeyPair::new(key.clone(), mpis.clone()).unwrap(),
+// HashAlgorithm::SHA512).unwrap();
+//
+// // 2nd binding sig valid from t3 on
+// b = signature::Builder::new(SignatureType::DirectKey);
+// b.set_features(&Features::sequoia()).unwrap();
+// b.set_key_flags(&KeyFlags::default().set_sign(true)).unwrap();
+// b.set_signature_creation_time(t3).unwrap();
+// b.set_key_expiration_time(Some(time::Duration::weeks(10 * 52))).unwrap();
+// b.set_issuer_fingerprint(key.fingerprint()).unwrap();
+// b.set_issuer(key.fingerprint().to_keyid()).unwrap();
+// b.set_preferred_hash_algorithms(vec![HashAlgorithm::SHA512]).unwrap();
+// let bind2 = b.sign_primary_key_binding(
+// &mut KeyPair::new(key.clone(), mpis.clone()).unwrap(),
+// HashAlgorithm::SHA512).unwrap();
+//
+// // 1st message sig between t1 and t2
+// b = signature::Builder::new(SignatureType::Binary);
+// b.set_features(&Features::sequoia()).unwrap();
+// b.set_signature_creation_time(t12).unwrap();
+// b.set_issuer_fingerprint(key.fingerprint()).unwrap();
+// b.set_issuer(key.fingerprint().to_keyid()).unwrap();
+// let sig1 = b.sign_message(
+// &mut KeyPair::new(key.clone(), mpis.clone()).unwrap(),
+// HashAlgorithm::SHA512, msg).unwrap();
+//
+// // 2nd message sig between t2 and t3
+// b = signature::Builder::new(SignatureType::Binary);
+// b.set_features(&Features::sequoia()).unwrap();
+// b.set_signature_creation_time(t23).unwrap();
+// b.set_issuer_fingerprint(key.fingerprint()).unwrap();
+// b.set_issuer(key.fingerprint().to_keyid()).unwrap();
+// let sig2 = b.sign_message(
+// &mut KeyPair::new(key.clone(), mpis.clone()).unwrap(),
+// HashAlgorithm::SHA512, msg).unwrap();
+//
+// // 3rd message sig between t3 and now
+// b = signature::Builder::new(SignatureType::Binary);
+// b.set_features(&Features::sequoia()).unwrap();
+// b.set_signature_creation_time(time::now()).unwrap();
+// b.set_issuer_fingerprint(key.fingerprint()).unwrap();
+// b.set_issuer(key.fingerprint().to_keyid()).unwrap();
+// let sig3 = b.sign_message(
+// &mut KeyPair::new(key.clone(), mpis.clone()).unwrap(),
+// HashAlgorithm::SHA512, msg).unwrap();
+//
+// (bind1, rev, bind2, sig1, sig2, sig3)
+// };
+// let tpk = TPK::from_packet_pile(PacketPile::from_packets(vec![
+// key.to_packet(Tag::PublicKey).unwrap(),
+// bind1.to_packet(),
+// bind2.to_packet(),
+// rev.to_packet()
+// ])).unwrap();
+//
+// {
+// let mut fd = File::create("key").unwrap();
+// tpk.serialize(&mut fd).unwrap();
+// }
+//
+// {
+// let mut fd = File::create("sig1").unwrap();
+// sig1.serialize(&mut fd).unwrap();
+// }
+//
+// {
+// let mut fd = File::create("sig2").unwrap();
+// sig2.serialize(&mut fd).unwrap();
+// }
+//
+// {
+// let mut fd = File::create("sig3").unwrap();
+// sig3.serialize(&mut fd).unwrap();
+// }
+// }