Annotation of truecrypt/common/volumes.h, revision 1.1.1.13

1.1.1.10  root        1: /*
1.1.1.12  root        2:  Legal Notice: Some portions of the source code contained in this file were
                      3:  derived from the source code of Encryption for the Masses 2.02a, which is
                      4:  Copyright (c) 1998-2000 Paul Le Roux and which is governed by the 'License
                      5:  Agreement for Encryption for the Masses'. Modifications and additions to
                      6:  the original source code (contained in this file) and all other portions of
                      7:  this file are Copyright (c) 2003-2008 TrueCrypt Foundation and are governed
1.1.1.13! root        8:  by the TrueCrypt License 2.5 the full text of which is contained in the
1.1.1.12  root        9:  file License.txt included in TrueCrypt binary and source code distribution
1.1.1.10  root       10:  packages. */
1.1       root       11: 
1.1.1.13! root       12: #ifndef TC_HEADER_Common_Volumes
        !            13: #define TC_HEADER_Common_Volumes
1.1.1.12  root       14: 
                     15: #ifdef __cplusplus
                     16: extern "C" {
                     17: #endif
                     18: 
1.1.1.13! root       19: // Volume header version
        !            20: #define VOLUME_HEADER_VERSION                                  0x0004 
        !            21: 
        !            22: // Version number written to volume header during format;
        !            23: // specifies the minimum program version required to mount the volume
        !            24: #define TC_VOLUME_MIN_REQUIRED_PROGRAM_VERSION 0x0600
        !            25: 
        !            26: // Version number written (encrypted) to the key data area of an encrypted system partition/drive;
        !            27: // specifies the minimum program version required to decrypt the system partition/drive
        !            28: #define TC_SYSENC_KEYSCOPE_MIN_REQ_PROG_VERSION        0x0500
        !            29: 
        !            30: // Current volume format version (created by TrueCrypt 6.0+)
        !            31: #define TC_VOLUME_FORMAT_VERSION                               2
        !            32: 
        !            33: // Version number of volume format created by TrueCrypt 1.0-5.1a
        !            34: #define TC_VOLUME_FORMAT_VERSION_PRE_6_0               1
        !            35: 
        !            36: // Volume header sizes
        !            37: #define TC_VOLUME_HEADER_SIZE                                  (64 * 1024L)
        !            38: #define TC_VOLUME_HEADER_EFFECTIVE_SIZE                        512
        !            39: #define TC_BOOT_ENCRYPTION_VOLUME_HEADER_SIZE  512
        !            40: #define TC_VOLUME_HEADER_SIZE_LEGACY                   512
        !            41: 
        !            42: #define TC_VOLUME_HEADER_GROUP_SIZE                            (2 * TC_VOLUME_HEADER_SIZE)
        !            43: #define TC_TOTAL_VOLUME_HEADERS_SIZE                   (4 * TC_VOLUME_HEADER_SIZE)
        !            44: 
        !            45: // Volume offsets
        !            46: #define TC_VOLUME_HEADER_OFFSET                                        0
        !            47: #define TC_HIDDEN_VOLUME_HEADER_OFFSET                 TC_VOLUME_HEADER_SIZE
        !            48: 
        !            49: #define TC_MAX_VOLUME_SECTOR_SIZE                              (2 * TC_VOLUME_HEADER_SIZE)
        !            50: 
        !            51: #define TC_VOLUME_SMALL_SIZE_THRESHOLD                 (2 * BYTES_PER_MB)              // Volume sizes below this threshold are considered small
        !            52: 
        !            53: #define TC_HIDDEN_VOLUME_HOST_FS_RESERVED_END_AREA_SIZE                        SECTOR_SIZE_GEN2_STANDARD       // FAT file system fills the last sector with zeroes (marked as free; observed when quick format was performed using the OS format tool).
        !            54: #define        TC_HIDDEN_VOLUME_HOST_FS_RESERVED_END_AREA_SIZE_HIGH    TC_MAX_VOLUME_SECTOR_SIZE       // Reserved area size used for hidden volumes larger than TC_VOLUME_SMALL_SIZE_THRESHOLD
        !            55: 
        !            56: #define TC_VOLUME_DATA_OFFSET                                  TC_VOLUME_HEADER_GROUP_SIZE
        !            57: 
        !            58: /* The offset, in bytes, of the hidden volume header position from the end of the file (a positive value).
        !            59:    The extra offset (SECTOR_SIZE * 2) was added because FAT file system fills the last sector with zeroes
        !            60:    (marked as free; observed when quick format was performed using the OS format tool). One extra sector was
        !            61:    added to the offset for future expandability (should the header size increase, or should header backup be
        !            62:    introduced). */
        !            63: #define TC_HIDDEN_VOLUME_HEADER_OFFSET_LEGACY  (TC_VOLUME_HEADER_SIZE_LEGACY + SECTOR_SIZE * 2)                
        !            64: 
        !            65: #define TC_MAX_128BIT_BLOCK_VOLUME_SIZE        BYTES_PER_PB                    // Security bound (128-bit block XTS mode)
        !            66: 
        !            67: // Filesystem size limits
        !            68: #define TC_MIN_FAT_FS_SIZE                             (37 * SECTOR_SIZE)
        !            69: #define TC_MAX_FAT_FS_SIZE                             0x20000000000LL
        !            70: #define TC_MIN_NTFS_FS_SIZE                            2634752
        !            71: #define TC_MAX_NTFS_FS_SIZE                            (128LL * BYTES_PER_TB)  // NTFS volume can theoretically be up to 16 exabytes, but Windows XP and 2003 limit the size to that addressable with 32-bit clusters, i.e. max size is 128 TB (if 64-KB clusters are used).
        !            72: 
        !            73: // Volume size limits
        !            74: #define TC_MIN_VOLUME_SIZE                             (TC_TOTAL_VOLUME_HEADERS_SIZE + TC_MIN_FAT_FS_SIZE)
        !            75: #define TC_MIN_VOLUME_SIZE_LEGACY              TC_MIN_FAT_FS_SIZE
        !            76: #define TC_MAX_VOLUME_SIZE_GENERAL             0x7fffFFFFffffFFFFLL    // Signed 64-bit integer file offset values
        !            77: #define TC_MAX_VOLUME_SIZE                             TC_MAX_128BIT_BLOCK_VOLUME_SIZE
        !            78: 
        !            79: #define TC_MIN_HIDDEN_VOLUME_SIZE              (TC_MIN_FAT_FS_SIZE + TC_HIDDEN_VOLUME_HOST_FS_RESERVED_END_AREA_SIZE)
        !            80: 
        !            81: #define TC_MIN_HIDDEN_VOLUME_HOST_SIZE (TC_MIN_VOLUME_SIZE + TC_MIN_HIDDEN_VOLUME_SIZE + 2 * SECTOR_SIZE_GEN2_STANDARD)
        !            82: #define TC_MAX_HIDDEN_VOLUME_HOST_SIZE (TC_MAX_NTFS_FS_SIZE - TC_TOTAL_VOLUME_HEADERS_SIZE)
        !            83: 
        !            84: #ifndef TC_NO_COMPILER_INT64
        !            85: #      if TC_MAX_VOLUME_SIZE > TC_MAX_VOLUME_SIZE_GENERAL
        !            86: #              error TC_MAX_VOLUME_SIZE > TC_MAX_VOLUME_SIZE_GENERAL
        !            87: #      endif
        !            88: #endif
        !            89: 
        !            90: #define HEADER_ENCRYPTED_DATA_SIZE                     (TC_VOLUME_HEADER_EFFECTIVE_SIZE - HEADER_ENCRYPTED_DATA_OFFSET)
        !            91: 
        !            92: // Volume header field offsets
        !            93: #define        HEADER_SALT_OFFSET                                      0
        !            94: #define HEADER_ENCRYPTED_DATA_OFFSET           PKCS5_SALT_SIZE
        !            95: #define        HEADER_MASTER_KEYDATA_OFFSET            256
        !            96:        
1.1.1.12  root       97: #define TC_HEADER_OFFSET_MAGIC                                 64
                     98: #define TC_HEADER_OFFSET_VERSION                               68
                     99: #define TC_HEADER_OFFSET_REQUIRED_VERSION              70
                    100: #define TC_HEADER_OFFSET_KEY_AREA_CRC                  72
                    101: #define TC_HEADER_OFFSET_VOLUME_CREATION_TIME  76
                    102: #define TC_HEADER_OFFSET_MODIFICATION_TIME             84
                    103: #define TC_HEADER_OFFSET_HIDDEN_VOLUME_SIZE            92
                    104: #define TC_HEADER_OFFSET_VOLUME_SIZE                   100
                    105: #define TC_HEADER_OFFSET_ENCRYPTED_AREA_START  108
                    106: #define TC_HEADER_OFFSET_ENCRYPTED_AREA_LENGTH 116
1.1.1.13! root      107: #define TC_HEADER_OFFSET_FLAGS                                 124
        !           108: #define TC_HEADER_OFFSET_HEADER_CRC                            252
        !           109: 
        !           110: // Volume header flags
        !           111: #define TC_HEADER_FLAG_ENCRYPTED_SYSTEM                        0x1
        !           112: 
        !           113: 
        !           114: #ifndef TC_HEADER_Volume_VolumeHeader
        !           115: 
        !           116: #include "Password.h"
1.1.1.12  root      117: 
                    118: uint16 GetHeaderField16 (byte *header, size_t offset);
                    119: uint32 GetHeaderField32 (byte *header, size_t offset);
                    120: UINT64_STRUCT GetHeaderField64 (byte *header, size_t offset);
                    121: int VolumeReadHeader (BOOL bBoot, char *encryptedHeader, Password *password, PCRYPTO_INFO *retInfo, CRYPTO_INFO *retHeaderCryptoInfo);
                    122: #ifndef TC_WINDOWS_BOOT
1.1.1.13! root      123: int VolumeWriteHeader (BOOL bBoot, char *encryptedHeader, int ea, int mode, Password *password, int pkcs5_prf, char *masterKeydata, PCRYPTO_INFO *retInfo, unsigned __int64 volumeSize, unsigned __int64 hiddenVolumeSize, unsigned __int64 encryptedAreaStart, unsigned __int64 encryptedAreaLength, uint16 requiredProgramVersion, uint32 headerFlags, BOOL bWipeMode);
1.1.1.12  root      124: #endif
                    125: 
1.1.1.13! root      126: #endif // !TC_HEADER_Volume_VolumeHeader
        !           127: 
1.1.1.12  root      128: #ifdef __cplusplus
                    129: }
                    130: #endif
                    131: 
1.1.1.13! root      132: #endif // TC_HEADER_Common_Volumes

unix.superglobalmegacorp.com

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