mirror of
https://github.com/feschber/lan-mouse.git
synced 2026-04-16 19:51:29 +03:00
make private key file inaccessible to other users
This commit is contained in:
@@ -2,6 +2,9 @@ use std::io::{self, BufWriter, Read, Write};
|
|||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::{fs::File, io::BufReader};
|
use std::{fs::File, io::BufReader};
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
|
use std::os::unix::fs::PermissionsExt;
|
||||||
|
|
||||||
use sha2::{Digest, Sha256};
|
use sha2::{Digest, Sha256};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
use webrtc_dtls::crypto::Certificate;
|
use webrtc_dtls::crypto::Certificate;
|
||||||
@@ -70,6 +73,13 @@ pub(crate) fn generate_key_and_cert(path: &Path) -> Result<Certificate, Error> {
|
|||||||
let cert = Certificate::generate_self_signed(["ignored".to_owned()])?;
|
let cert = Certificate::generate_self_signed(["ignored".to_owned()])?;
|
||||||
let serialized = cert.serialize_pem();
|
let serialized = cert.serialize_pem();
|
||||||
let f = File::create(path)?;
|
let f = File::create(path)?;
|
||||||
|
#[cfg(unix)]
|
||||||
|
{
|
||||||
|
let mut perm = f.metadata()?.permissions();
|
||||||
|
perm.set_mode(0o400); /* r-- --- --- */
|
||||||
|
f.set_permissions(perm)?;
|
||||||
|
}
|
||||||
|
/* FIXME windows permissions */
|
||||||
let mut writer = BufWriter::new(f);
|
let mut writer = BufWriter::new(f);
|
||||||
writer.write(serialized.as_bytes())?;
|
writer.write(serialized.as_bytes())?;
|
||||||
Ok(cert)
|
Ok(cert)
|
||||||
|
|||||||
Reference in New Issue
Block a user