Skip to content

Commit

Permalink
Merge commit '41df701a089fbf19fe16d65fbb6df46854b1f3df' of https://gi…
Browse files Browse the repository at this point in the history
  • Loading branch information
Kent Overstreet committed Jun 19, 2024
2 parents adb63be + 41df701 commit 02aa118
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 12 deletions.
4 changes: 4 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,7 @@ indent_size = 4
[*.rs]
indent_style = space
indent_size = 4

[*.sh]
indent_size = 4
indent_style = space
2 changes: 1 addition & 1 deletion src/commands/logger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ impl log::Log for SimpleLogger {
Level::Debug => "DEBUG".bright_blue(),
Level::Trace => "TRACE".into(),
};
println!(
eprintln!(
"{} - {}: {}",
debug_prefix,
record.module_path().unwrap_or_default().bright_black(),
Expand Down
29 changes: 18 additions & 11 deletions src/key.rs
Original file line number Diff line number Diff line change
Expand Up @@ -110,25 +110,32 @@ impl KeyHandle {
}
}

pub fn new_from_search(uuid: &Uuid) -> Result<Self> {
let key_name = Self::format_key_name(uuid);
let key_name = CStr::as_ptr(&key_name);
fn search_keyring(keyring: i32, key_name: &CStr) -> Result<i64> {
let key_name = CStr::as_ptr(key_name);
let key_type = c_str!("user");

let key_id =
unsafe { keyctl_search(keyutils::KEY_SPEC_USER_KEYRING, key_type, key_name, 0) };
let key_id = unsafe { keyctl_search(keyring, key_type, key_name, 0) };

if key_id > 0 {
info!("Found key in keyring");
Ok(Self {
_uuid: *uuid,
_id: key_id,
})
Ok(key_id)
} else {
Err(ErrnoError(errno::errno()).into())
}
}

pub fn new_from_search(uuid: &Uuid) -> Result<Self> {
let key_name = Self::format_key_name(uuid);

Self::search_keyring(keyutils::KEY_SPEC_SESSION_KEYRING, &key_name)
.or_else(|_| Self::search_keyring(keyutils::KEY_SPEC_USER_KEYRING, &key_name))
.or_else(|_| Self::search_keyring(keyutils::KEY_SPEC_USER_SESSION_KEYRING, &key_name))
.map(|id| Self {
_uuid: *uuid,
_id: id,
})
}

fn wait_for_unlock(uuid: &Uuid) -> Result<Self> {
loop {
match Self::new_from_search(uuid) {
Expand Down Expand Up @@ -158,7 +165,7 @@ impl Passphrase {
line
};

Ok(Self(CString::new(passphrase.as_str())?))
Ok(Self(CString::new(passphrase.trim_end_matches('\n'))?))
}

pub fn new_from_file(sb: &bch_sb_handle, passphrase_file: impl AsRef<Path>) -> Result<Self> {
Expand All @@ -172,6 +179,6 @@ impl Passphrase {

let passphrase = Zeroizing::new(fs::read_to_string(passphrase_file)?);

Ok(Self(CString::new(passphrase.as_str())?))
Ok(Self(CString::new(passphrase.trim_end_matches('\n'))?))
}
}

0 comments on commit 02aa118

Please sign in to comment.