mirror of
https://github.com/veracrypt/VeraCrypt
synced 2024-11-12 22:23:39 +01:00
Linux/MacOSX: take into account keyfiles when comparing Outer and Hidden volumes passwords
This commit is contained in:
parent
a29c750030
commit
b4465b80e6
@ -774,16 +774,31 @@ namespace VeraCrypt
|
|||||||
Kdf = page->GetPkcs5Kdf();
|
Kdf = page->GetPkcs5Kdf();
|
||||||
Keyfiles = page->GetKeyfiles();
|
Keyfiles = page->GetKeyfiles();
|
||||||
|
|
||||||
|
if (forward && !OuterVolume && SelectedVolumeType == VolumeType::Hidden)
|
||||||
|
{
|
||||||
|
shared_ptr <VolumePassword> hiddenPassword;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
hiddenPassword = Keyfile::ApplyListToPassword (Keyfiles, Password);
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
hiddenPassword = Password;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if Outer and Hidden passwords are the same
|
||||||
|
if ( (hiddenPassword && !hiddenPassword->IsEmpty() && OuterPassword && !OuterPassword->IsEmpty() && (*(OuterPassword.get()) == *(hiddenPassword.get())))
|
||||||
|
||
|
||||||
|
((!hiddenPassword || hiddenPassword->IsEmpty()) && (!OuterPassword || OuterPassword->IsEmpty()))
|
||||||
|
)
|
||||||
|
{
|
||||||
|
Gui->ShowError (_("The Hidden volume password can not be identical to the Outer volume password"));
|
||||||
|
return GetCurrentStep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (forward && Password && !Password->IsEmpty())
|
if (forward && Password && !Password->IsEmpty())
|
||||||
{
|
{
|
||||||
if (!OuterVolume && SelectedVolumeType == VolumeType::Hidden)
|
|
||||||
{
|
|
||||||
if (*(OuterPassword.get()) == *(Password.get()))
|
|
||||||
{
|
|
||||||
Gui->ShowError (_("The Hidden volume password can not be identical to the Outer volume password"));
|
|
||||||
return GetCurrentStep();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (Password->Size() < VolumePassword::WarningSizeThreshold)
|
if (Password->Size() < VolumePassword::WarningSizeThreshold)
|
||||||
{
|
{
|
||||||
if (!Gui->AskYesNo (LangString["PASSWORD_LENGTH_WARNING"], false, true))
|
if (!Gui->AskYesNo (LangString["PASSWORD_LENGTH_WARNING"], false, true))
|
||||||
@ -1088,8 +1103,15 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
MaxHiddenVolumeSize -= MaxHiddenVolumeSize % outerVolume->GetSectorSize(); // Must be a multiple of the sector size
|
MaxHiddenVolumeSize -= MaxHiddenVolumeSize % outerVolume->GetSectorSize(); // Must be a multiple of the sector size
|
||||||
|
|
||||||
// remember Outer password in order to be able to compare it with Hidden password
|
// remember Outer password and keyfiles in order to be able to compare it with those of Hidden volume
|
||||||
OuterPassword = Password;
|
try
|
||||||
|
{
|
||||||
|
OuterPassword = Keyfile::ApplyListToPassword (Keyfiles, Password);
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
OuterPassword = Password;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (exception &e)
|
catch (exception &e)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user