upgrade to sequoia 0.7 (wip!)

This commit is contained in:
Vincent Breitmoser 2019-06-07 22:30:51 +02:00
parent 22d106d52d
commit d5d915cc5e
No known key found for this signature in database
GPG Key ID: 7BD18320DEADFA11
9 changed files with 65 additions and 48 deletions

24
Cargo.lock generated
View File

@ -161,7 +161,7 @@ dependencies = [
[[package]]
name = "buffered-reader"
version = "0.6.0"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bzip2 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
@ -627,7 +627,7 @@ dependencies = [
"rocket 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rocket_codegen 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rocket_contrib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"sequoia-openpgp 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sequoia-openpgp 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
@ -651,7 +651,7 @@ dependencies = [
"multipart 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)",
"pathdiff 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"sequoia-openpgp 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sequoia-openpgp 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
@ -677,7 +677,7 @@ dependencies = [
"multipart 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)",
"pathdiff 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"sequoia-openpgp 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sequoia-openpgp 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1730,27 +1730,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "sequoia-openpgp"
version = "0.6.0"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
"buffered-reader 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"buffered-reader 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"bzip2 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"flate2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
"idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"lalrpop 0.16.3 (registry+https://github.com/rust-lang/crates.io-index)",
"lalrpop-util 0.16.3 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"memsec 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
"nettle 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"quickcheck 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"sequoia-rfc2822 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sequoia-rfc2822 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "sequoia-rfc2822"
version = "0.6.0"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2261,7 +2263,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
"checksum block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6d4dc3af3ee2e12f3e5d224e5e1e3d73668abbeb69e566d361f7d5563a4fdf09"
"checksum buf_redux 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72f25c67abbf523ff8457771622fb731ac4a2391439de33bc60febcdee1749c9"
"checksum buffered-reader 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "665f6ebe9a736f5e3edfbf320c3910f56f6d9091b70c5f27f7fce531353f1c1a"
"checksum buffered-reader 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "30f6c8d558851644c4085b21a3681eec16cc9847487b4f2d5202ecf413cbeb93"
"checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39"
"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb"
@ -2430,8 +2432,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
"checksum sequoia-openpgp 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "69cca79e151ab86fbb6e7941c9b5351f23418233e28dc658c19b516a9d942cfd"
"checksum sequoia-rfc2822 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "27cf86678fa4a7768d6bc41df9da2f5be00f474bd00bd8cc3f87aff18cd1185a"
"checksum sequoia-openpgp 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "33553f210be8c3f3c431d8aefaabb6053f5cb22ec5636a8be3a4615eefd313d0"
"checksum sequoia-rfc2822 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4d0e4cef0265c57c0d28c4672b3811e03c3198d8de815914b7a595ad4ae4dcd4"
"checksum serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)" = "a72e9b96fa45ce22a4bc23da3858dfccfd60acd28a25bcd328a98fdd6bea43fd"
"checksum serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)" = "101b495b109a3e3ca8c4cbe44cf62391527cdfb6ba15821c5ce80bcd5ea23f9f"
"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d"

View File

@ -18,7 +18,7 @@ hagrid-database = { path = "database" }
failure = "0.1.5"
rocket = "0"
rocket_codegen = "0"
sequoia-openpgp = { version = "0.6", default-features = false }
sequoia-openpgp = { version = "0.7", default-features = false }
multipart = "0"
log = "0"
serde = "1.0"

View File

@ -5,7 +5,7 @@ authors = ["Kai Michaelis <kai@sequoia-pgp.org>"]
[dependencies]
failure = "0.1.5"
sequoia-openpgp = { version = "0.6", default-features = false }
sequoia-openpgp = { version = "0.7", default-features = false }
multipart = "0"
log = "0"
rand = "0.6"

View File

@ -633,11 +633,11 @@ mod tests {
fn new() {
let tmpdir = TempDir::new().unwrap();
let db = Filesystem::new_from_base(tmpdir.path()).unwrap();
let k1 = TPKBuilder::default().add_userid("a@invalid.example.org")
let k1 = TPKBuilder::new().add_userid("a@invalid.example.org")
.generate().unwrap().0;
let k2 = TPKBuilder::default().add_userid("b@invalid.example.org")
let k2 = TPKBuilder::new().add_userid("b@invalid.example.org")
.generate().unwrap().0;
let k3 = TPKBuilder::default().add_userid("c@invalid.example.org")
let k3 = TPKBuilder::new().add_userid("c@invalid.example.org")
.generate().unwrap().0;
assert!(db.merge(k1).unwrap().into_tpk_status().email_status.len() > 0);

View File

@ -33,7 +33,7 @@ use EmailAddressStatus;
pub fn test_uid_verification<D: Database>(db: &mut D) {
let str_uid1 = "Test A <test_a@example.com>";
let str_uid2 = "Test B <test_b@example.com>";
let tpk = TPKBuilder::default()
let tpk = TPKBuilder::new()
.add_userid(str_uid1)
.add_userid(str_uid2)
.generate()
@ -203,7 +203,8 @@ pub fn test_uid_verification<D: Database>(db: &mut D) {
}
// publish w/one uid more
{
// FIXME how to construct a UserIDBinding?
/*{
let mut packets = tpk
.clone()
.into_packet_pile()
@ -221,7 +222,7 @@ pub fn test_uid_verification<D: Database>(db: &mut D) {
let email3 = Email::from_str(str_uid3).unwrap();
let key = tpk.primary();
let mut signer = key.clone().into_keypair().unwrap();
let bind = UserIDBinding::new(key, uid3.clone(), &mut signer).unwrap();
let bind = UserIDBinding::default(key, uid3.clone(), &mut signer).unwrap();
packets.push(Packet::UserID(uid3.clone()));
packets
@ -258,7 +259,7 @@ pub fn test_uid_verification<D: Database>(db: &mut D) {
^ ((myuid1 == uid2) & (myuid2 == uid1))
);
assert!(db.by_email(&email3).is_none());
}
}*/
}
pub fn test_regenerate<D: Database>(db: &mut D) {
@ -311,7 +312,7 @@ pub fn test_regenerate<D: Database>(db: &mut D) {
pub fn test_reupload<D: Database>(db: &mut D) {
let str_uid1 = "Test A <test_a@example.com>";
let str_uid2 = "Test B <test_b@example.com>";
let tpk = TPKBuilder::default()
let tpk = TPKBuilder::new()
.add_userid(str_uid1)
.add_userid(str_uid2)
.generate()
@ -344,10 +345,10 @@ pub fn test_reupload<D: Database>(db: &mut D) {
pub fn test_uid_replacement<D: Database>(db: &mut D) {
let str_uid1 = "Test A <test_a@example.com>";
let tpk1 = TPKBuilder::default().add_userid(str_uid1).generate().unwrap().0;
let tpk1 = TPKBuilder::new().add_userid(str_uid1).generate().unwrap().0;
let fpr1 = Fingerprint::try_from(tpk1.fingerprint()).unwrap();
let tpk2 = TPKBuilder::default().add_userid(str_uid1).generate().unwrap().0;
let tpk2 = TPKBuilder::new().add_userid(str_uid1).generate().unwrap().0;
let fpr2 = Fingerprint::try_from(tpk2.fingerprint()).unwrap();
let pgp_fpr1 = tpk1.fingerprint();
@ -385,7 +386,7 @@ pub fn test_uid_replacement<D: Database>(db: &mut D) {
pub fn test_uid_deletion<D: Database>(db: &mut D) {
let str_uid1 = "Test A <test_a@example.com>";
let str_uid2 = "Test B <test_b@example.com>";
let tpk = TPKBuilder::default()
let tpk = TPKBuilder::new()
.add_userid(str_uid1)
.add_userid(str_uid2)
.add_signing_subkey()
@ -442,7 +443,7 @@ pub fn test_uid_deletion<D: Database>(db: &mut D) {
}
pub fn test_subkey_lookup<D: Database>(db: &mut D) {
let tpk = TPKBuilder::default()
let tpk = TPKBuilder::new()
.add_userid("Testy <test@example.com>")
.add_signing_subkey()
.add_encryption_subkey()
@ -474,7 +475,7 @@ pub fn test_subkey_lookup<D: Database>(db: &mut D) {
}
pub fn test_kid_lookup<D: Database>(db: &mut D) {
let tpk = TPKBuilder::default()
let tpk = TPKBuilder::new()
.add_userid("Testy <test@example.com>")
.add_signing_subkey()
.add_encryption_subkey()
@ -505,7 +506,7 @@ pub fn test_kid_lookup<D: Database>(db: &mut D) {
pub fn test_upload_revoked_tpk<D: Database>(db: &mut D) {
let str_uid1 = "Test A <test_a@example.com>";
let str_uid2 = "Test B <test_b@example.com>";
let (mut tpk, revocation) = TPKBuilder::default()
let (mut tpk, revocation) = TPKBuilder::new()
.add_userid(str_uid1)
.add_userid(str_uid2)
.generate()
@ -536,7 +537,7 @@ pub fn test_uid_revocation<D: Database>(db: &mut D) {
let str_uid1 = "Test A <test_a@example.com>";
let str_uid2 = "Test B <test_b@example.com>";
let tpk = TPKBuilder::default()
let tpk = TPKBuilder::new()
.add_userid(str_uid1)
.add_userid(str_uid2)
.generate()
@ -574,10 +575,13 @@ pub fn test_uid_revocation<D: Database>(db: &mut D) {
assert_eq!(RevocationStatus::NotAsFarAsWeKnow, uid.revoked(None));
let mut keypair = tpk.primary().clone().into_keypair().unwrap();
uid.revoke(
uid.userid().revoke(
&mut keypair,
&tpk,
ReasonForRevocation::UIDRetired,
b"It was the maid :/",
None,
None,
)
.unwrap()
};
@ -603,7 +607,7 @@ pub fn test_unlink_uid<D: Database>(db: &mut D) {
let email = Email::from_str(uid).unwrap();
// Upload key and verify it.
let tpk = TPKBuilder::default().add_userid(uid).generate().unwrap().0;
let tpk = TPKBuilder::new().add_userid(uid).generate().unwrap().0;
let fpr = Fingerprint::try_from(tpk.fingerprint()).unwrap();
db.merge(tpk.clone()).unwrap().into_tpk_status();
@ -611,17 +615,20 @@ pub fn test_unlink_uid<D: Database>(db: &mut D) {
assert!(db.by_email(&email).is_some());
// Create a 2nd key with same uid, and revoke the uid.
let tpk_evil = TPKBuilder::default().add_userid(uid).generate().unwrap().0;
let tpk_evil = TPKBuilder::new().add_userid(uid).generate().unwrap().0;
let sig = {
let uid = tpk_evil.userids()
.find(|b| b.userid().value() == uid.as_bytes()).unwrap();
assert_eq!(RevocationStatus::NotAsFarAsWeKnow, uid.revoked(None));
let mut keypair = tpk_evil.primary().clone().into_keypair().unwrap();
uid.revoke(
uid.userid().revoke(
&mut keypair,
&tpk_evil,
ReasonForRevocation::UIDRetired,
b"I just had to quit, I couldn't bear it any longer",
None,
None,
)
.unwrap()
};
@ -652,7 +659,7 @@ pub fn get_userids(armored: &str) -> Vec<UserID> {
// as expected.
pub fn test_same_email_1<D: Database>(db: &mut D) {
let str_uid1 = "A <test@example.com>";
let tpk1 = TPKBuilder::default()
let tpk1 = TPKBuilder::new()
.add_userid(str_uid1)
.generate()
.unwrap()
@ -662,7 +669,7 @@ pub fn test_same_email_1<D: Database>(db: &mut D) {
let email1 = Email::from_str(str_uid1).unwrap();
let str_uid2 = "B <test@example.com>";
let tpk2 = TPKBuilder::default()
let tpk2 = TPKBuilder::new()
.add_userid(str_uid2)
.generate()
.unwrap()
@ -714,10 +721,13 @@ pub fn test_same_email_1<D: Database>(db: &mut D) {
assert_eq!(RevocationStatus::NotAsFarAsWeKnow, uid.revoked(None));
let mut keypair = tpk2.primary().clone().into_keypair().unwrap();
uid.revoke(
uid.userid().revoke(
&mut keypair,
&tpk2,
ReasonForRevocation::UIDRetired,
b"It was the maid :/",
None,
None,
)
.unwrap()
};
@ -744,7 +754,7 @@ pub fn test_same_email_2<D: Database>(db: &mut D) {
let str_uid1 = "A <test@example.com>";
let str_uid2 = "B <test@example.com>";
let tpk = TPKBuilder::default()
let tpk = TPKBuilder::new()
.add_userid(str_uid1)
.add_userid(str_uid2)
.generate()
@ -780,10 +790,13 @@ pub fn test_same_email_2<D: Database>(db: &mut D) {
assert_eq!(RevocationStatus::NotAsFarAsWeKnow, uid.revoked(None));
let mut keypair = tpk.primary().clone().into_keypair().unwrap();
uid.revoke(
uid.userid().revoke(
&mut keypair,
&tpk,
ReasonForRevocation::UIDRetired,
b"It was the maid :/",
None,
None
)
.unwrap()
};

View File

@ -6,7 +6,7 @@ authors = ["Vincent Breitmose <look@my.amazin.horse>"]
[dependencies]
hagrid-database = { path = "../database" }
failure = "0.1.5"
sequoia-openpgp = "0.6"
sequoia-openpgp = "0.7"
multipart = "0"
log = "0"
rand = "0.6"

View File

@ -217,7 +217,7 @@ fn key_to_hkp_index<'a>(db: rocket::State<KeyDatabase>, query: Query)
"pub:{}:{}:{}:{}:{}:{}{}\r\n",
p.fingerprint().to_string().replace(" ", ""),
algo,
p.mpis().bits(),
p.mpis().bits().unwrap_or(0),
ctime,
extime,
is_exp,
@ -280,7 +280,7 @@ mod tests {
// Generate a key and upload it.
let (tpk, _) = TPKBuilder::autocrypt(
None, Some("foo@invalid.example.com".into()))
None, Some("foo@invalid.example.com"))
.generate().unwrap();
// Prepare to /pks/add
@ -329,10 +329,10 @@ mod tests {
// Generate two keys and upload them.
let tpk_0 = TPKBuilder::autocrypt(
None, Some("foo@invalid.example.com".into()))
None, Some("foo@invalid.example.com"))
.generate().unwrap().0;
let tpk_1 = TPKBuilder::autocrypt(
None, Some("bar@invalid.example.com".into()))
None, Some("bar@invalid.example.com"))
.generate().unwrap().0;
// Prepare to /pks/add

View File

@ -590,7 +590,7 @@ pub mod tests {
// Generate a key and upload it.
let (tpk, _) = TPKBuilder::autocrypt(
None, Some("foo@invalid.example.com".into()))
None, Some("foo@invalid.example.com"))
.generate().unwrap();
let mut tpk_serialized = Vec::new();
@ -648,10 +648,10 @@ pub mod tests {
// Generate two keys and upload them.
let tpk_0 = TPKBuilder::autocrypt(
None, Some("foo@invalid.example.com".into()))
None, Some("foo@invalid.example.com"))
.generate().unwrap().0;
let tpk_1 = TPKBuilder::autocrypt(
None, Some("bar@invalid.example.com".into()))
None, Some("bar@invalid.example.com"))
.generate().unwrap().0;
let mut tpk_serialized = Vec::new();
@ -684,10 +684,10 @@ pub mod tests {
// Generate two keys and upload them.
let tpk_1 = TPKBuilder::autocrypt(
None, Some("foo@invalid.example.com".into()))
None, Some("foo@invalid.example.com"))
.generate().unwrap().0;
let tpk_2 = TPKBuilder::autocrypt(
None, Some("bar@invalid.example.com".into()))
None, Some("bar@invalid.example.com"))
.generate().unwrap().0;
let mut tpk_serialized_1 = Vec::new();
@ -758,7 +758,7 @@ pub mod tests {
let (_tmpdir, client) = client().unwrap();
let (tpk, _) = TPKBuilder::autocrypt(
None, Some("foo@invalid.example.com".into()))
None, Some("foo@invalid.example.com"))
.generate().unwrap();
let mut tpk_serialized = Vec::new();

View File

@ -90,8 +90,10 @@ pub fn process_key(
) -> response::UploadResponse {
use sequoia_openpgp::parse::Parse;
use sequoia_openpgp::tpk::TPKParser;
use sequoia_openpgp::armor::{Reader,ReaderMode};
// First, parse all TPKs and error out if one fails.
let reader = Reader::from_reader(reader, ReaderMode::VeryTolerant);
let parser = match TPKParser::from_reader(reader) {
Ok(p) => p,
Err(_) => return UploadResponse::err("Failed parsing key"),