VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/ExpandVolume/InitDataArea.h
blob: 49958a0069890da9cbbe316fcaecae41630818a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
 Derived from source code of TrueCrypt 7.1a, which is
 Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
 by the TrueCrypt License 3.0, and also derived from source code of extcv which
 is Copyright (c) 2009-2010 by Kih-Oskh or Copyright (c) 2012-2013 Josef Schneider
 <josef@netpage.dk>

 Modifications and additions to the original source code (contained in this file)
 and all other portions of this file are Copyright (c) 2013-2016 IDRIX
 and are 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.
*/

#ifndef TC_HEADER_InitDataArea
#define TC_HEADER_InitDataArea

#ifdef __cplusplus
extern "C" {
#endif

void SetFormatSectorSize (uint32 sector_size);
int FormatNoFs (HWND hwndDlg, unsigned __int64 startSector, __int64 num_sectors, void *dev, PCRYPTO_INFO cryptoInfo, BOOL quickFormat);
BOOL WriteSector ( void *dev , char *sector , char *write_buf , int *write_buf_cnt , __int64 *nSecNo , PCRYPTO_INFO cryptoInfo );
BOOL FlushFormatWriteBuffer (void *dev, char *write_buf, int *write_buf_cnt, __int64 *nSecNo, PCRYPTO_INFO cryptoInfo);
BOOL StartFormatWriteThread ();
void StopFormatWriteThread ();


#ifdef __cplusplus
}
#endif

#endif // TC_HEADER_InitDataArea
>&password) { Set (password.Ptr (), password.Size ()); } VolumePassword (const VolumePassword &password) { Set (password); } virtual ~VolumePassword (); bool operator== (const VolumePassword &other) const { return ConstBufferPtr (DataPtr(), Size()).IsDataEqual (ConstBufferPtr (other.DataPtr(), other.Size())); } bool operator!= (const VolumePassword &other) const { return !(*this == other); } VolumePassword &operator= (const VolumePassword &password) { Set (password); return *this; } operator BufferPtr () const { return BufferPtr (PasswordBuffer); } byte *DataPtr () const { return PasswordBuffer; } bool IsEmpty () const { return PasswordSize == 0; } size_t Size () const { return PasswordSize; } void Set (const byte *password, size_t size); void Set (const VolumePassword &password); TC_SERIALIZABLE (VolumePassword); static const size_t MaxLegacySize; static const size_t MaxSize; static const size_t WarningSizeThreshold; protected: void AllocateBuffer (); SecureBuffer PasswordBuffer; size_t PasswordSize; }; struct PasswordException : public Exception { protected: PasswordException () { } PasswordException (const string &message) : Exception (message) { } PasswordException (const string &message, const wstring &subject) : Exception (message, subject) { } }; TC_EXCEPTION_DECL (PasswordIncorrect, PasswordException); TC_EXCEPTION_DECL (PasswordKeyfilesIncorrect, PasswordIncorrect); TC_EXCEPTION_DECL (PasswordOrKeyboardLayoutIncorrect, PasswordException); TC_EXCEPTION_DECL (PasswordOrMountOptionsIncorrect, PasswordException); TC_EXCEPTION_DECL (ProtectionPasswordIncorrect, PasswordIncorrect); TC_EXCEPTION_DECL (ProtectionPasswordKeyfilesIncorrect, PasswordIncorrect); #define TC_EXCEPTION(NAME) TC_EXCEPTION_DECL(NAME,PasswordException) #undef TC_EXCEPTION_SET #define TC_EXCEPTION_SET \ TC_EXCEPTION_NODECL (PasswordIncorrect); \ TC_EXCEPTION_NODECL (PasswordKeyfilesIncorrect); \ TC_EXCEPTION_NODECL (PasswordOrKeyboardLayoutIncorrect); \ TC_EXCEPTION_NODECL (PasswordOrMountOptionsIncorrect); \ TC_EXCEPTION_NODECL (ProtectionPasswordIncorrect); \ TC_EXCEPTION_NODECL (ProtectionPasswordKeyfilesIncorrect); \ TC_EXCEPTION (PasswordEmpty); \ TC_EXCEPTION (PasswordTooLong); \ TC_EXCEPTION (PasswordUTF8TooLong); \ TC_EXCEPTION (PasswordUTF8Invalid); \ TC_EXCEPTION (UnportablePassword); TC_EXCEPTION_SET; #undef TC_EXCEPTION } #endif // TC_HEADER_Encryption_Password