2023-08-24 17:39:00 +01:00
# include "stdafx.h"
# include "BoxImageWindow.h"
# include "SandMan.h"
# include "../MiscHelpers/Common/Settings.h"
# include "../MiscHelpers/Common/Common.h"
CBoxImageWindow : : CBoxImageWindow ( EAction Action , QWidget * parent )
: QDialog ( parent )
{
Qt : : WindowFlags flags = windowFlags ( ) ;
flags | = Qt : : CustomizeWindowHint ;
//flags &= ~Qt::WindowContextHelpButtonHint;
//flags &= ~Qt::WindowSystemMenuHint;
//flags &= ~Qt::WindowMinMaxButtonsHint;
//flags |= Qt::WindowMinimizeButtonHint;
//flags &= ~Qt::WindowCloseButtonHint;
flags & = ~ Qt : : WindowContextHelpButtonHint ;
//flags &= ~Qt::WindowSystemMenuHint;
setWindowFlags ( flags ) ;
ui . setupUi ( this ) ;
this - > setWindowTitle ( tr ( " Sandboxie-Plus - Password Entry " ) ) ;
m_Action = Action ;
connect ( ui . chkShow , SIGNAL ( clicked ( bool ) ) , this , SLOT ( OnShowPassword ( ) ) ) ;
connect ( ui . txtImageSize , SIGNAL ( textChanged ( const QString & ) ) , this , SLOT ( OnImageSize ( ) ) ) ;
connect ( ui . buttonBox , SIGNAL ( accepted ( ) ) , SLOT ( CheckPassword ( ) ) ) ;
connect ( ui . buttonBox , SIGNAL ( rejected ( ) ) , SLOT ( reject ( ) ) ) ;
switch ( m_Action )
{
case eNew :
ui . lblInfo - > setText ( tr ( " Creating new box image, please enter a secure password, and choose a disk image size. " ) ) ;
ui . lblIcon - > setPixmap ( QPixmap : : fromImage ( QImage ( " :/Actions/LockClosed.png " ) ) ) ;
break ;
case eMount :
ui . lblInfo - > setText ( tr ( " Enter Box Image password: " ) ) ;
ui . lblIcon - > setPixmap ( QPixmap : : fromImage ( QImage ( " :/Actions/LockOpen.png " ) ) ) ;
break ;
case eChange :
ui . lblInfo - > setText ( tr ( " Enter Box Image passwords: " ) ) ;
ui . lblIcon - > setPixmap ( QPixmap : : fromImage ( QImage ( " :/Actions/LockClosed.png " ) ) ) ;
2023-09-10 10:23:59 +01:00
break ;
2023-08-24 17:39:00 +01:00
case eExport :
ui . lblInfo - > setText ( tr ( " Enter Encryption passwords for archive export: " ) ) ;
ui . lblIcon - > setPixmap ( QPixmap : : fromImage ( QImage ( " :/Actions/LockClosed.png " ) ) ) ;
2023-09-10 10:23:59 +01:00
break ;
2023-08-24 17:39:00 +01:00
case eImport :
ui . lblInfo - > setText ( tr ( " Enter Encryption passwords for archive import: " ) ) ;
ui . lblIcon - > setPixmap ( QPixmap : : fromImage ( QImage ( " :/Actions/LockOpen.png " ) ) ) ;
break ;
}
if ( m_Action = = eNew | | m_Action = = eExport )
ui . txtNewPassword - > setFocus ( ) ;
else
ui . txtPassword - > setFocus ( ) ;
if ( m_Action = = eNew | | m_Action = = eImport )
ui . txtImageSize - > setText ( QString : : number ( 2 * 1024 * 1024 ) ) ; // suggest 2GB
else {
ui . lblImageSize - > setVisible ( false ) ;
ui . txtImageSize - > setVisible ( false ) ;
ui . lblImageSizeKb - > setVisible ( false ) ;
}
if ( m_Action = = eNew | | m_Action = = eExport ) {
ui . lblPassword - > setVisible ( false ) ;
ui . txtPassword - > setVisible ( false ) ;
}
if ( m_Action = = eMount | | m_Action = = eImport ) {
ui . lblNewPassword - > setVisible ( false ) ;
ui . txtNewPassword - > setVisible ( false ) ;
ui . lblRepeatPassword - > setVisible ( false ) ;
ui . txtRepeatPassword - > setVisible ( false ) ;
}
//if (!bNew) {
ui . lblCipher - > setVisible ( false ) ;
ui . cmbCipher - > setVisible ( false ) ;
//}
ui . cmbCipher - > addItem ( " AES " , 0 ) ;
ui . cmbCipher - > addItem ( " Twofish " , 1 ) ;
ui . cmbCipher - > addItem ( " Serpent " , 2 ) ;
ui . cmbCipher - > addItem ( " AES-Twofish " , 3 ) ;
ui . cmbCipher - > addItem ( " Twofish-Serpent " , 4 ) ;
ui . cmbCipher - > addItem ( " Serpent-AES " , 5 ) ;
ui . cmbCipher - > addItem ( " AES-Twofish-Serpent " , 6 ) ;
2024-03-23 10:55:45 +00:00
if ( m_Action ! = eMount ) {
2023-08-24 17:39:00 +01:00
ui . chkProtect - > setVisible ( false ) ;
2024-03-23 10:55:45 +00:00
ui . chkAutoLock - > setVisible ( false ) ;
}
2024-03-24 09:08:38 +00:00
2023-08-24 17:39:00 +01:00
//restoreGeometry(theConf->GetBlob("BoxImageWindow/Window_Geometry"));
}
2024-03-24 09:08:38 +00:00
void CBoxImageWindow : : SetForce ( bool force )
{
2024-03-23 12:33:14 +00:00
ui . chkProtect - > setEnabled ( ! force ) ;
ui . chkProtect - > setChecked ( true ) ;
ui . chkAutoLock - > setChecked ( true ) ;
ui . chkAutoLock - > setEnabled ( ! force ) ;
}
2024-03-24 09:08:38 +00:00
2023-08-24 17:39:00 +01:00
CBoxImageWindow : : ~ CBoxImageWindow ( )
{
//theConf->SetBlob("BoxImageWindow/Window_Geometry", saveGeometry());
}
void CBoxImageWindow : : OnShowPassword ( )
{
ui . txtPassword - > setEchoMode ( ui . chkShow - > isChecked ( ) ? QLineEdit : : Normal : QLineEdit : : Password ) ;
ui . txtNewPassword - > setEchoMode ( ui . chkShow - > isChecked ( ) ? QLineEdit : : Normal : QLineEdit : : Password ) ;
ui . txtRepeatPassword - > setEchoMode ( ui . chkShow - > isChecked ( ) ? QLineEdit : : Normal : QLineEdit : : Password ) ;
}
void CBoxImageWindow : : OnImageSize ( )
{
ui . lblImageSizeKb - > setText ( tr ( " kilobytes (%1) " ) . arg ( FormatSize ( GetImageSize ( ) ) ) ) ;
}
void CBoxImageWindow : : CheckPassword ( )
{
if ( m_Action = = eMount | | m_Action = = eImport ) {
m_Password = ui . txtPassword - > text ( ) ;
}
else {
if ( ui . txtNewPassword - > text ( ) ! = ui . txtRepeatPassword - > text ( ) ) {
QMessageBox : : critical ( this , " Sandboxie-Plus " , tr ( " Passwords don't match!!! " ) ) ;
return ;
}
if ( ui . txtNewPassword - > text ( ) . length ( ) < 20 ) {
if ( QMessageBox : : warning ( this , " Sandboxie-Plus " , tr ( " WARNING: Short passwords are easy to crack using brute force techniques! \n \n "
" It is recommended to choose a password consisting of 20 or more characters. Are you sure you want to use a short password? " )
, QMessageBox : : Yes , QMessageBox : : No ) ! = QMessageBox : : Yes )
return ;
}
2024-02-24 09:40:10 +00:00
if ( ui . txtNewPassword - > text ( ) . length ( ) > 128 ) {
QMessageBox : : warning ( this , " Sandboxie-Plus " , tr ( " The password is constrained to a maximum length of 128 characters. \n "
" This length permits approximately 384 bits of entropy with a passphrase composed of actual English words, \n "
" increases to 512 bits with the application of Leet (L337) speak modifications, and exceeds 768 bits when composed of entirely random printable ASCII characters. " )
, QMessageBox : : Ok ) ;
return ;
}
2023-08-24 17:39:00 +01:00
if ( m_Action = = eNew | | m_Action = = eExport )
m_Password = ui . txtNewPassword - > text ( ) ;
else if ( m_Action = = eChange ) {
m_Password = ui . txtPassword - > text ( ) ;
m_NewPassword = ui . txtNewPassword - > text ( ) ;
}
}
if ( m_Action = = eNew | | m_Action = = eImport ) {
if ( GetImageSize ( ) < 128 * 1024 * 1024 ) { // ask for 256 mb but silently accept >= 128 mb
QMessageBox : : critical ( this , " Sandboxie-Plus " , tr ( " The Box Disk Image must be at least 256 MB in size, 2GB are recommended. " ) ) ;
SetImageSize ( 256 * 1024 * 1024 ) ;
return ;
}
}
accept ( ) ;
2024-03-23 10:55:45 +00:00
}