diff --git a/Cargo.lock b/Cargo.lock index e9dd9c1..878f631 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -369,7 +369,7 @@ dependencies = [ [[package]] name = "fido2luks" -version = "0.2.8" +version = "0.2.9" dependencies = [ "ctap_hmac", "failure", diff --git a/Cargo.toml b/Cargo.toml index 5f9bf3b..765ccce 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fido2luks" -version = "0.2.8" +version = "0.2.9" authors = ["shimunn "] edition = "2018" diff --git a/src/luks.rs b/src/luks.rs index a5e04ac..c38359c 100644 --- a/src/luks.rs +++ b/src/luks.rs @@ -235,11 +235,15 @@ pub fn replace_key>( if let Some(id) = credential_id { if check_luks2(&mut device).is_ok() { let token = find_token(&mut device, slot)?.map(|(t, _)| t); + let json = serde_json::to_value(&Fido2LuksToken::new(id, slot)).unwrap(); if let Some(token) = token { - device.token_handle().json_set(TokenInput::ReplaceToken( - token, - &serde_json::to_value(&Fido2LuksToken::new(id, slot)).unwrap(), - ))?; + device + .token_handle() + .json_set(TokenInput::ReplaceToken(token, &json))?; + } else { + device + .token_handle() + .json_set(TokenInput::AddToken(&json))?; } } }