Annotation of truecrypt/volume/volume.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
                      3: 
                      4:  Governed by the TrueCrypt License 2.4 the full text of which is contained
                      5:  in the file License.txt included in TrueCrypt binary and source code
                      6:  distribution packages.
                      7: */
                      8: 
                      9: #ifndef TC_HEADER_Volume_Volume
                     10: #define TC_HEADER_Volume_Volume
                     11: 
                     12: #include "Platform/Platform.h"
                     13: #include "Platform/StringConverter.h"
                     14: #include "EncryptionAlgorithm.h"
                     15: #include "EncryptionMode.h"
                     16: #include "Keyfile.h"
                     17: #include "VolumePassword.h"
                     18: #include "VolumeException.h"
                     19: #include "VolumeLayout.h"
                     20: 
                     21: namespace TrueCrypt
                     22: {
                     23:        class VolumePath
                     24:        {
                     25:        public:
                     26:                VolumePath () { }
                     27:                VolumePath (const wstring &path) { Data = path; }
                     28:                VolumePath (const FilesystemPath &path) { Data = path; }
                     29: 
                     30:                bool operator== (const VolumePath &other) const { return Data == other.Data; }
                     31:                bool operator!= (const VolumePath &other) const { return Data != other.Data; }
                     32:                operator FilesystemPath () const { return FilesystemPath (Data); }
                     33:                operator string () const { return StringConverter::ToSingle (Data); }
                     34:                operator wstring () const { return Data; }
                     35: 
                     36:                bool IsDevice () const { return FilesystemPath (Data).IsBlockDevice() || FilesystemPath (Data).IsCharacterDevice(); }
                     37:                bool IsEmpty () const { return Data.empty(); }
                     38: 
                     39:        protected:
                     40:                wstring Data;
                     41:        };
                     42: 
                     43:        typedef list <VolumePath> VolumePathList;
                     44: 
                     45:        struct VolumeProtection
                     46:        {
                     47:                enum Enum
                     48:                {
                     49:                        None,
                     50:                        ReadOnly,
                     51:                        HiddenVolumeReadOnly
                     52:                };
                     53:        };
                     54: 
                     55:        class Volume
                     56:        {
                     57:        public:
                     58:                Volume ();
                     59:                virtual ~Volume ();
                     60: 
                     61:                void Close ();
                     62:                shared_ptr <EncryptionAlgorithm> GetEncryptionAlgorithm () const;
                     63:                shared_ptr <EncryptionMode> GetEncryptionMode () const;
                     64:                shared_ptr <File> GetFile () const { return VolumeFile; }
                     65:                uint64 GetHeaderCreationTime () const { return Header->GetHeaderCreationTime(); }
                     66:                VolumePath GetPath () const { return VolumeFile->GetPath(); }
                     67:                VolumeProtection::Enum GetProtectionType () const { return Protection; }
                     68:                shared_ptr <Pkcs5Kdf> GetPkcs5Kdf () const { return Header->GetPkcs5Kdf(); }
                     69:                uint32 GetSaltSize () const { return Header->GetSaltSize(); }
                     70:                size_t GetSectorSize () const { return SectorSize; }
                     71:                uint64 GetSize () const { return VolumeDataSize; }
                     72:                uint64 GetTotalDataRead () const { return TotalDataRead; }
                     73:                uint64 GetTotalDataWritten () const { return TotalDataWritten; }
                     74:                VolumeType::Enum GetType () const { return Type; }
                     75:                uint64 GetVolumeCreationTime () const { return Header->GetVolumeCreationTime(); }
                     76:                bool IsHiddenVolumeProtectionTriggered () const { return HiddenVolumeProtectionTriggered; }
                     77:                void Open (const VolumePath &volumePath, bool preserveTimestamps, shared_ptr <VolumePassword> password, shared_ptr <KeyfileList> keyfiles, VolumeProtection::Enum protection = VolumeProtection::None, shared_ptr <VolumePassword> protectionPassword = shared_ptr <VolumePassword> (), shared_ptr <KeyfileList> protectionKeyfiles = shared_ptr <KeyfileList> (), bool sharedAccessAllowed = false, VolumeType::Enum volumeType = VolumeType::Unknown);
                     78:                void Open (shared_ptr <File> volumeFile, shared_ptr <VolumePassword> password, shared_ptr <KeyfileList> keyfiles, VolumeProtection::Enum protection = VolumeProtection::None, shared_ptr <VolumePassword> protectionPassword = shared_ptr <VolumePassword> (), shared_ptr <KeyfileList> protectionKeyfiles = shared_ptr <KeyfileList> (), VolumeType::Enum volumeType = VolumeType::Unknown);
                     79:                void ReadSectors (const BufferPtr &buffer, uint64 byteOffset);
                     80:                void ReEncryptHeader (const ConstBufferPtr &newSalt, const ConstBufferPtr &newHeaderKey, shared_ptr <Pkcs5Kdf> newPkcs5Kdf);
                     81:                void WriteSectors (const ConstBufferPtr &buffer, uint64 byteOffset);
                     82: 
                     83:        protected:
                     84:                void CheckProtectedRange (uint64 writeHostOffset, uint64 writeLength);
                     85:                void ValidateState () const;
                     86: 
                     87:                shared_ptr <EncryptionAlgorithm> EA;
                     88:                shared_ptr <VolumeHeader> Header;
                     89:                bool HiddenVolumeProtectionTriggered;
                     90:                shared_ptr <VolumeLayout> Layout;
                     91:                uint64 ProtectedRangeStart;
                     92:                uint64 ProtectedRangeEnd;
                     93:                VolumeProtection::Enum Protection;
                     94:                size_t SectorSize;
                     95:                VolumeType::Enum Type;
                     96:                shared_ptr <File> VolumeFile;
                     97:                uint64 VolumeHostSize;
                     98:                uint64 VolumeDataOffset; 
                     99:                uint64 VolumeDataSize;
                    100:                uint64 TotalDataRead;
                    101:                uint64 TotalDataWritten;
                    102: 
                    103:        private:
                    104:                Volume (const Volume &);
                    105:                Volume &operator= (const Volume &);
                    106:        };
                    107: }
                    108: 
                    109: #endif // TC_HEADER_Volume_Volume

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.