diff options
Diffstat (limited to 'openpgp/src/tsk.rs')
-rw-r--r-- | openpgp/src/tsk.rs | 56 |
1 files changed, 47 insertions, 9 deletions
diff --git a/openpgp/src/tsk.rs b/openpgp/src/tsk.rs index fff2a7ed..57a6ff2d 100644 --- a/openpgp/src/tsk.rs +++ b/openpgp/src/tsk.rs @@ -77,17 +77,12 @@ impl TSK { /// Generates a new key OpenPGP key. The key will be capable of encryption /// and signing. If no user id is given the primary self signature will be /// a direct key signature. - pub fn new<'a, O: Into<Option<Cow<'a,str>>>>(primary_uid: O) - -> Result<(TSK, Signature)> { + pub fn new<'a, O>(primary_uid: O) -> Result<(TSK, Signature)> + where O: Into<Option<Cow<'a, str>>> + { use tpk::TPKBuilder; - let mut key = TPKBuilder::autocrypt(None); - - match primary_uid.into() { - Some(uid) => { key = key.add_userid(uid); } - None => {} - } - + let key = TPKBuilder::autocrypt(None, primary_uid); let (tpk, revocation) = key.generate()?; Ok((TSK::from_tpk(tpk), revocation)) } @@ -212,6 +207,7 @@ impl Serialize for TSK { #[cfg(test)] mod tests { + use super::*; use tpk::TPKBuilder; #[test] @@ -251,4 +247,46 @@ mod tests { tpk2.userids().next().unwrap().userid()).unwrap(), true); } + + #[test] + fn user_ids() { + let (tpk, _) = TPKBuilder::default() + .add_userid("test1@example.com") + .add_userid("test2@example.com") + .generate().unwrap(); + + let userids = tpk + .userids() + .map(|binding| binding.userid().userid()) + .collect::<Vec<_>>(); + assert_eq!(userids.len(), 2); + assert!((userids[0] == b"test1@example.com" + && userids[1] == b"test2@example.com") + || (userids[0] == b"test2@example.com" + && userids[1] == b"test1@example.com"), + "User ids: {:?}", userids); + + + let (tpk, _) = TPKBuilder::autocrypt(None, Some("Foo".into())) + .generate() + .unwrap(); + + let userids = tpk + .userids() + .map(|binding| binding.userid().userid()) + .collect::<Vec<_>>(); + assert_eq!(userids.len(), 1); + assert_eq!(userids[0], b"Foo"); + + + let (tsk, _) = TSK::new(Some("test@example.com".into())).unwrap(); + let tpk = tsk.into_tpk(); + let userids = tpk + .userids() + .map(|binding| binding.userid().userid()) + .collect::<Vec<_>>(); + assert_eq!(userids.len(), 1); + assert_eq!(userids[0], b"test@example.com", + "User ids: {:?}", userids); + } } |