diff options
author | Kai Michaelis <kai@sequoia-pgp.org> | 2019-01-18 15:03:23 +0100 |
---|---|---|
committer | Kai Michaelis <kai@sequoia-pgp.org> | 2019-01-18 15:10:15 +0100 |
commit | 37b79c2cca645cac52a5c2ca9cbcd083b78dc40a (patch) | |
tree | 8032ae1305c3bf0ab12aa929dfc94abd8dfed46a | |
parent | bc449472af7519be591a9e8279a8e7d8b0d19aab (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.sig | bin | 119 -> 122 bytes | |||
-rw-r--r-- | sqv/tests/data/rev-unrev-t2-t3.sig | bin | 119 -> 122 bytes | |||
-rw-r--r-- | sqv/tests/data/rev-unrev-t3-now.sig | bin | 119 -> 122 bytes | |||
-rw-r--r-- | sqv/tests/data/revoked-unrevoked.key | bin | 440 -> 440 bytes | |||
-rw-r--r-- | sqv/tests/revoked-key.rs | 147 |
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 Binary files differindex 812bd623..b63ee3c7 100644 --- a/sqv/tests/data/rev-unrev-t1-t2.sig +++ b/sqv/tests/data/rev-unrev-t1-t2.sig diff --git a/sqv/tests/data/rev-unrev-t2-t3.sig b/sqv/tests/data/rev-unrev-t2-t3.sig Binary files differindex 3a3b0de7..13a866fc 100644 --- a/sqv/tests/data/rev-unrev-t2-t3.sig +++ b/sqv/tests/data/rev-unrev-t2-t3.sig diff --git a/sqv/tests/data/rev-unrev-t3-now.sig b/sqv/tests/data/rev-unrev-t3-now.sig Binary files differindex 79ff5b11..29850942 100644 --- a/sqv/tests/data/rev-unrev-t3-now.sig +++ b/sqv/tests/data/rev-unrev-t3-now.sig diff --git a/sqv/tests/data/revoked-unrevoked.key b/sqv/tests/data/revoked-unrevoked.key Binary files differindex 6ebb9ee6..320fa119 100644 --- a/sqv/tests/data/revoked-unrevoked.key +++ b/sqv/tests/data/revoked-unrevoked.key 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(); +// } +// } |