mirror of
https://gitlab.com/cryptsetup/cryptsetup.git
synced 2025-12-05 16:00:05 +01:00
Allow CRYPT_BUSY also a a valid check for active device.
In ideal system nothing should touch test devices, but to make tests more robust, we should expect that something is still scanning devices after activation. So replace all checks for CRYPT_ACTIVE to allow also CRYPT_BUSY. (Fixes some problems seen in #633)
This commit is contained in:
@@ -493,7 +493,7 @@ static void UseLuks2Device(void)
|
||||
OK_(crypt_activate_by_passphrase(cd, NULL, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0));
|
||||
OK_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0));
|
||||
FAIL_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0), "already open");
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
FAIL_(crypt_deactivate(cd, CDEVICE_1), "no such device");
|
||||
|
||||
@@ -525,7 +525,7 @@ static void UseLuks2Device(void)
|
||||
OK_(crypt_volume_key_verify(cd, key, key_size));
|
||||
OK_(crypt_activate_by_volume_key(cd, NULL, key, key_size, 0));
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
|
||||
key[1] = ~key[1];
|
||||
@@ -748,7 +748,7 @@ static void AddDeviceLuks2(void)
|
||||
OK_(crypt_format(cd, CRYPT_LUKS2, cipher, cipher_mode, NULL, key, key_size, ¶ms));
|
||||
EQ_(crypt_get_data_offset(cd), r_payload_offset);
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(t_device_size(DMDIR CDEVICE_1, &r_size_1));
|
||||
EQ_(r_size_1, TST_SECTOR_SIZE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
@@ -788,11 +788,11 @@ static void AddDeviceLuks2(void)
|
||||
CRYPT_FREE(cd);
|
||||
OK_(crypt_init_by_name_and_header(&cd, CDEVICE_1, DMDIR H_DEVICE));
|
||||
FAIL_(crypt_format(cd, CRYPT_LUKS2, cipher, cipher_mode, NULL, key, key_size, ¶ms), "Context is already formatted");
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
CRYPT_FREE(cd);
|
||||
// check active status without header
|
||||
OK_(crypt_init_by_name_and_header(&cd, CDEVICE_1, NULL));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
NULL_(crypt_get_type(cd));
|
||||
OK_(strcmp(cipher, crypt_get_cipher(cd)));
|
||||
OK_(strcmp(cipher_mode, crypt_get_cipher_mode(cd)));
|
||||
@@ -816,7 +816,7 @@ static void AddDeviceLuks2(void)
|
||||
CRYPT_FREE(cd);
|
||||
// there we've got uuid mismatch
|
||||
OK_(crypt_init_by_name_and_header(&cd, CDEVICE_1, DMDIR H_DEVICE));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
NULL_(crypt_get_type(cd));
|
||||
FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0), "Device is active");
|
||||
FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_2, key, key_size, 0), "Device is active");
|
||||
@@ -833,14 +833,14 @@ static void AddDeviceLuks2(void)
|
||||
// even with no keyslots defined it can be activated by volume key
|
||||
OK_(crypt_volume_key_verify(cd, key, key_size));
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_2, key, key_size, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_2));
|
||||
|
||||
// now with keyslot
|
||||
EQ_(7, crypt_keyslot_add_by_volume_key(cd, 7, key, key_size, passphrase, strlen(passphrase)));
|
||||
EQ_(CRYPT_SLOT_ACTIVE_LAST, crypt_keyslot_status(cd, 7));
|
||||
EQ_(7, crypt_activate_by_passphrase(cd, CDEVICE_2, CRYPT_ANY_SLOT, passphrase, strlen(passphrase), 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_2));
|
||||
|
||||
crypt_set_iteration_time(cd, 1);
|
||||
@@ -1122,7 +1122,7 @@ static void UseTempVolumes(void)
|
||||
FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_2, NULL, 0, 0), "not yet formatted");
|
||||
OK_(crypt_format(cd, CRYPT_LUKS2, "aes", "cbc-essiv:sha256", NULL, NULL, 16, NULL));
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_2, NULL, 0, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
OK_(crypt_init_by_name(&cd, CDEVICE_2));
|
||||
@@ -1208,7 +1208,7 @@ static void Luks2HeaderRestore(void)
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0));
|
||||
FAIL_(crypt_header_restore(cd, CRYPT_PLAIN, NO_REQS_LUKS2_HEADER), "Cannot restore header to PLAIN type device");
|
||||
FAIL_(crypt_header_restore(cd, CRYPT_LUKS2, NO_REQS_LUKS2_HEADER), "Cannot restore header over PLAIN type device");
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
@@ -1329,7 +1329,7 @@ static void Luks2HeaderLoad(void)
|
||||
OK_(crypt_load(cd, CRYPT_LUKS2, NULL));
|
||||
OK_(crypt_set_data_device(cd, DMDIR L_DEVICE_OK));
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(!crypt_get_metadata_device_name(cd));
|
||||
EQ_(strcmp(DMDIR H_DEVICE, crypt_get_metadata_device_name(cd)), 0);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
@@ -1453,7 +1453,7 @@ static void Luks2HeaderBackup(void)
|
||||
OK_(crypt_header_restore(cd, CRYPT_LUKS2, BACKUP_FILE));
|
||||
OK_(crypt_load(cd, CRYPT_LUKS2, NULL));
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
EQ_(0, crypt_header_is_detached(cd));
|
||||
CRYPT_FREE(cd);
|
||||
@@ -1463,7 +1463,7 @@ static void Luks2HeaderBackup(void)
|
||||
OK_(crypt_load(cd, CRYPT_LUKS2, NULL));
|
||||
OK_(crypt_set_data_device(cd, DMDIR L_DEVICE_OK));
|
||||
EQ_(crypt_activate_by_passphrase(cd, CDEVICE_1, 0, passphrase, strlen(passphrase), 0), 0);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
EQ_(1, crypt_header_is_detached(cd));
|
||||
CRYPT_FREE(cd);
|
||||
@@ -1472,7 +1472,7 @@ static void Luks2HeaderBackup(void)
|
||||
OK_(crypt_load(cd, CRYPT_LUKS2, NULL));
|
||||
OK_(crypt_set_data_device(cd, DMDIR L_DEVICE_OK));
|
||||
EQ_(crypt_activate_by_passphrase(cd, CDEVICE_1, 7, passphrase, strlen(passphrase), 0), 7);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
@@ -1484,7 +1484,7 @@ static void Luks2HeaderBackup(void)
|
||||
OK_(crypt_load(cd, CRYPT_LUKS2, NULL));
|
||||
OK_(crypt_set_data_device(cd, DMDIR L_DEVICE_OK));
|
||||
EQ_(crypt_activate_by_passphrase(cd, CDEVICE_1, 0, passphrase, strlen(passphrase), 0), 0);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
@@ -1492,7 +1492,7 @@ static void Luks2HeaderBackup(void)
|
||||
OK_(crypt_load(cd, CRYPT_LUKS2, NULL));
|
||||
OK_(crypt_set_data_device(cd, DMDIR L_DEVICE_OK));
|
||||
EQ_(crypt_activate_by_passphrase(cd, CDEVICE_1, 7, passphrase, strlen(passphrase), 0), 7);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
@@ -1556,7 +1556,7 @@ static void ResizeDeviceLuks2(void)
|
||||
FAIL_(crypt_resize(cd, CDEVICE_1, 1001), "Device too small");
|
||||
if (!t_device_size(DMDIR CDEVICE_1, &r_size))
|
||||
EQ_(1000, r_size >> TST_SECTOR_SHIFT);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
@@ -1576,7 +1576,7 @@ static void ResizeDeviceLuks2(void)
|
||||
FAIL_(crypt_resize(cd, CDEVICE_1, 1001), "Device too small");
|
||||
if (!t_device_size(DMDIR CDEVICE_1, &r_size))
|
||||
EQ_(1000, r_size >> TST_SECTOR_SHIFT);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
@@ -3101,7 +3101,7 @@ static void Luks2ActivateByKeyring(void)
|
||||
OK_(crypt_load(cd, CRYPT_LUKS2, NULL));
|
||||
EQ_(crypt_activate_by_keyring(cd, NULL, KEY_DESC_TEST0, 0, 0), 0);
|
||||
EQ_(crypt_activate_by_keyring(cd, CDEVICE_1, KEY_DESC_TEST0, 0, 0), 0);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
FAIL_(crypt_activate_by_keyring(cd, CDEVICE_1, KEY_DESC_TEST0, 0, 0), "already open");
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_INACTIVE);
|
||||
@@ -3109,7 +3109,7 @@ static void Luks2ActivateByKeyring(void)
|
||||
EQ_(crypt_activate_by_keyring(cd, NULL, KEY_DESC_TEST1, 2, 0), 2);
|
||||
FAIL_(crypt_activate_by_keyring(cd, CDEVICE_1, KEY_DESC_TEST1, 1, 0), "Keyslot not assigned to volume");
|
||||
EQ_(crypt_activate_by_keyring(cd, CDEVICE_1, KEY_DESC_TEST1, 2, 0), 2);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
EQ_(crypt_activate_by_keyring(cd, CDEVICE_1, KEY_DESC_TEST1, CRYPT_ANY_SLOT, 0), 2);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
@@ -3439,7 +3439,7 @@ static void Luks2Requirements(void)
|
||||
/* crypt_resize (restricted) */
|
||||
FAIL_((r = crypt_resize(cd, CDEVICE_1, 1)), "Unmet requirements detected");
|
||||
EQ_(r, -ETXTBSY);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
|
||||
/* crypt_get_active_device (unrestricted) */
|
||||
OK_(crypt_get_active_device(cd, CDEVICE_1, &cad));
|
||||
@@ -3487,7 +3487,7 @@ static void Luks2Integrity(void)
|
||||
|
||||
EQ_(crypt_keyslot_add_by_volume_key(cd, 7, NULL, key_size, passphrase, strlen(passphrase)), 7);
|
||||
EQ_(crypt_activate_by_passphrase(cd, CDEVICE_2, 7, passphrase, strlen(passphrase) ,0), 7);
|
||||
EQ_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
OK_(crypt_init_by_name_and_header(&cd, CDEVICE_2, NULL));
|
||||
|
||||
@@ -357,7 +357,7 @@ static void AddDevicePlain(void)
|
||||
OK_(crypt_format(cd, CRYPT_PLAIN, cipher, cipher_mode, NULL, NULL, key_size, NULL));
|
||||
FAIL_(crypt_activate_by_volume_key(cd, NULL, key, key_size, 0), "cannot verify key with plain");
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
@@ -379,7 +379,7 @@ static void AddDevicePlain(void)
|
||||
OK_(crypt_init(&cd, DEVICE_1));
|
||||
OK_(crypt_format(cd, CRYPT_PLAIN, cipher, cipher_mode, NULL, NULL, key_size, ¶ms));
|
||||
OK_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, passphrase, strlen(passphrase), 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
snprintf(path, sizeof(path), "%s/%s", crypt_get_dir(), CDEVICE_1);
|
||||
if (t_device_size(path, &r_size) >= 0)
|
||||
EQ_(r_size >> TST_SECTOR_SHIFT, 1);
|
||||
@@ -428,7 +428,7 @@ static void AddDevicePlain(void)
|
||||
crypt_init(&cd, DEVICE_1);
|
||||
OK_(crypt_format(cd, CRYPT_PLAIN, cipher, cipher_mode, NULL, NULL, key_size, ¶ms));
|
||||
OK_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, passphrase, strlen(passphrase), 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
if (!t_device_size(path, &r_size))
|
||||
EQ_((r_size >> TST_SECTOR_SHIFT),params.size);
|
||||
OK_(crypt_deactivate(cd,CDEVICE_1));
|
||||
@@ -447,7 +447,7 @@ static void AddDevicePlain(void)
|
||||
OK_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, passphrase, strlen(passphrase), 0));
|
||||
|
||||
// device status check
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
snprintf(path, sizeof(path), "%s/%s", crypt_get_dir(), CDEVICE_1);
|
||||
fd = open(path, O_RDONLY);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_BUSY);
|
||||
@@ -493,7 +493,7 @@ static void AddDevicePlain(void)
|
||||
OK_(strcmp(crypt_get_type(cd),CRYPT_PLAIN));
|
||||
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
|
||||
// crypt_resize()
|
||||
OK_(crypt_resize(cd, CDEVICE_1, size >> TST_SECTOR_SHIFT)); // same size
|
||||
@@ -532,7 +532,7 @@ static void AddDevicePlain(void)
|
||||
FAIL_(crypt_resize(cd,CDEVICE_1,params.size + 11), "new device size overlaps backing device"); // with respect to offset
|
||||
if (!t_device_size(path,&r_size))
|
||||
EQ_(r_size >> TST_SECTOR_SHIFT, params.size + 10);
|
||||
EQ_(crypt_status(cd,CDEVICE_1),CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd,CDEVICE_1),CRYPT_ACTIVE);
|
||||
fd = open(path, O_RDONLY);
|
||||
NOTFAIL_(fd, "Bad loop device.");
|
||||
close(fd);
|
||||
@@ -556,9 +556,9 @@ static void AddDevicePlain(void)
|
||||
|
||||
// suspend/resume tests
|
||||
FAIL_(crypt_suspend(cd,CDEVICE_1),"cannot suspend plain device");
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
FAIL_(crypt_resume_by_passphrase(cd,CDEVICE_1,CRYPT_ANY_SLOT,passphrase, strlen(passphrase)),"cannot resume plain device");
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
|
||||
// retrieve volume key check
|
||||
memset(key2, 0, key_size);
|
||||
@@ -580,7 +580,7 @@ static void AddDevicePlain(void)
|
||||
OK_(prepare_keyfile(KEYFILE2, KEY2, strlen(KEY2)));
|
||||
FAIL_(crypt_activate_by_keyfile(cd, NULL, CRYPT_ANY_SLOT, KEYFILE1, 0, 0), "cannot verify key with plain");
|
||||
EQ_(0, crypt_activate_by_keyfile(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEYFILE1, 0, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
FAIL_(crypt_activate_by_keyfile_offset(cd, NULL, CRYPT_ANY_SLOT, KEYFILE1, 0, strlen(KEY1) + 1, 0), "cannot seek");
|
||||
FAIL_(crypt_activate_by_keyfile_device_offset(cd, NULL, CRYPT_ANY_SLOT, KEYFILE1, 0, strlen(KEY1) + 1, 0), "cannot seek");
|
||||
@@ -632,7 +632,7 @@ static void CallbacksTest(void)
|
||||
EQ_(new_messages, 0);
|
||||
OK_(crypt_format(cd, CRYPT_PLAIN, cipher, cipher_mode, NULL, NULL, key_size, ¶ms));
|
||||
OK_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, passphrase, strlen(passphrase), 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
EQ_(new_messages, 0);
|
||||
FAIL_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, passphrase, strlen(passphrase), 0), "already exists");
|
||||
EQ_(new_messages, 1);
|
||||
@@ -652,7 +652,7 @@ static void UseLuksDevice(void)
|
||||
OK_(crypt_activate_by_passphrase(cd, NULL, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0));
|
||||
OK_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0));
|
||||
FAIL_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0), "already open");
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
FAIL_(crypt_deactivate(cd, CDEVICE_1), "no such device");
|
||||
|
||||
@@ -667,7 +667,7 @@ static void UseLuksDevice(void)
|
||||
OK_(crypt_volume_key_verify(cd, key, key_size));
|
||||
OK_(crypt_activate_by_volume_key(cd, NULL, key, key_size, 0));
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
|
||||
key[1] = ~key[1];
|
||||
@@ -876,7 +876,7 @@ static void AddDeviceLuks(void)
|
||||
OK_(crypt_format(cd, CRYPT_LUKS1, cipher, cipher_mode, NULL, key, key_size, ¶ms));
|
||||
EQ_(crypt_get_data_offset(cd), params.data_alignment);
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(t_device_size(DMDIR CDEVICE_1, &r_size_1));
|
||||
EQ_(r_size_1, TST_SECTOR_SIZE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
@@ -903,11 +903,11 @@ static void AddDeviceLuks(void)
|
||||
CRYPT_FREE(cd);
|
||||
OK_(crypt_init_by_name_and_header(&cd, CDEVICE_1, DMDIR H_DEVICE));
|
||||
FAIL_(crypt_format(cd, CRYPT_LUKS1, cipher, cipher_mode, NULL, key, key_size, ¶ms), "Context is already formatted");
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
CRYPT_FREE(cd);
|
||||
// check active status without header
|
||||
OK_(crypt_init_by_name_and_header(&cd, CDEVICE_1, NULL));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
NULL_(crypt_get_type(cd));
|
||||
OK_(strcmp(cipher, crypt_get_cipher(cd)));
|
||||
OK_(strcmp(cipher_mode, crypt_get_cipher_mode(cd)));
|
||||
@@ -931,7 +931,7 @@ static void AddDeviceLuks(void)
|
||||
CRYPT_FREE(cd);
|
||||
// there we've got uuid mismatch
|
||||
OK_(crypt_init_by_name_and_header(&cd, CDEVICE_1, DMDIR H_DEVICE));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
NULL_(crypt_get_type(cd));
|
||||
FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0), "Device is active");
|
||||
FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_2, key, key_size, 0), "Device is active");
|
||||
@@ -948,14 +948,14 @@ static void AddDeviceLuks(void)
|
||||
// even with no keyslots defined it can be activated by volume key
|
||||
OK_(crypt_volume_key_verify(cd, key, key_size));
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_2, key, key_size, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_2));
|
||||
|
||||
// now with keyslot
|
||||
EQ_(7, crypt_keyslot_add_by_volume_key(cd, 7, key, key_size, passphrase, strlen(passphrase)));
|
||||
EQ_(CRYPT_SLOT_ACTIVE_LAST, crypt_keyslot_status(cd, 7));
|
||||
EQ_(7, crypt_activate_by_passphrase(cd, CDEVICE_2, CRYPT_ANY_SLOT, passphrase, strlen(passphrase), 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_2));
|
||||
|
||||
crypt_set_iteration_time(cd, 1);
|
||||
@@ -1058,7 +1058,7 @@ static void UseTempVolumes(void)
|
||||
FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_2, NULL, 0, 0), "not yet formatted");
|
||||
OK_(crypt_format(cd, CRYPT_LUKS1, "aes", "cbc-essiv:sha256", NULL, NULL, 16, NULL));
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_2, NULL, 0, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
OK_(crypt_init_by_name(&cd, CDEVICE_2));
|
||||
@@ -1100,7 +1100,7 @@ static void UseTempVolumes(void)
|
||||
FAIL_(crypt_volume_key_verify(cd, "xxx", 3), "cannot verify key with plain");
|
||||
FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_2, "xxx", 3, 0), "wrong key length");
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_2, "volumekeyvolumek", 16, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_2), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_2));
|
||||
CRYPT_FREE(cd);
|
||||
}
|
||||
@@ -1136,7 +1136,7 @@ static void LuksHeaderRestore(void)
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0));
|
||||
FAIL_(crypt_header_restore(cd, CRYPT_PLAIN, VALID_HEADER), "Cannot restore header to PLAIN type device");
|
||||
FAIL_(crypt_header_restore(cd, CRYPT_LUKS1, VALID_HEADER), "Cannot restore header over PLAIN type device");
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
@@ -1242,7 +1242,7 @@ static void LuksHeaderLoad(void)
|
||||
OK_(crypt_load(cd, CRYPT_LUKS1, NULL));
|
||||
OK_(crypt_set_data_device(cd, DMDIR L_DEVICE_OK));
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(!crypt_get_metadata_device_name(cd));
|
||||
EQ_(strcmp(DMDIR H_DEVICE, crypt_get_metadata_device_name(cd)), 0);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
@@ -1346,7 +1346,7 @@ static void LuksHeaderBackup(void)
|
||||
OK_(crypt_header_restore(cd, CRYPT_LUKS1, BACKUP_FILE));
|
||||
OK_(crypt_load(cd, CRYPT_LUKS1, NULL));
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
EQ_(0, crypt_header_is_detached(cd));
|
||||
CRYPT_FREE(cd);
|
||||
@@ -1356,7 +1356,7 @@ static void LuksHeaderBackup(void)
|
||||
OK_(crypt_load(cd, CRYPT_LUKS1, NULL));
|
||||
OK_(crypt_set_data_device(cd, DMDIR L_DEVICE_OK));
|
||||
EQ_(crypt_activate_by_passphrase(cd, CDEVICE_1, 0, passphrase, strlen(passphrase), 0), 0);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
EQ_(1, crypt_header_is_detached(cd));
|
||||
CRYPT_FREE(cd);
|
||||
@@ -1365,7 +1365,7 @@ static void LuksHeaderBackup(void)
|
||||
OK_(crypt_load(cd, CRYPT_LUKS1, NULL));
|
||||
OK_(crypt_set_data_device(cd, DMDIR L_DEVICE_OK));
|
||||
EQ_(crypt_activate_by_passphrase(cd, CDEVICE_1, 7, passphrase, strlen(passphrase), 0), 7);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
@@ -1377,7 +1377,7 @@ static void LuksHeaderBackup(void)
|
||||
OK_(crypt_load(cd, CRYPT_LUKS1, NULL));
|
||||
OK_(crypt_set_data_device(cd, DMDIR L_DEVICE_OK));
|
||||
EQ_(crypt_activate_by_passphrase(cd, CDEVICE_1, 0, passphrase, strlen(passphrase), 0), 0);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
@@ -1385,7 +1385,7 @@ static void LuksHeaderBackup(void)
|
||||
OK_(crypt_load(cd, CRYPT_LUKS1, NULL));
|
||||
OK_(crypt_set_data_device(cd, DMDIR L_DEVICE_OK));
|
||||
EQ_(crypt_activate_by_passphrase(cd, CDEVICE_1, 7, passphrase, strlen(passphrase), 0), 7);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
@@ -1430,7 +1430,7 @@ static void ResizeDeviceLuks(void)
|
||||
FAIL_(crypt_resize(cd, CDEVICE_1, 1001), "Device too small");
|
||||
if (!t_device_size(DMDIR CDEVICE_1, &r_size))
|
||||
EQ_(1000, r_size >> TST_SECTOR_SHIFT);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
@@ -1450,7 +1450,7 @@ static void ResizeDeviceLuks(void)
|
||||
FAIL_(crypt_resize(cd, CDEVICE_1, 1001), "Device too small");
|
||||
if (!t_device_size(DMDIR CDEVICE_1, &r_size))
|
||||
EQ_(1000, r_size >> TST_SECTOR_SHIFT);
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
@@ -1785,7 +1785,7 @@ static void TcryptTest(void)
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
OK_(crypt_init_by_name_and_header(&cd, CDEVICE_1, NULL));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
|
||||
FAIL_(crypt_volume_key_get(cd, CRYPT_ANY_SLOT, key, &key_size, NULL, 0), "Need crypt_load");
|
||||
|
||||
@@ -1872,7 +1872,7 @@ static void IntegrityTest(void)
|
||||
params.tag_size = 4;
|
||||
OK_(crypt_load(cd, CRYPT_INTEGRITY, ¶ms));
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, NULL, 0, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
GE_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
CRYPT_FREE(cd);
|
||||
|
||||
memset(&ip, 0, sizeof(ip));
|
||||
|
||||
@@ -61,6 +61,7 @@ void check_ok(int status, int line, const char *func);
|
||||
void check_ok_return(int status, int line, const char *func);
|
||||
void check_ko(int status, int line, const char *func);
|
||||
void check_equal(int line, const char *func, int64_t x, int64_t y);
|
||||
void check_ge_equal(int line, const char *func, int64_t x, int64_t y);
|
||||
void check_null(int line, const char *func, const void *x);
|
||||
void check_notnull(int line, const char *func, const void *x);
|
||||
void xlog(const char *msg, const char *tst, const char *func, int line, const char *txt);
|
||||
@@ -79,6 +80,10 @@ void xlog(const char *msg, const char *tst, const char *func, int line, const ch
|
||||
xlog("(equal) ", #x " == " #y, __FUNCTION__, __LINE__, NULL); \
|
||||
if (_x != _y) check_equal(__LINE__, __FUNCTION__, _x, _y); \
|
||||
} while(0)
|
||||
#define GE_(x, y) do { int64_t _x = (x), _y = (y); \
|
||||
xlog("(g_equal)", #x " == " #y, __FUNCTION__, __LINE__, NULL); \
|
||||
if (_x < _y) check_ge_equal(__LINE__, __FUNCTION__, _x, _y); \
|
||||
} while(0)
|
||||
#define NULL_(x) do { xlog("(null) ", #x, __FUNCTION__, __LINE__, NULL); \
|
||||
check_null(__LINE__, __FUNCTION__, (x)); \
|
||||
} while(0)
|
||||
|
||||
@@ -105,6 +105,14 @@ void check_equal(int line, const char *func, int64_t x, int64_t y)
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
void check_ge_equal(int line, const char *func, int64_t x, int64_t y)
|
||||
{
|
||||
printf("FAIL line %d [%s]: expected greater or equal values differs: %"
|
||||
PRIi64 " < %" PRIi64 "\n", line, func, x, y);
|
||||
_cleanup();
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
void check_null(int line, const char *func, const void *x)
|
||||
{
|
||||
if (x) {
|
||||
|
||||
Reference in New Issue
Block a user