Pass LUKS password as needed when resizing open mapping (#59)

This is the final piece which enables GParted to pass the LUKS
passphrase when resizing an open LUKS encryption mapping when
'cryptsetup resize' will prompt for it.

Closes #59 - Resize of LUKS2 encrypted file system fails with "Nothing
             to read on input"
This commit is contained in:
Mike Fleetwood 2021-04-03 00:50:06 +01:00 committed by Curtis Gedak
parent d7503fd5ed
commit f3aec1f4b1
2 changed files with 8 additions and 2 deletions

View File

@ -16,6 +16,7 @@
#include "FileSystem.h" #include "FileSystem.h"
#include "LUKS_Info.h" #include "LUKS_Info.h"
#include "PasswordRAMStore.h"
#include "Utils.h" #include "Utils.h"
#include "luks.h" #include "luks.h"
@ -158,8 +159,12 @@ bool luks::resize( const Partition & partition_new, OperationDetail & operationd
// device sector size. // device sector size.
size = "--size " + Utils::num_to_str( ( partition_new.get_byte_length() - mapping.offset ) / 512LL ) + " "; size = "--size " + Utils::num_to_str( ( partition_new.get_byte_length() - mapping.offset ) / 512LL ) + " ";
return ! execute_command( "cryptsetup -v " + size + "resize " + Glib::shell_quote( mapping.name ), const char *pw = NULL;
operationdetail, EXEC_CHECK_STATUS ); if (mapping.key_loc == KEYLOC_KeyRing)
pw = PasswordRAMStore::lookup(partition_new.uuid);
return ! execute_command("cryptsetup -v " + size + "resize " + Glib::shell_quote(mapping.name),
pw, operationdetail, EXEC_CHECK_STATUS);
} }
} //GParted } //GParted

View File

@ -40,6 +40,7 @@ test_SupportedFileSystems_LDADD = \
$(top_builddir)/src/Partition.$(OBJEXT) \ $(top_builddir)/src/Partition.$(OBJEXT) \
$(top_builddir)/src/PartitionLUKS.$(OBJEXT) \ $(top_builddir)/src/PartitionLUKS.$(OBJEXT) \
$(top_builddir)/src/PartitionVector.$(OBJEXT) \ $(top_builddir)/src/PartitionVector.$(OBJEXT) \
$(top_builddir)/src/PasswordRAMStore.$(OBJEXT) \
$(top_builddir)/src/PipeCapture.$(OBJEXT) \ $(top_builddir)/src/PipeCapture.$(OBJEXT) \
$(top_builddir)/src/Proc_Partitions_Info.$(OBJEXT) \ $(top_builddir)/src/Proc_Partitions_Info.$(OBJEXT) \
$(top_builddir)/src/ProgressBar.$(OBJEXT) \ $(top_builddir)/src/ProgressBar.$(OBJEXT) \