@@ -100,7 +100,12 @@ impl ChallengeResponseKey {
100
100
Ok ( response)
101
101
}
102
102
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
+ } ) ?;
104
109
let slot = parse_yubikey_slot ( slot_number) ?;
105
110
106
111
let yubikey_device = match yubikey_client. find_yubikey_from_serial ( yubikey. serial_number ) {
@@ -128,13 +133,22 @@ impl ChallengeResponseKey {
128
133
}
129
134
}
130
135
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
+ } ) ?;
133
143
let mut response: Vec < Yubikey > = vec ! [ ] ;
134
144
let yubikeys = match yubikey_client. find_all_yubikeys ( ) {
135
145
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
+ }
138
152
} ;
139
153
for yubikey in yubikeys {
140
154
let serial_number = match yubikey. serial {
@@ -146,11 +160,11 @@ impl ChallengeResponseKey {
146
160
name : yubikey. name ,
147
161
} ) ;
148
162
}
149
- return response;
163
+ return Ok ( response) ;
150
164
}
151
165
152
166
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 ( ) ? ;
154
168
if all_yubikeys. len ( ) == 0 {
155
169
return Err ( DatabaseKeyError :: ChallengeResponseKeyError ( format ! (
156
170
"No yubikey connected to the system" ,
0 commit comments