diff options
| author | Jethro Beekman <[email protected]> | 2015-06-30 17:27:44 -0700 |
|---|---|---|
| committer | Jethro Beekman <[email protected]> | 2015-07-01 00:18:44 -0700 |
| commit | c4e398d39785e20640216ac595355d45a32c8618 (patch) | |
| tree | d503df59db6d85e66c98722b5cb70d06712edffb /openssl/src | |
| parent | Move X509 extensions to seperate module, implement ToString instead of custom... (diff) | |
| download | rust-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.rs | 28 |
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(); |