Skip to content

Commit a004b36

Browse files
authored
chore: bump challenge-response version (#214)
1 parent b68f82d commit a004b36

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ cipher = { version = "0.4", features = ["std"] }
5757
twofish = "0.7"
5858
cbc = "0.1"
5959

60-
challenge_response = { version = "0.2", optional = true }
60+
challenge_response = { version = "0.3", optional = true }
6161

6262
uuid = { version = "1.2", features = ["v4", "serde"] }
6363
hex = { version = "0.4", optional = true }

src/key.rs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,12 @@ impl ChallengeResponseKey {
100100
Ok(response)
101101
}
102102
ChallengeResponseKey::YubikeyChallenge(yubikey, slot_number) => {
103-
let mut yubikey_client = Yubico::new();
103+
let mut yubikey_client = Yubico::new().map_err(|e| {
104+
DatabaseKeyError::ChallengeResponseKeyError(format!(
105+
"Could not search for yubikey: {}",
106+
e.to_string()
107+
))
108+
})?;
104109
let slot = parse_yubikey_slot(slot_number)?;
105110

106111
let yubikey_device = match yubikey_client.find_yubikey_from_serial(yubikey.serial_number) {
@@ -128,13 +133,22 @@ impl ChallengeResponseKey {
128133
}
129134
}
130135

131-
pub fn get_available_yubikeys() -> Vec<Yubikey> {
132-
let mut yubikey_client = Yubico::new();
136+
pub fn get_available_yubikeys() -> Result<Vec<Yubikey>, DatabaseKeyError> {
137+
let mut yubikey_client = Yubico::new().map_err(|e| {
138+
DatabaseKeyError::ChallengeResponseKeyError(format!(
139+
"Could not search for yubikey: {}",
140+
e.to_string()
141+
))
142+
})?;
133143
let mut response: Vec<Yubikey> = vec![];
134144
let yubikeys = match yubikey_client.find_all_yubikeys() {
135145
Ok(y) => y,
136-
// FIXME we should probably return this error to the user.
137-
Err(_) => return vec![],
146+
Err(e) => {
147+
return Err(DatabaseKeyError::ChallengeResponseKeyError(format!(
148+
"Could not search for yubikeys: {}",
149+
e.to_string()
150+
)))
151+
}
138152
};
139153
for yubikey in yubikeys {
140154
let serial_number = match yubikey.serial {
@@ -146,11 +160,11 @@ impl ChallengeResponseKey {
146160
name: yubikey.name,
147161
});
148162
}
149-
return response;
163+
return Ok(response);
150164
}
151165

152166
pub fn get_yubikey(serial_number: Option<u32>) -> Result<Yubikey, DatabaseKeyError> {
153-
let all_yubikeys = ChallengeResponseKey::get_available_yubikeys();
167+
let all_yubikeys = ChallengeResponseKey::get_available_yubikeys()?;
154168
if all_yubikeys.len() == 0 {
155169
return Err(DatabaseKeyError::ChallengeResponseKeyError(format!(
156170
"No yubikey connected to the system",

0 commit comments

Comments
 (0)