&password, &passwordLen,
opt_keyfile_offset, opt_keyfile_size,
NULL, opt_timeout,
- _verify_passphrase(0),
+ _verify_passphrase(0), 0,
cd);
if (r < 0)
goto out;
r = tools_get_key(_("Enter passphrase: "),
CONST_CAST(char**)¶ms.passphrase,
¶ms.passphrase_size, 0, 0, NULL, opt_timeout,
- _verify_passphrase(0), cd);
+ _verify_passphrase(0), 0, cd);
if (r < 0)
goto out;
r = tools_get_key(_("Enter passphrase: "),
CONST_CAST(char**)¶ms.passphrase,
¶ms.passphrase_size, 0, 0, NULL, opt_timeout,
- _verify_passphrase(0), cd);
+ _verify_passphrase(0), 0, cd);
if (r < 0)
goto out;
r = tools_get_key(_("Enter LUKS passphrase: "), &password, &passwordLen,
opt_keyfile_offset, opt_keyfile_size, opt_key_file,
- opt_timeout, _verify_passphrase(1), cd);
+ opt_timeout, _verify_passphrase(1), 1, cd);
if (r < 0)
goto out;
r = tools_get_key(msg_pass, &password, &passwordLen,
keyfile_offset, keyfile_size, key_file, opt_timeout,
- _verify_passphrase(0), cd);
+ _verify_passphrase(0), 0, cd);
if(r < 0)
goto out;
&password, &passwordLen,
opt_keyfile_offset, opt_keyfile_size, opt_key_file,
opt_timeout,
- _verify_passphrase(0),
+ _verify_passphrase(0), 0,
cd);
if(r < 0)
goto out;
int r = -EINVAL, keysize = 0;
char *key = NULL;
const char *opt_new_key_file = (action_argc > 1 ? action_argv[1] : NULL);
+ char *password = NULL, *password_new = NULL;
+ size_t password_size = 0, password_new_size = 0;
struct crypt_device *cd = NULL;
if ((r = crypt_init(&cd, uuid_or_device(action_argv[0]))))
opt_key_file, opt_keyfile_size, opt_keyfile_offset,
opt_new_key_file, opt_new_keyfile_size, opt_new_keyfile_offset);
} else {
+ r = tools_get_key(_("Enter any passphrase: "),
+ &password, &password_size, 0, 0, NULL,
+ opt_timeout, _verify_passphrase(0), 0, cd);
+
+ if (r < 0)
+ goto out;
+
+ /* Check password before asking for new one */
+ r = crypt_activate_by_passphrase(cd, NULL, CRYPT_ANY_SLOT,
+ password, password_size, 0);
+ check_signal(&r);
+ if (r < 0)
+ goto out;
+
+ r = tools_get_key(_("Enter new passphrase for key slot: "),
+ &password_new, &password_new_size, 0, 0, NULL,
+ opt_timeout, _verify_passphrase(0), 1, cd);
+ if (r < 0)
+ goto out;
+
r = crypt_keyslot_add_by_passphrase(cd, opt_key_slot,
- NULL, 0, NULL, 0);
+ password, password_size,
+ password_new, password_new_size);
}
out:
- crypt_free(cd);
+ crypt_safe_free(password);
+ crypt_safe_free(password_new);
crypt_safe_free(key);
+ crypt_free(cd);
return r;
}
r = tools_get_key(_("Enter LUKS passphrase to be changed: "),
&password, &password_size,
opt_keyfile_offset, opt_keyfile_size, opt_key_file,
- opt_timeout, _verify_passphrase(0), cd);
+ opt_timeout, _verify_passphrase(0), 0, cd);
if (r < 0)
goto out;
&password_new, &password_new_size,
opt_new_keyfile_offset, opt_new_keyfile_size,
opt_new_key_file,
- opt_timeout, _verify_passphrase(0), cd);
+ opt_timeout, _verify_passphrase(0), 1, cd);
if (r < 0)
goto out;
r = tools_get_key(_("Enter LUKS passphrase: "), &password, &passwordLen,
opt_keyfile_offset, opt_keyfile_size, opt_key_file,
- opt_timeout, 0, cd);
+ opt_timeout, 0, 0, cd);
if (r < 0)
goto out;