summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2020-02-19 17:44:14 +0100
committerJustus Winter <justus@sequoia-pgp.org>2020-02-19 17:44:14 +0100
commitd55b9650b3ae66fee56579b4f73ba054d6f7e7f9 (patch)
tree6f913c12427050c3a968f83726f86fe5cb417d42
parentbf2303e2906a1569af20e3a8724ab0e710808510 (diff)
openpgp: Add test.
- Fixes #361.
-rw-r--r--openpgp/src/cert/mod.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/openpgp/src/cert/mod.rs b/openpgp/src/cert/mod.rs
index bb2f7574..ea078433 100644
--- a/openpgp/src/cert/mod.rs
+++ b/openpgp/src/cert/mod.rs
@@ -3402,4 +3402,30 @@ Pu1xwz57O4zo1VYf6TqHJzVC3OMvMUM2hhdecMUe5x6GorNaj6g=
assert_eq!(cert.keys().unencrypted_secret().skip_primary().count(), 1);
Ok(())
}
+
+ /// Demonstrates that subkeys are kept if a userid is later added
+ /// without any keyflags.
+ #[test]
+ fn issue_361() -> Result<()> {
+ let (cert, _) = CertBuilder::new()
+ .add_transport_encryption_subkey()
+ .generate()?;
+ assert_eq!(cert.userids().count(), 0);
+ assert_eq!(cert.keys().count(), 2);
+
+ let mut primary_pair = cert.primary_key().key().clone()
+ .mark_parts_secret()?.into_keypair()?;
+ let uid: UserID = "foo@example.org".into();
+ let sig = uid.bind(
+ &mut primary_pair, &cert,
+ signature::Builder::new(SignatureType::PositiveCertification))?;
+ let cert = cert.merge_packets(vec![
+ uid.into(),
+ sig.into(),
+ ])?;
+
+ assert_eq!(cert.userids().count(), 1);
+ assert_eq!(cert.keys().count(), 2);
+ Ok(())
+ }
}