VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Volume/VolumeHeader.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Volume/VolumeHeader.h')
-rw-r--r--src/Volume/VolumeHeader.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/Volume/VolumeHeader.h b/src/Volume/VolumeHeader.h
index 85908711..18a52950 100644
--- a/src/Volume/VolumeHeader.h
+++ b/src/Volume/VolumeHeader.h
@@ -49,82 +49,84 @@ namespace VeraCrypt
ConstBufferPtr Salt;
uint32 SectorSize;
uint64 VolumeDataSize;
uint64 VolumeDataStart;
VolumeType::Enum Type;
};
class VolumeHeader
{
public:
VolumeHeader (uint32 HeaderSize);
virtual ~VolumeHeader ();
void Create (const BufferPtr &headerBuffer, VolumeHeaderCreationOptions &options);
bool Decrypt (const ConstBufferPtr &encryptedData, const VolumePassword &password, int pim, shared_ptr <Pkcs5Kdf> kdf, const Pkcs5KdfList &keyDerivationFunctions, const EncryptionAlgorithmList &encryptionAlgorithms, const EncryptionModeList &encryptionModes);
void EncryptNew (const BufferPtr &newHeaderBuffer, const ConstBufferPtr &newSalt, const ConstBufferPtr &newHeaderKey, shared_ptr <Pkcs5Kdf> newPkcs5Kdf);
uint64 GetEncryptedAreaStart () const { return EncryptedAreaStart; }
uint64 GetEncryptedAreaLength () const { return EncryptedAreaLength; }
shared_ptr <EncryptionAlgorithm> GetEncryptionAlgorithm () const { return EA; }
uint32 GetFlags () const { return Flags; }
VolumeTime GetHeaderCreationTime () const { return HeaderCreationTime; }
uint64 GetHiddenVolumeDataSize () const { return HiddenVolumeDataSize; }
static size_t GetLargestSerializedKeySize ();
shared_ptr <Pkcs5Kdf> GetPkcs5Kdf () const { return Pkcs5; }
uint16 GetRequiredMinProgramVersion () const { return RequiredMinProgramVersion; }
size_t GetSectorSize () const { return SectorSize; }
static uint32 GetSaltSize () { return SaltSize; }
uint64 GetVolumeDataSize () const { return VolumeDataSize; }
VolumeTime GetVolumeCreationTime () const { return VolumeCreationTime; }
void SetSize (uint32 headerSize);
+ bool IsMasterKeyVulnerable () const { return XtsKeyVulnerable; }
protected:
bool Deserialize (const ConstBufferPtr &header, shared_ptr <EncryptionAlgorithm> &ea, shared_ptr <EncryptionMode> &mode);
template <typename T> T DeserializeEntry (const ConstBufferPtr &header, size_t &offset) const;
template <typename T> T DeserializeEntryAt (const ConstBufferPtr &header, const size_t &offset) const;
void Init ();
void Serialize (const BufferPtr &header) const;
template <typename T> void SerializeEntry (const T &entry, const BufferPtr &header, size_t &offset) const;
uint32 HeaderSize;
static const uint16 CurrentHeaderVersion = VOLUME_HEADER_VERSION;
static const uint16 CurrentRequiredMinProgramVersion = TC_VOLUME_MIN_REQUIRED_PROGRAM_VERSION;
static const uint16 MinAllowedHeaderVersion = 1;
static const int SaltOffset = 0;
static const uint32 SaltSize = 64;
static const int EncryptedHeaderDataOffset = SaltOffset + SaltSize;
uint32 EncryptedHeaderDataSize;
static const uint32 LegacyEncryptionModeKeyAreaSize = 32;
static const int DataKeyAreaMaxSize = 256;
static const uint32 DataAreaKeyOffset = DataKeyAreaMaxSize - EncryptedHeaderDataOffset;
shared_ptr <EncryptionAlgorithm> EA;
shared_ptr <Pkcs5Kdf> Pkcs5;
uint16 HeaderVersion;
uint16 RequiredMinProgramVersion;
uint32 VolumeKeyAreaCrc32;
VolumeTime VolumeCreationTime;
VolumeTime HeaderCreationTime;
VolumeType::Enum mVolumeType;
uint64 HiddenVolumeDataSize;
uint64 VolumeDataSize;
uint64 EncryptedAreaStart;
uint64 EncryptedAreaLength;
uint32 Flags;
uint32 SectorSize;
SecureBuffer DataAreaKey;
+ bool XtsKeyVulnerable;
private:
VolumeHeader (const VolumeHeader &);
VolumeHeader &operator= (const VolumeHeader &);
};
}
#endif // TC_HEADER_Volume_VolumeHeader