char *plain_cipher;
char *plain_cipher_mode;
char *plain_uuid;
+ unsigned int plain_key_size;
/* used in CRYPT_LOOPAES */
struct crypt_params_loopaes loopaes_hdr;
(*cd)->plain_hdr.hash = NULL; /* no way to get this */
(*cd)->plain_hdr.offset = dmd.offset;
(*cd)->plain_hdr.skip = dmd.iv_offset;
+ (*cd)->plain_key_size = dmd.vk->keylength;
r = crypt_parse_name_and_mode(dmd.cipher, cipher, NULL, cipher_mode);
if (!r) {
return -EINVAL;
}
+ cd->plain_key_size = volume_key_size;
cd->volume_key = crypt_alloc_volume_key(volume_key_size, NULL);
if (!cd->volume_key)
return -ENOMEM;
}
r = process_key(cd, cd->plain_hdr.hash,
- cd->volume_key->keylength,
+ cd->plain_key_size,
passphrase, passphrase_size, &vk);
if (r < 0)
goto out;
goto out;
r = process_key(cd, cd->plain_hdr.hash,
- cd->volume_key->keylength,
+ cd->plain_key_size,
passphrase_read, passphrase_size_read, &vk);
if (r < 0)
goto out;
if (!name)
return -EINVAL;
- if (!volume_key || !volume_key_size || !cd->volume_key ||
- volume_key_size != cd->volume_key->keylength) {
+ if (!volume_key || !volume_key_size || volume_key_size != cd->plain_key_size) {
log_err(cd, _("Incorrect volume key specified for plain device.\n"));
return -EINVAL;
}
int crypt_get_volume_key_size(struct crypt_device *cd)
{
- if (isPLAIN(cd->type) && cd->volume_key)
- return cd->volume_key->keylength;
+ if (isPLAIN(cd->type))
+ return cd->plain_key_size;
if (isLUKS(cd->type))
return cd->hdr.keyBytes;
FAIL_(crypt_init_by_name_and_header(&cd, CDEVICE_1, H_DEVICE),"can't init plain device by header device");
OK_(crypt_init_by_name(&cd, CDEVICE_1));
+ OK_(strcmp(cipher_mode,crypt_get_cipher_mode(cd)));
+ OK_(strcmp(cipher,crypt_get_cipher(cd)));
+ EQ_((int)key_size, crypt_get_volume_key_size(cd));
+ EQ_(params.skip, crypt_get_iv_offset(cd));
+ EQ_(params.offset, crypt_get_data_offset(cd));
OK_(crypt_deactivate(cd, CDEVICE_1));
crypt_free(cd);