From e84108e2343b5ef4aa3a518c92402b3e57d9a0e5 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac <teo@kde.org> Date: Fri, 3 Jun 2016 16:39:28 +0200 Subject: [PATCH] Add encryption support in PartitionActions::doReplacePartition. --- .../partition/core/PartitionActions.cpp | 38 ++++++++++++++----- src/modules/partition/core/PartitionActions.h | 5 ++- src/modules/partition/gui/ChoicePage.cpp | 3 +- 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index 00cf32abe0..cf7bc67a26 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - <http://github.com/calamares> === * - * Copyright 2014-2015, Teo Mrnjavac <teo@kde.org> + * Copyright 2014-2016, Teo Mrnjavac <teo@kde.org> * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -230,7 +230,10 @@ doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPass void -doReplacePartition( PartitionCoreModule* core, Device* dev, Partition* partition ) +doReplacePartition( PartitionCoreModule* core, + Device* dev, + Partition* partition, + const QString& luksPassphrase ) { cDebug() << "doReplacePartition for device" << partition->partitionPath(); @@ -250,13 +253,30 @@ doReplacePartition( PartitionCoreModule* core, Device* dev, Partition* partition } } - Partition* newPartition = KPMHelpers::createNewPartition( - partition->parent(), - *dev, - newRoles, - FileSystem::Ext4, - partition->firstSector(), - partition->lastSector() ); + Partition* newPartition = nullptr; + if ( luksPassphrase.isEmpty() ) + { + newPartition = KPMHelpers::createNewPartition( + partition->parent(), + *dev, + newRoles, + FileSystem::Ext4, + partition->firstSector(), + partition->lastSector() + ); + } + else + { + newPartition = KPMHelpers::createNewEncryptedPartition( + partition->parent(), + *dev, + newRoles, + FileSystem::Ext4, + partition->firstSector(), + partition->lastSector(), + luksPassphrase + ); + } PartitionInfo::setMountPoint( newPartition, "/" ); PartitionInfo::setFormat( newPartition, true ); diff --git a/src/modules/partition/core/PartitionActions.h b/src/modules/partition/core/PartitionActions.h index bf0559a49c..41871eb4c9 100644 --- a/src/modules/partition/core/PartitionActions.h +++ b/src/modules/partition/core/PartitionActions.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - <http://github.com/calamares> === * - * Copyright 2014-2015, Teo Mrnjavac <teo@kde.org> + * Copyright 2014-2016, Teo Mrnjavac <teo@kde.org> * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,7 +33,8 @@ void doAutopartition( PartitionCoreModule* core, void doReplacePartition( PartitionCoreModule* core, Device* dev, - Partition* partition ); + Partition* partition, + const QString& luksPassphrase = QString() ); } #endif // PARTITIONACTIONS_H diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 4884057a2a..6562e55c8b 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -661,7 +661,8 @@ ChoicePage::doReplaceSelectedPartition( const QModelIndex& current, if ( selectedPartition ) PartitionActions::doReplacePartition( m_core, selectedDevice(), - selectedPartition ); + selectedPartition, + m_encryptWidget->passphrase() ); } } ), [=] -- GitLab