diff options
Diffstat (limited to 'vendor/curl/examples/ssl_cert_blob.rs')
-rw-r--r-- | vendor/curl/examples/ssl_cert_blob.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/curl/examples/ssl_cert_blob.rs b/vendor/curl/examples/ssl_cert_blob.rs new file mode 100644 index 0000000..b6933bd --- /dev/null +++ b/vendor/curl/examples/ssl_cert_blob.rs @@ -0,0 +1,42 @@ +use std::env; +use std::fs::File; +use std::io::{stdout, Read, Write}; +use std::path::Path; + +use anyhow::{bail, Result}; +use curl::easy::Easy; + +fn read_file(path: impl AsRef<Path>) -> Result<Vec<u8>> { + let mut f = File::open(path)?; + let mut buf = Vec::new(); + f.read_to_end(&mut buf)?; + Ok(buf) +} + +fn main() -> Result<()> { + let argv = env::args().collect::<Vec<_>>(); + if argv.len() < 4 { + bail!("usage: ssl_cert_blob URL CERT KEY"); + } + let url = &argv[1]; + let cert_path = &argv[2]; + let key_path = &argv[3]; + + let mut handle = Easy::new(); + + handle.url(url)?; + handle.verbose(true)?; + handle.write_function(|data| { + stdout().write_all(data).unwrap(); + Ok(data.len()) + })?; + + let cert_blob = read_file(cert_path)?; + let key_blob = read_file(key_path)?; + + handle.ssl_cert_blob(&cert_blob)?; + handle.ssl_key_blob(&key_blob)?; + + handle.perform()?; + Ok(()) +} |