|
|
1.1.1.12 root 1: /* 1.1.1.14! 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 ! 8: by the TrueCrypt License 2.4 the full text of which is contained in the ! 9: file License.txt included in TrueCrypt binary and source code distribution 1.1.1.12 root 10: packages. */ 1.1 root 11: 1.1.1.14! root 12: #ifndef TCDEFS_H ! 13: #define TCDEFS_H ! 14: ! 15: #define TC_APP_NAME "TrueCrypt" ! 16: 1.1 root 17: // Version displayed to user 1.1.1.14! root 18: #define VERSION_STRING "5.0" 1.1 root 19: 20: // Version number to compare against driver 1.1.1.14! root 21: #define VERSION_NUM 0x0500 1.1 root 22: 23: // Version number written to volume header during format, 24: // specifies the minimum program version required to mount the volume 1.1.1.14! root 25: #define VOL_REQ_PROG_VERSION 0x0500 1.1.1.6 root 26: 27: // Volume header version 1.1.1.14! root 28: #define VOLUME_HEADER_VERSION 0x0003 1.1 root 29: 1.1.1.13 root 30: // Sector size of encrypted filesystem, which may differ from sector size 31: // of host filesystem/device (this is fully supported since v4.3). 1.1.1.12 root 32: #define SECTOR_SIZE 512 1.1 root 33: 1.1.1.10 root 34: #define BYTES_PER_KB 1024LL 35: #define BYTES_PER_MB 1048576LL 36: #define BYTES_PER_GB 1073741824LL 37: #define BYTES_PER_TB 1099511627776LL 38: #define BYTES_PER_PB 1125899906842624LL 1.1 root 39: 40: /* GUI/driver errors */ 41: 1.1.1.14! root 42: #define MAX_128BIT_BLOCK_VOLUME_SIZE BYTES_PER_PB // Security bound (128-bit block XTS mode) ! 43: #define MAX_VOLUME_SIZE_GENERAL 0x7fffFFFFffffFFFFLL // Signed 64-bit integer file offset values ! 44: #define MAX_VOLUME_SIZE MAX_128BIT_BLOCK_VOLUME_SIZE ! 45: #define MIN_FAT_VOLUME_SIZE 19456 1.1.1.12 root 46: #define MAX_FAT_VOLUME_SIZE 0x20000000000LL 1.1.1.14! root 47: #define MIN_NTFS_VOLUME_SIZE 2634752 ! 48: #define MAX_NTFS_VOLUME_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). ! 49: #define MAX_HIDDEN_VOLUME_HOST_SIZE MAX_NTFS_VOLUME_SIZE 1.1.1.6 root 50: #define MAX_HIDDEN_VOLUME_SIZE ( MAX_HIDDEN_VOLUME_HOST_SIZE - HIDDEN_VOL_HEADER_OFFSET - HEADER_SIZE ) 1.1.1.14! root 51: #define MIN_VOLUME_SIZE MIN_FAT_VOLUME_SIZE ! 52: #define MIN_HIDDEN_VOLUME_HOST_SIZE ( MIN_VOLUME_SIZE * 2 + HIDDEN_VOL_HEADER_OFFSET + HEADER_SIZE ) ! 53: ! 54: #ifndef TC_NO_COMPILER_INT64 ! 55: #if MAX_VOLUME_SIZE > MAX_VOLUME_SIZE_GENERAL ! 56: #error MAX_VOLUME_SIZE must be less than or equal to MAX_VOLUME_SIZE_GENERAL ! 57: #endif ! 58: #endif 1.1 root 59: 60: #define WIDE(x) (LPWSTR)L##x 61: 1.1.1.14! root 62: typedef __int8 int8; ! 63: typedef __int16 int16; ! 64: typedef __int32 int32; ! 65: typedef unsigned __int8 byte; ! 66: typedef unsigned __int16 uint16; ! 67: typedef unsigned __int32 uint32; ! 68: ! 69: #ifdef TC_NO_COMPILER_INT64 ! 70: typedef unsigned __int32 TC_LARGEST_COMPILER_UINT; ! 71: #else ! 72: typedef unsigned __int64 TC_LARGEST_COMPILER_UINT; ! 73: typedef __int64 int64; ! 74: typedef unsigned __int64 uint64; ! 75: #endif ! 76: ! 77: // Needed by Cryptolib ! 78: typedef unsigned __int8 uint_8t; ! 79: typedef unsigned __int16 uint_16t; ! 80: typedef unsigned __int32 uint_32t; ! 81: #ifndef TC_NO_COMPILER_INT64 ! 82: typedef unsigned __int64 uint_64t; ! 83: #endif ! 84: ! 85: typedef union ! 86: { ! 87: struct ! 88: { ! 89: unsigned __int32 LowPart; ! 90: unsigned __int32 HighPart; ! 91: }; ! 92: #ifndef TC_NO_COMPILER_INT64 ! 93: unsigned __int64 Value; ! 94: #endif ! 95: ! 96: } UINT64_STRUCT; ! 97: ! 98: #ifdef TC_WINDOWS_BOOT ! 99: # define TC_THROW_FATAL_EXCEPTION do { __asm hlt } while (1) ! 100: #elif defined (NT4_DRIVER) ! 101: # define TC_THROW_FATAL_EXCEPTION KeBugCheckEx (SECURITY_SYSTEM, __LINE__, 0, 0, 'TC') ! 102: #else ! 103: # define TC_THROW_FATAL_EXCEPTION *(char *) 0 = 0 ! 104: #endif ! 105: 1.1 root 106: #ifdef NT4_DRIVER 107: 108: #pragma warning( disable : 4201 ) 109: #pragma warning( disable : 4214 ) 110: #pragma warning( disable : 4115 ) 111: #pragma warning( disable : 4100 ) 112: #pragma warning( disable : 4101 ) 113: #pragma warning( disable : 4057 ) 114: #pragma warning( disable : 4244 ) 115: #pragma warning( disable : 4514 ) 116: #pragma warning( disable : 4127 ) 117: 118: 1.1.1.14! root 119: #include <ntifs.h> 1.1 root 120: #include <ntddk.h> /* Standard header file for nt drivers */ 1.1.1.14! root 121: 1.1 root 122: #undef _WIN32_WINNT 123: #define _WIN32_WINNT 0x0501 124: #include <ntdddisk.h> /* Standard I/O control codes */ 125: #include <ntiologc.h> 126: 127: #pragma warning( default : 4201 ) 128: #pragma warning( default : 4214 ) 129: #pragma warning( default : 4115 ) 130: #pragma warning( default : 4100 ) 131: #pragma warning( default : 4101 ) 132: #pragma warning( default : 4057 ) 133: #pragma warning( default : 4244 ) 134: #pragma warning( default : 4127 ) 135: 136: /* #pragma warning( default : 4514 ) this warning remains disabled */ 137: 138: #define TCalloc(size) ((void *) ExAllocatePoolWithTag( NonPagedPool, size, 'MMCT' )) 139: #define TCfree(memblock) ExFreePoolWithTag( memblock, 'MMCT' ) 140: 141: #define DEVICE_DRIVER 142: 143: #ifndef BOOL 144: typedef int BOOL; 145: #endif 146: 147: #ifndef TRUE 148: #define TRUE 1 149: #endif 150: 151: #ifndef FALSE 152: #define FALSE !TRUE 153: #endif 154: 155: /* Define dummies for the drivers */ 156: typedef int HFILE; 157: typedef unsigned int WPARAM; 1.1.1.8 root 158: typedef unsigned __int32 LPARAM; 1.1 root 159: #define CALLBACK 160: 161: #ifndef UINT 162: typedef unsigned int UINT; 163: #endif 164: 165: #ifndef LRESULT 1.1.1.8 root 166: typedef unsigned __int32 LRESULT; 1.1 root 167: #endif 1.1.1.9 root 168: /* NT4_DRIVER */ 169: 170: #elif defined(LINUX_DRIVER) 171: 172: #define TCalloc(size) (kmalloc( size, GFP_KERNEL )) 173: #define TCfree(memblock) kfree( memblock ) 1.1 root 174: 1.1.1.9 root 175: #else 1.1 root 176: 177: #define TCalloc malloc 178: #define TCfree free 179: 1.1.1.8 root 180: #ifdef _WIN32 181: 1.1 root 182: #pragma warning( disable : 4201 ) 183: #pragma warning( disable : 4214 ) 184: #pragma warning( disable : 4115 ) 185: #pragma warning( disable : 4514 ) 186: 187: #undef _WIN32_WINNT 188: #define _WIN32_WINNT 0x0501 189: #include <windows.h> /* Windows header */ 190: #include <commctrl.h> /* The common controls */ 191: #include <process.h> /* Process control */ 192: #include <winioctl.h> 193: #include <stdio.h> /* For sprintf */ 194: 195: #pragma warning( default : 4201 ) 196: #pragma warning( default : 4214 ) 197: #pragma warning( default : 4115 ) 198: 199: /* #pragma warning( default : 4514 ) this warning remains disabled */ 200: 201: /* This is needed to fix a bug with VC 5, the TCHAR macro _ttoi64 maps 1.1.1.10 root 202: incorrectly to atoLL when it should be _atoi64 */ 1.1 root 203: #define atoi64 _atoi64 204: 1.1.1.8 root 205: #endif /* _WIN32 */ 1.1 root 206: 1.1.1.8 root 207: #endif /* NT4_DRIVER */ 208: 209: #ifdef _WIN32 1.1.1.12 root 210: #define burn(mem,size) do { volatile char *burnm = (volatile char *)(mem); int burnc = size; RtlSecureZeroMemory (mem, size); while (burnc--) *burnm++ = 0; } while (0) 211: #else 212: #define burn(mem,size) do { volatile char *burnm = (volatile char *)(mem); int burnc = size; while (burnc--) *burnm++ = 0; } while (0) 1.1.1.8 root 213: #endif 1.1.1.11 root 214: 1.1.1.14! root 215: // The size of the memory area to wipe is in bytes amd it must be a multiple of 8. ! 216: #ifndef TC_NO_COMPILER_INT64 ! 217: # define FAST_ERASE64(mem,size) do { volatile unsigned __int64 *burnm = (volatile unsigned __int64 *)(mem); int burnc = size >> 3; while (burnc--) *burnm++ = 0; } while (0) ! 218: #else ! 219: # define FAST_ERASE64(mem,size) do { volatile unsigned __int32 *burnm = (volatile unsigned __int32 *)(mem); int burnc = size >> 2; while (burnc--) *burnm++ = 0; } while (0) ! 220: #endif ! 221: 1.1.1.11 root 222: #ifdef MAX_PATH 1.1.1.12 root 223: #define TC_MAX_PATH MAX_PATH 1.1.1.11 root 224: #else 1.1.1.12 root 225: #define TC_MAX_PATH 260 /* Includes the null terminator */ 1.1.1.11 root 226: #endif 1.1.1.12 root 227: 228: #define MAX_URL_LENGTH 2084 /* Internet Explorer limit. Includes the terminating null character. */ 229: 230: #define TC_APPLINK "http://www.truecrypt.org/applink.php?version=" VERSION_STRING 231: #define TC_APPLINK_SECURE "https://www.truecrypt.org/applink.php?version=" VERSION_STRING 1.1.1.14! root 232: ! 233: enum ! 234: { ! 235: ERR_SUCCESS = 0, ! 236: ERR_OS_ERROR = 1, ! 237: ERR_OUTOFMEMORY, ! 238: ERR_PASSWORD_WRONG, ! 239: ERR_VOL_FORMAT_BAD, ! 240: ERR_DRIVE_NOT_FOUND, ! 241: ERR_FILES_OPEN, ! 242: ERR_VOL_SIZE_WRONG, ! 243: ERR_COMPRESSION_NOT_SUPPORTED, ! 244: ERR_PASSWORD_CHANGE_VOL_TYPE, ! 245: ERR_PASSWORD_CHANGE_VOL_VERSION, ! 246: ERR_VOL_SEEKING, ! 247: ERR_VOL_WRITING, ! 248: ERR_FILES_OPEN_LOCK, ! 249: ERR_VOL_READING, ! 250: ERR_DRIVER_VERSION, ! 251: ERR_NEW_VERSION_REQUIRED, ! 252: ERR_CIPHER_INIT_FAILURE, ! 253: ERR_CIPHER_INIT_WEAK_KEY, ! 254: ERR_SELF_TESTS_FAILED, ! 255: ERR_SECTOR_SIZE_INCOMPATIBLE, ! 256: ERR_VOL_ALREADY_MOUNTED, ! 257: ERR_NO_FREE_DRIVES, ! 258: ERR_FILE_OPEN_FAILED, ! 259: ERR_VOL_MOUNT_FAILED, ! 260: ERR_INVALID_DEVICE, ! 261: ERR_ACCESS_DENIED, ! 262: ERR_MODE_INIT_FAILED, ! 263: ERR_DONT_REPORT ! 264: }; ! 265: ! 266: #endif // #ifndef TCDEFS_H
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.