summaryrefslogtreecommitdiffstats
path: root/openpgp/src/tsk.rs
diff options
context:
space:
mode:
Diffstat (limited to 'openpgp/src/tsk.rs')
-rw-r--r--openpgp/src/tsk.rs56
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);
+ }
}