aboutsummaryrefslogtreecommitdiff
path: root/src/otp.rs
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2018-06-07 03:21:57 +0200
committerRobin Krahl <robin.krahl@ireas.org>2018-06-07 03:21:57 +0200
commitd66616a4fa71609231688119c40a3a0ec39a17ab (patch)
tree8bf35b826e5d4a1b78902310f6bff3dc0dfecc21 /src/otp.rs
parentf035857d9a9dc14c85e6bdf22cbe72528235657d (diff)
downloadnitrokey-rs-d66616a4fa71609231688119c40a3a0ec39a17ab.tar.gz
nitrokey-rs-d66616a4fa71609231688119c40a3a0ec39a17ab.tar.bz2
Implement easier CString creation
The new get_cstring method in util returns a Result<CString, CommandError>, so mast callers can just use the ? operator to unwrap the result instead of cumbersome unwrapping code.
Diffstat (limited to 'src/otp.rs')
-rw-r--r--src/otp.rs17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/otp.rs b/src/otp.rs
index 1094520..e43b1c8 100644
--- a/src/otp.rs
+++ b/src/otp.rs
@@ -1,6 +1,6 @@
use nitrokey_sys;
use std::ffi::CString;
-use util::{get_command_result, result_from_string, CommandError};
+use util::{get_command_result, get_cstring, result_from_string, CommandError};
/// Modes for one-time password generation.
#[derive(Debug, PartialEq)]
@@ -389,22 +389,19 @@ impl OtpSlotData {
impl RawOtpSlotData {
pub fn new(data: OtpSlotData) -> Result<RawOtpSlotData, CommandError> {
- let name = CString::new(data.name);
- let secret = CString::new(data.secret);
+ let name = get_cstring(data.name)?;
+ let secret = get_cstring(data.secret)?;
let use_token_id = data.token_id.is_some();
- let token_id = CString::new(data.token_id.unwrap_or_else(String::new));
- if name.is_err() || secret.is_err() || token_id.is_err() {
- return Err(CommandError::InvalidString);
- }
+ let token_id = get_cstring(data.token_id.unwrap_or_else(String::new))?;
Ok(RawOtpSlotData {
number: data.number,
- name: name.unwrap(),
- secret: secret.unwrap(),
+ name,
+ secret,
mode: data.mode,
use_enter: data.use_enter,
use_token_id,
- token_id: token_id.unwrap(),
+ token_id,
})
}
}