summaryrefslogtreecommitdiffstats
path: root/net/src/lib.rs
diff options
context:
space:
mode:
authorJustus Winter <justus@pep-project.org>2018-01-04 16:06:03 +0100
committerJustus Winter <justus@pep-project.org>2018-01-04 16:06:03 +0100
commit49d10c39ab85d54d440b57522fcfdcce13f9af3f (patch)
treef01b0c27e7236ec932ad4bbe371b5c849bc10a95 /net/src/lib.rs
parent2fae25588511f14111dbe9f0465f6bf707649cee (diff)
net: Fix sending keys to servers.
- Now that TPKs can be serialized, KeyServer::send can get actual TPKs to send.
Diffstat (limited to 'net/src/lib.rs')
-rw-r--r--net/src/lib.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/net/src/lib.rs b/net/src/lib.rs
index bab1b8ff..f93608fe 100644
--- a/net/src/lib.rs
+++ b/net/src/lib.rs
@@ -181,15 +181,19 @@ impl KeyServer {
}
/// Sends the given key to the server.
- ///
- /// XXX: This should take a &TPK, but TPKs cannot be serialized at
- /// the moment.
- pub fn send(&mut self, key: &[u8]) -> Result<()> {
+ pub fn send(&mut self, key: &TPK) -> Result<()> {
+ use openpgp::armor::{Writer, Kind};
+
let uri = format!("{}/pks/add", self.uri).parse()?;
+ let mut armored_blob = vec![];
+ {
+ let mut w = Writer::new(&mut armored_blob, Kind::PublicKey);
+ key.serialize(&mut w)?;
+ }
// Prepare to send url-encoded data.
let mut post_data = b"keytext=".to_vec();
- post_data.extend_from_slice(percent_encode(key, KEYSERVER_ENCODE_SET)
+ post_data.extend_from_slice(percent_encode(&armored_blob, KEYSERVER_ENCODE_SET)
.collect::<String>().as_bytes());
let mut request = Request::new(Method::Post, uri);