diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2019-01-20 15:05:59 +0100 |
---|---|---|
committer | Robin Krahl <robin.krahl@ireas.org> | 2019-01-20 15:05:59 +0100 |
commit | 5da2735cfb8ccfaea1ebdee850ddd9fbd0bfb003 (patch) | |
tree | 73bb5cc2277665c07bd82d93ef732f61ed467f95 | |
parent | d974ea42b567ad752c53ec0b2b97246d17380632 (diff) | |
parent | b6a941cd9ed30a4f93299132ae7e155922c73701 (diff) | |
download | nitrokey-rs-5da2735cfb8ccfaea1ebdee850ddd9fbd0bfb003.tar.gz nitrokey-rs-5da2735cfb8ccfaea1ebdee850ddd9fbd0bfb003.tar.bz2 |
Merge branch 'hotfix-0.3.4' into next
-rw-r--r-- | CHANGELOG.md | 3 | ||||
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | src/auth.rs | 19 |
3 files changed, 14 insertions, 10 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d8a698..6c5ebf3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ - Implement `Display` for `Version`. - Introduce `DEFAULT_ADMIN_PIN` and `DEFAULT_USER_PIN` constants. +# v0.3.4 (2019-01-20) +- Fix authentication methods that assumed that `char` is signed. + # v0.3.3 (2019-01-16) - Add the `get_production_info` and `clear_new_sd_card_warning` methods to the `Storage` struct. @@ -1,6 +1,6 @@ [package] name = "nitrokey" -version = "0.3.3" +version = "0.3.4" authors = ["Robin Krahl <robin.krahl@ireas.org>"] edition = "2018" homepage = "https://code.ireas.org/nitrokey-rs/" diff --git a/src/auth.rs b/src/auth.rs index 3280924..2d61d4b 100644 --- a/src/auth.rs +++ b/src/auth.rs @@ -1,4 +1,5 @@ use std::ops::Deref; +use std::os::raw::c_char; use std::os::raw::c_int; use nitrokey_sys; @@ -147,7 +148,7 @@ fn authenticate<D, A, T>(device: D, password: &str, callback: T) -> Result<A, (D where D: Device, A: AuthenticatedDevice<D>, - T: Fn(*const i8, *const i8) -> c_int, + T: Fn(*const c_char, *const c_char) -> c_int, { let temp_password = match generate_password(TEMPORARY_PASSWORD_LENGTH) { Ok(temp_password) => temp_password, @@ -158,7 +159,7 @@ where Err(err) => return Err((device, err)), }; let password_ptr = password.as_ptr(); - let temp_password_ptr = temp_password.as_ptr() as *const i8; + let temp_password_ptr = temp_password.as_ptr() as *const c_char; return match callback(password_ptr, temp_password_ptr) { 0 => Ok(A::new(device, temp_password)), rv => Err((device, CommandError::from(rv))), @@ -217,14 +218,14 @@ impl<T: Device> Deref for User<T> { impl<T: Device> GenerateOtp for User<T> { fn get_hotp_code(&self, slot: u8) -> Result<String, CommandError> { unsafe { - let temp_password_ptr = self.temp_password.as_ptr() as *const i8; + let temp_password_ptr = self.temp_password.as_ptr() as *const c_char; return result_from_string(nitrokey_sys::NK_get_hotp_code_PIN(slot, temp_password_ptr)); } } fn get_totp_code(&self, slot: u8) -> Result<String, CommandError> { unsafe { - let temp_password_ptr = self.temp_password.as_ptr() as *const i8; + let temp_password_ptr = self.temp_password.as_ptr() as *const c_char; return result_from_string(nitrokey_sys::NK_get_totp_code_PIN( slot, 0, @@ -297,17 +298,17 @@ impl<T: Device> Admin<T> { raw_config.scrollock, raw_config.user_password, false, - self.temp_password.as_ptr() as *const i8, + self.temp_password.as_ptr() as *const c_char, )) } } fn write_otp_slot<C>(&self, data: OtpSlotData, callback: C) -> Result<(), CommandError> where - C: Fn(RawOtpSlotData, *const i8) -> c_int, + C: Fn(RawOtpSlotData, *const c_char) -> c_int, { let raw_data = RawOtpSlotData::new(data)?; - let temp_password_ptr = self.temp_password.as_ptr() as *const i8; + let temp_password_ptr = self.temp_password.as_ptr() as *const c_char; get_command_result(callback(raw_data, temp_password_ptr)) } } @@ -346,12 +347,12 @@ impl<T: Device> ConfigureOtp for Admin<T> { } fn erase_hotp_slot(&self, slot: u8) -> Result<(), CommandError> { - let temp_password_ptr = self.temp_password.as_ptr() as *const i8; + let temp_password_ptr = self.temp_password.as_ptr() as *const c_char; unsafe { get_command_result(nitrokey_sys::NK_erase_hotp_slot(slot, temp_password_ptr)) } } fn erase_totp_slot(&self, slot: u8) -> Result<(), CommandError> { - let temp_password_ptr = self.temp_password.as_ptr() as *const i8; + let temp_password_ptr = self.temp_password.as_ptr() as *const c_char; unsafe { get_command_result(nitrokey_sys::NK_erase_totp_slot(slot, temp_password_ptr)) } } } |