diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2020-02-19 17:44:14 +0100 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2020-02-19 17:44:14 +0100 |
commit | d55b9650b3ae66fee56579b4f73ba054d6f7e7f9 (patch) | |
tree | 6f913c12427050c3a968f83726f86fe5cb417d42 | |
parent | bf2303e2906a1569af20e3a8724ab0e710808510 (diff) |
openpgp: Add test.
- Fixes #361.
-rw-r--r-- | openpgp/src/cert/mod.rs | 26 |
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(()) + } } |