1#![forbid(unsafe_code)]
3use std::path::Path;
6
7use crate::constants::{SECRET_DIR_MODE_UNIX, SECRET_FILE_MODE_UNIX};
8use crate::errors::{SshCliError, SshCliResult};
9
10pub fn set_secret_file_mode(path: &Path) -> SshCliResult<()> {
12 #[cfg(unix)]
13 {
14 use std::os::unix::fs::PermissionsExt;
15 let mut perms = std::fs::metadata(path)
16 .map_err(SshCliError::Io)?
17 .permissions();
18 perms.set_mode(SECRET_FILE_MODE_UNIX);
19 std::fs::set_permissions(path, perms).map_err(SshCliError::Io)?;
20 }
21 let _ = path;
22 Ok(())
23}
24
25pub fn set_secret_dir_mode(path: &Path) -> SshCliResult<()> {
27 #[cfg(unix)]
28 {
29 use std::os::unix::fs::PermissionsExt;
30 let mut perms = std::fs::metadata(path)
31 .map_err(SshCliError::Io)?
32 .permissions();
33 perms.set_mode(SECRET_DIR_MODE_UNIX);
34 std::fs::set_permissions(path, perms).map_err(SshCliError::Io)?;
35 }
36 let _ = path;
37 Ok(())
38}
39
40#[must_use]
42pub const fn secret_file_mode() -> u32 {
43 SECRET_FILE_MODE_UNIX
44}
45
46#[must_use]
48pub const fn secret_dir_mode() -> u32 {
49 SECRET_DIR_MODE_UNIX
50}