mirror of
https://gitlab.com/cryptsetup/cryptsetup.git
synced 2025-12-08 17:30:03 +01:00
Fix crypt_get_volume_key_size() for plain device.
git-svn-id: https://cryptsetup.googlecode.com/svn/trunk@665 36d66b0a-2a48-0410-832c-cd162a569da5
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
2011-10-27 Milan Broz <mbroz@redhat.com>
|
||||
* Fix crypt_get_volume_key_size() for plain device.
|
||||
|
||||
2011-10-25 Milan Broz <mbroz@redhat.com>
|
||||
* Print informative message in isLuks only in verbose mode.
|
||||
* Version 1.4.0.
|
||||
|
||||
14
lib/setup.c
14
lib/setup.c
@@ -56,6 +56,7 @@ struct crypt_device {
|
||||
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;
|
||||
@@ -677,6 +678,7 @@ int crypt_init_by_name_and_header(struct crypt_device **cd,
|
||||
(*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) {
|
||||
@@ -754,6 +756,7 @@ static int _crypt_format_plain(struct crypt_device *cd,
|
||||
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;
|
||||
@@ -1516,7 +1519,7 @@ int crypt_activate_by_passphrase(struct crypt_device *cd,
|
||||
}
|
||||
|
||||
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;
|
||||
@@ -1586,7 +1589,7 @@ int crypt_activate_by_keyfile(struct crypt_device *cd,
|
||||
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;
|
||||
@@ -1658,8 +1661,7 @@ int crypt_activate_by_volume_key(struct crypt_device *cd,
|
||||
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;
|
||||
}
|
||||
@@ -1976,8 +1978,8 @@ const char *crypt_get_device_name(struct crypt_device *cd)
|
||||
|
||||
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;
|
||||
|
||||
@@ -660,6 +660,11 @@ static void AddDevicePlain(void)
|
||||
|
||||
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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user