mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2026-05-22 04:21:29 +00:00
Keep the NTFS kernel-driver option as a generic in-kernel NTFS path rather than an ntfs3-specific path. Add --filesystem=kernel-ntfs and -m kernelntfs routes that select a registered or loadable kernel NTFS driver and mount with -i so mount.ntfs/ntfs-3g helpers are not invoked. Preserve --filesystem=ntfs3 as a literal pin to the ntfs3 driver. Treat both ntfs3 and kernel-ntfs as mount-only selectors; volume creation continues to use filesystem type NTFS. The preference and -m kernelntfs path only select an in-kernel NTFS driver when no explicit filesystem type was supplied and blkid detects NTFS. Treat ntfs as the preferred in-kernel driver on Linux 7.1 and later, where the upstream read/write driver is expected. On earlier kernels, select ntfs only when module metadata identifies the standalone read/write driver and /sys/module confirms it loaded, avoiding ntfs3 read-only ntfs compatibility registrations. Fall back to ntfs3 otherwise, and report a generic kernel-driver error if neither supported driver is available or loadable. Rename the internal preference/config field to MountNtfsWithKernelDriver, migrate the old MountNtfsWithNtfs3 preference key, and update UI strings, CLI help, documentation, release notes, and translation placeholders accordingly. Reference: https://github.com/veracrypt/VeraCrypt/issues/1735
128 lines
5.0 KiB
C++
128 lines
5.0 KiB
C++
/*
|
|
Copyright (c) 2013-2025 AM Crypto. All rights reserved.
|
|
|
|
Governed by the Apache License 2.0 the full text of which is
|
|
contained in the file License.txt included in VeraCrypt binary and source
|
|
code distribution packages.
|
|
*/
|
|
|
|
#include "System.h"
|
|
#include "Volume/EncryptionModeXTS.h"
|
|
#ifdef WOLFCRYPT_BACKEND
|
|
#include "Volume/EncryptionModeWolfCryptXTS.h"
|
|
#endif
|
|
#include "Main/GraphicUserInterface.h"
|
|
#include "Common/PCSCException.h"
|
|
#include "Common/SecurityToken.h"
|
|
#include "WaitDialog.h"
|
|
|
|
namespace VeraCrypt
|
|
{
|
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_WAITDIALOGTHREAD_COMPLETED)
|
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_WAITDIALOG_ADMIN_PASSWORD)
|
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_WAITDIALOG_PIN)
|
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_WAITDIALOG_SHOW_MSG)
|
|
|
|
wxThread::ExitCode WaitThread::Entry()
|
|
{
|
|
m_pRoutine->Execute();
|
|
wxQueueEvent (m_pHandler, new wxCommandEvent( wxEVT_COMMAND_WAITDIALOGTHREAD_COMPLETED,0));
|
|
return (wxThread::ExitCode)0; // success
|
|
}
|
|
|
|
void WaitDialog::ThrowException(Exception* ex)
|
|
{
|
|
#define VC_CONVERT_EXCEPTION(NAME) if (dynamic_cast<NAME*> (ex)) throw (NAME&) *ex;
|
|
VC_CONVERT_EXCEPTION (PasswordIncorrect);
|
|
VC_CONVERT_EXCEPTION (PasswordKeyfilesIncorrect);
|
|
VC_CONVERT_EXCEPTION (PasswordOrKeyboardLayoutIncorrect);
|
|
VC_CONVERT_EXCEPTION (PasswordOrMountOptionsIncorrect);
|
|
VC_CONVERT_EXCEPTION (ProtectionPasswordIncorrect);
|
|
VC_CONVERT_EXCEPTION (ProtectionPasswordKeyfilesIncorrect);
|
|
VC_CONVERT_EXCEPTION (PasswordEmpty);
|
|
VC_CONVERT_EXCEPTION (PasswordTooLong);
|
|
VC_CONVERT_EXCEPTION (PasswordUTF8TooLong);
|
|
VC_CONVERT_EXCEPTION (PasswordLegacyUTF8TooLong);
|
|
VC_CONVERT_EXCEPTION (PasswordUTF8Invalid);
|
|
VC_CONVERT_EXCEPTION (UnportablePassword);
|
|
VC_CONVERT_EXCEPTION (ElevationFailed);
|
|
VC_CONVERT_EXCEPTION (RootDeviceUnavailable);
|
|
VC_CONVERT_EXCEPTION (DriveLetterUnavailable);
|
|
VC_CONVERT_EXCEPTION (DriverError);
|
|
VC_CONVERT_EXCEPTION (DeviceSectorSizeMismatch);
|
|
VC_CONVERT_EXCEPTION (EncryptedSystemRequired);
|
|
VC_CONVERT_EXCEPTION (HigherFuseVersionRequired);
|
|
VC_CONVERT_EXCEPTION (KernelCryptoServiceTestFailed);
|
|
VC_CONVERT_EXCEPTION (KernelNtfsDriverUnavailable);
|
|
VC_CONVERT_EXCEPTION (LoopDeviceSetupFailed);
|
|
VC_CONVERT_EXCEPTION (MountPointRequired);
|
|
VC_CONVERT_EXCEPTION (MountPointUnavailable);
|
|
VC_CONVERT_EXCEPTION (NoDriveLetterAvailable);
|
|
VC_CONVERT_EXCEPTION (TemporaryDirectoryFailure);
|
|
VC_CONVERT_EXCEPTION (UnsupportedSectorSizeHiddenVolumeProtection);
|
|
VC_CONVERT_EXCEPTION (UnsupportedSectorSizeNoKernelCrypto);
|
|
VC_CONVERT_EXCEPTION (VolumeAlreadyMounted);
|
|
VC_CONVERT_EXCEPTION (VolumeSlotUnavailable);
|
|
VC_CONVERT_EXCEPTION (UserInterfaceException);
|
|
VC_CONVERT_EXCEPTION (MissingArgument);
|
|
VC_CONVERT_EXCEPTION (NoItemSelected);
|
|
VC_CONVERT_EXCEPTION (StringFormatterException);
|
|
VC_CONVERT_EXCEPTION (FilesystemDismountFailed);
|
|
VC_CONVERT_EXCEPTION (ExecutedProcessFailed);
|
|
VC_CONVERT_EXCEPTION (AlreadyInitialized);
|
|
VC_CONVERT_EXCEPTION (AssertionFailed);
|
|
VC_CONVERT_EXCEPTION (ExternalException);
|
|
VC_CONVERT_EXCEPTION (InsufficientData);
|
|
VC_CONVERT_EXCEPTION (NotApplicable);
|
|
VC_CONVERT_EXCEPTION (NotImplemented);
|
|
VC_CONVERT_EXCEPTION (NotInitialized);
|
|
VC_CONVERT_EXCEPTION (ParameterIncorrect);
|
|
VC_CONVERT_EXCEPTION (ParameterTooLarge);
|
|
VC_CONVERT_EXCEPTION (PartitionDeviceRequired);
|
|
VC_CONVERT_EXCEPTION (StringConversionFailed);
|
|
VC_CONVERT_EXCEPTION (TerminalNotFound);
|
|
VC_CONVERT_EXCEPTION (TestFailed);
|
|
VC_CONVERT_EXCEPTION (TimeOut);
|
|
VC_CONVERT_EXCEPTION (UnknownException);
|
|
VC_CONVERT_EXCEPTION (UserAbort)
|
|
VC_CONVERT_EXCEPTION (CipherInitError);
|
|
VC_CONVERT_EXCEPTION (WeakKeyDetected);
|
|
VC_CONVERT_EXCEPTION (HigherVersionRequired);
|
|
VC_CONVERT_EXCEPTION (KeyfilePathEmpty);
|
|
VC_CONVERT_EXCEPTION (MissingVolumeData);
|
|
VC_CONVERT_EXCEPTION (MountedVolumeInUse);
|
|
VC_CONVERT_EXCEPTION (UnsupportedSectorSize);
|
|
VC_CONVERT_EXCEPTION (VolumeEncryptionNotCompleted);
|
|
VC_CONVERT_EXCEPTION (VolumeHostInUse);
|
|
VC_CONVERT_EXCEPTION (VolumeProtected);
|
|
VC_CONVERT_EXCEPTION (VolumeReadOnly);
|
|
VC_CONVERT_EXCEPTION (Pkcs11Exception);
|
|
VC_CONVERT_EXCEPTION (InvalidSecurityTokenKeyfilePath);
|
|
VC_CONVERT_EXCEPTION (SecurityTokenLibraryNotInitialized);
|
|
VC_CONVERT_EXCEPTION (SecurityTokenKeyfileAlreadyExists);
|
|
VC_CONVERT_EXCEPTION (SecurityTokenKeyfileNotFound);
|
|
VC_CONVERT_EXCEPTION (SystemException);
|
|
VC_CONVERT_EXCEPTION (CipherException);
|
|
VC_CONVERT_EXCEPTION (VolumeException);
|
|
VC_CONVERT_EXCEPTION (PasswordException);
|
|
|
|
VC_CONVERT_EXCEPTION (PCSCException);
|
|
VC_CONVERT_EXCEPTION (CommandAPDUNotValid);
|
|
VC_CONVERT_EXCEPTION (ExtendedAPDUNotSupported);
|
|
VC_CONVERT_EXCEPTION (ScardLibraryInitializationFailed);
|
|
VC_CONVERT_EXCEPTION (EMVUnknownCardType);
|
|
VC_CONVERT_EXCEPTION (EMVSelectAIDFailed);
|
|
VC_CONVERT_EXCEPTION (EMVIccCertNotFound);
|
|
VC_CONVERT_EXCEPTION (EMVIssuerCertNotFound);
|
|
VC_CONVERT_EXCEPTION (EMVCPLCNotFound);
|
|
VC_CONVERT_EXCEPTION (InvalidEMVPath);
|
|
VC_CONVERT_EXCEPTION (EMVKeyfileDataNotFound);
|
|
VC_CONVERT_EXCEPTION (EMVPANNotFound);
|
|
|
|
VC_CONVERT_EXCEPTION (MountPointBlocked);
|
|
VC_CONVERT_EXCEPTION (MountPointNotAllowed);
|
|
|
|
throw *ex;
|
|
}
|
|
}
|