diff options
Diffstat (limited to 'src/Volume/VolumeHeader.h')
-rw-r--r-- | src/Volume/VolumeHeader.h | 2 |
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 |