aboutsummaryrefslogtreecommitdiff
path: root/openssl/src
diff options
context:
space:
mode:
authorJethro Beekman <[email protected]>2015-06-30 17:27:44 -0700
committerJethro Beekman <[email protected]>2015-07-01 00:18:44 -0700
commitc4e398d39785e20640216ac595355d45a32c8618 (patch)
treed503df59db6d85e66c98722b5cb70d06712edffb /openssl/src
parentMove X509 extensions to seperate module, implement ToString instead of custom... (diff)
downloadrust-openssl-c4e398d39785e20640216ac595355d45a32c8618.tar.xz
rust-openssl-c4e398d39785e20640216ac595355d45a32c8618.zip
Turn "dirty hack" into slightly less dirty hack, with potential to become non-dirty
Diffstat (limited to 'openssl/src')
-rw-r--r--openssl/src/x509/mod.rs28
1 files changed, 10 insertions, 18 deletions
diff --git a/openssl/src/x509/mod.rs b/openssl/src/x509/mod.rs
index 6292579b..864e94c8 100644
--- a/openssl/src/x509/mod.rs
+++ b/openssl/src/x509/mod.rs
@@ -103,22 +103,14 @@ impl X509StoreContext {
pub use self::extension::KeyUsageOption as KeyUsage;
pub use self::extension::ExtKeyUsageOption as ExtKeyUsage;
-// FIXME: a dirty hack as there is no way to
-// implement ToString for Vec as both are defined
-// in another crate
-#[doc(hidden)]
-trait ToStr {
- fn to_str(&self) -> String;
-}
-
-impl<T: ToString> ToStr for Vec<T> {
- fn to_str(&self) -> String {
- self.iter().enumerate().fold(String::new(), |mut acc, (idx, v)| {
- if idx > 0 { acc.push(',') };
- acc.push_str(&v.to_string());
- acc
- })
- }
+// FIXME: This would be nicer as a method on Iterator<Item=ToString>. This can
+// eventually be replaced by the successor to std::slice::SliceConcatExt.connect
+fn join<I: Iterator<Item=T>,T: ToString>(iter: I, sep: &str) -> String {
+ iter.enumerate().fold(String::new(), |mut acc, (idx, v)| {
+ if idx > 0 { acc.push_str(sep) };
+ acc.push_str(&v.to_string());
+ acc
+ })
}
#[allow(non_snake_case)]
@@ -314,12 +306,12 @@ impl X509Generator {
if self.key_usage.len() > 0 {
try!(X509Generator::add_extension(x509.handle, ffi::NID_key_usage,
- &self.key_usage.to_str()));
+ &join(self.key_usage.iter(),",")));
}
if self.ext_key_usage.len() > 0 {
try!(X509Generator::add_extension(x509.handle, ffi::NID_ext_key_usage,
- &self.ext_key_usage.to_str()));
+ &join(self.ext_key_usage.iter(),",")));
}
let hash_fn = self.hash_type.evp_md();