mirror of
https://git.proxmox.com/git/rustc
synced 2025-10-26 08:57:15 +00:00
43 lines
943 B
Rust
43 lines
943 B
Rust
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(())
|
|
}
|