mirror of
https://github.com/libvirt/libvirt.git
synced 2026-08-10 04:58:12 -05:00
encryption: Add luks parsing for storageencryption
Add parse and format of the luks/passphrase secret including tests for volume XML parsing. Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
@@ -2414,6 +2414,12 @@ qemuProcessInitPasswords(virConnectPtr conn,
|
||||
!virDomainDiskGetSource(vm->def->disks[i]))
|
||||
continue;
|
||||
|
||||
if (vm->def->disks[i]->src->encryption->format !=
|
||||
VIR_STORAGE_ENCRYPTION_FORMAT_DEFAULT &&
|
||||
vm->def->disks[i]->src->encryption->format !=
|
||||
VIR_STORAGE_ENCRYPTION_FORMAT_QCOW)
|
||||
continue;
|
||||
|
||||
VIR_FREE(secret);
|
||||
if (qemuProcessGetVolumeQcowPassphrase(conn,
|
||||
vm->def->disks[i],
|
||||
|
||||
@@ -1027,8 +1027,7 @@ virStorageBackendCreateQemuImgCheckEncryption(int format,
|
||||
}
|
||||
} else {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("qcow volume encryption unsupported with "
|
||||
"volume format %s"), type);
|
||||
_("volume encryption unsupported with format %s"), type);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -157,7 +157,12 @@ virStorageBackendProbeTarget(virStorageSourcePtr target,
|
||||
case VIR_STORAGE_FILE_QCOW2:
|
||||
(*encryption)->format = VIR_STORAGE_ENCRYPTION_FORMAT_QCOW;
|
||||
break;
|
||||
default:
|
||||
|
||||
case VIR_STORAGE_FILE_LUKS:
|
||||
(*encryption)->format = VIR_STORAGE_ENCRYPTION_FORMAT_LUKS;
|
||||
break;
|
||||
|
||||
case VIR_STORAGE_ENCRYPTION_FORMAT_LAST:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -321,6 +321,8 @@ virStorageBackendGlusterRefreshVol(virStorageBackendGlusterStatePtr state,
|
||||
if (vol->target.format == VIR_STORAGE_FILE_QCOW ||
|
||||
vol->target.format == VIR_STORAGE_FILE_QCOW2)
|
||||
vol->target.encryption->format = VIR_STORAGE_ENCRYPTION_FORMAT_QCOW;
|
||||
if (vol->target.format == VIR_STORAGE_FILE_LUKS)
|
||||
vol->target.encryption->format = VIR_STORAGE_ENCRYPTION_FORMAT_LUKS;
|
||||
}
|
||||
vol->target.features = meta->features;
|
||||
meta->features = NULL;
|
||||
|
||||
@@ -43,7 +43,7 @@ VIR_ENUM_IMPL(virStorageEncryptionSecret,
|
||||
|
||||
VIR_ENUM_IMPL(virStorageEncryptionFormat,
|
||||
VIR_STORAGE_ENCRYPTION_FORMAT_LAST,
|
||||
"default", "qcow")
|
||||
"default", "qcow", "luks")
|
||||
|
||||
static void
|
||||
virStorageEncryptionSecretFree(virStorageEncryptionSecretPtr secret)
|
||||
|
||||
@@ -48,6 +48,7 @@ typedef enum {
|
||||
/* "default" is only valid for volume creation */
|
||||
VIR_STORAGE_ENCRYPTION_FORMAT_DEFAULT = 0,
|
||||
VIR_STORAGE_ENCRYPTION_FORMAT_QCOW, /* Both qcow and qcow2 */
|
||||
VIR_STORAGE_ENCRYPTION_FORMAT_LUKS,
|
||||
|
||||
VIR_STORAGE_ENCRYPTION_FORMAT_LAST,
|
||||
} virStorageEncryptionFormatType;
|
||||
|
||||
Reference in New Issue
Block a user