Implement --luks-pbkdf-force-iterations for homed
This commit is contained in:
committed by
Luca Boccassi
parent
64e7a14146
commit
b04ff66b42
@@ -314,6 +314,8 @@ void user_record_show(UserRecord *hr, bool show_full_group_info) {
|
||||
printf(" PBKDF Type: %s\n", hr->luks_pbkdf_type);
|
||||
if (hr->luks_pbkdf_hash_algorithm)
|
||||
printf(" PBKDF Hash: %s\n", hr->luks_pbkdf_hash_algorithm);
|
||||
if (hr->luks_pbkdf_force_iterations != UINT64_MAX)
|
||||
printf(" PBKDF Iters: %" PRIu64 "\n", hr->luks_pbkdf_force_iterations);
|
||||
if (hr->luks_pbkdf_time_cost_usec != UINT64_MAX)
|
||||
printf(" PBKDF Time: %s\n", FORMAT_TIMESPAN(hr->luks_pbkdf_time_cost_usec, 0));
|
||||
if (hr->luks_pbkdf_memory_cost != UINT64_MAX)
|
||||
|
||||
@@ -55,6 +55,7 @@ UserRecord* user_record_new(void) {
|
||||
.luks_discard = -1,
|
||||
.luks_offline_discard = -1,
|
||||
.luks_volume_key_size = UINT64_MAX,
|
||||
.luks_pbkdf_force_iterations = UINT64_MAX,
|
||||
.luks_pbkdf_time_cost_usec = UINT64_MAX,
|
||||
.luks_pbkdf_memory_cost = UINT64_MAX,
|
||||
.luks_pbkdf_parallel_threads = UINT64_MAX,
|
||||
@@ -1213,6 +1214,7 @@ static int dispatch_per_machine(const char *name, JsonVariant *variant, JsonDisp
|
||||
{ "luksVolumeKeySize", JSON_VARIANT_UNSIGNED, json_dispatch_uint64, offsetof(UserRecord, luks_volume_key_size), 0 },
|
||||
{ "luksPbkdfHashAlgorithm", JSON_VARIANT_STRING, json_dispatch_string, offsetof(UserRecord, luks_pbkdf_hash_algorithm), JSON_SAFE },
|
||||
{ "luksPbkdfType", JSON_VARIANT_STRING, json_dispatch_string, offsetof(UserRecord, luks_pbkdf_type), JSON_SAFE },
|
||||
{ "luksPbkdfForceIterations", JSON_VARIANT_UNSIGNED, json_dispatch_uint64, offsetof(UserRecord, luks_pbkdf_force_iterations), 0 },
|
||||
{ "luksPbkdfTimeCostUSec", JSON_VARIANT_UNSIGNED, json_dispatch_uint64, offsetof(UserRecord, luks_pbkdf_time_cost_usec), 0 },
|
||||
{ "luksPbkdfMemoryCost", JSON_VARIANT_UNSIGNED, json_dispatch_uint64, offsetof(UserRecord, luks_pbkdf_memory_cost), 0 },
|
||||
{ "luksPbkdfParallelThreads", JSON_VARIANT_UNSIGNED, json_dispatch_uint64, offsetof(UserRecord, luks_pbkdf_parallel_threads), 0 },
|
||||
@@ -1566,6 +1568,7 @@ int user_record_load(UserRecord *h, JsonVariant *v, UserRecordLoadFlags load_fla
|
||||
{ "luksVolumeKeySize", JSON_VARIANT_UNSIGNED, json_dispatch_uint64, offsetof(UserRecord, luks_volume_key_size), 0 },
|
||||
{ "luksPbkdfHashAlgorithm", JSON_VARIANT_STRING, json_dispatch_string, offsetof(UserRecord, luks_pbkdf_hash_algorithm), JSON_SAFE },
|
||||
{ "luksPbkdfType", JSON_VARIANT_STRING, json_dispatch_string, offsetof(UserRecord, luks_pbkdf_type), JSON_SAFE },
|
||||
{ "luksPbkdfForceIterations", JSON_VARIANT_UNSIGNED, json_dispatch_uint64, offsetof(UserRecord, luks_pbkdf_force_iterations), 0 },
|
||||
{ "luksPbkdfTimeCostUSec", JSON_VARIANT_UNSIGNED, json_dispatch_uint64, offsetof(UserRecord, luks_pbkdf_time_cost_usec), 0 },
|
||||
{ "luksPbkdfMemoryCost", JSON_VARIANT_UNSIGNED, json_dispatch_uint64, offsetof(UserRecord, luks_pbkdf_memory_cost), 0 },
|
||||
{ "luksPbkdfParallelThreads", JSON_VARIANT_UNSIGNED, json_dispatch_uint64, offsetof(UserRecord, luks_pbkdf_parallel_threads), 0 },
|
||||
@@ -1842,6 +1845,17 @@ const char* user_record_luks_pbkdf_type(UserRecord *h) {
|
||||
return h->luks_pbkdf_type ?: "argon2id";
|
||||
}
|
||||
|
||||
uint64_t user_record_luks_pbkdf_force_iterations(UserRecord *h) {
|
||||
assert(h);
|
||||
|
||||
/* propagate default "benchmark" mode as itself */
|
||||
if (h->luks_pbkdf_force_iterations == UINT64_MAX)
|
||||
return UINT64_MAX;
|
||||
|
||||
/* clamp everything else to actually accepted number of iterations of libcryptsetup */
|
||||
return CLAMP(h->luks_pbkdf_force_iterations, 1U, UINT32_MAX);
|
||||
}
|
||||
|
||||
uint64_t user_record_luks_pbkdf_time_cost_usec(UserRecord *h) {
|
||||
assert(h);
|
||||
|
||||
|
||||
@@ -309,6 +309,7 @@ typedef struct UserRecord {
|
||||
uint64_t luks_volume_key_size;
|
||||
char *luks_pbkdf_hash_algorithm;
|
||||
char *luks_pbkdf_type;
|
||||
uint64_t luks_pbkdf_force_iterations;
|
||||
uint64_t luks_pbkdf_time_cost_usec;
|
||||
uint64_t luks_pbkdf_memory_cost;
|
||||
uint64_t luks_pbkdf_parallel_threads;
|
||||
@@ -394,6 +395,7 @@ const char *user_record_luks_cipher(UserRecord *h);
|
||||
const char *user_record_luks_cipher_mode(UserRecord *h);
|
||||
uint64_t user_record_luks_volume_key_size(UserRecord *h);
|
||||
const char* user_record_luks_pbkdf_type(UserRecord *h);
|
||||
uint64_t user_record_luks_pbkdf_force_iterations(UserRecord *h);
|
||||
usec_t user_record_luks_pbkdf_time_cost_usec(UserRecord *h);
|
||||
uint64_t user_record_luks_pbkdf_memory_cost(UserRecord *h);
|
||||
uint64_t user_record_luks_pbkdf_parallel_threads(UserRecord *h);
|
||||
|
||||
Reference in New Issue
Block a user