1 // rar5 constants 2 3 // RAR5 Header flag bits (we do not care about 8, 0x10, 0x20, 0x40, spanning bits, we simply do not handle) 4 #define HFL_EXTRA 1 5 #define HFL_DATA 2 6 #define HFL_SKIPIFUNKNOWN 4 7 8 #define CRYPT_VERSION 0 9 #define CHFL_CRYPT_PSWCHECK 1 10 #define CRYPT5_KDF_LG2_COUNT 15 11 #define CRYPT5_KDF_LG2_COUNT_MAX 24 12 #define SIZE_SALT50 16 13 #define SIZE_PSWCHECK 8 14 #define SIZE_PSWCHECK_CSUM 4 15 #define SIZE_INITV 16 16 17 18 // RAR 5.0 header types. 19 #define HEAD_MARK 0x00 20 #define HEAD_MAIN 0x01 21 #define HEAD_FILE 0x02 22 #define HEAD_SERVICE 0x03 23 #define HEAD_CRYPT 0x04 24 #define HEAD_ENDARC 0x05 25 #define HEAD_UNKNOWN 0xff 26 27 // RAR 5.0 main archive header specific flags. 28 #define MHFL_VOLUME 0x0001 29 #define MHFL_VOLNUMBER 0x0002 30 #define MHFL_SOLID 0x0004 31 #define MHFL_PROTECT 0x0008 32 #define MHFL_LOCK 0x0010 33 34 // RAR 5.0 file header specific flags. 35 #define FHFL_DIRECTORY 0x0001 36 #define FHFL_UTIME 0x0002 37 #define FHFL_CRC32 0x0004 38 #define FHFL_UNPUNKNOWN 0x0008 39 40 // File and service header extra field values. 41 #define FHEXTRA_CRYPT 0x01 42 #define FHEXTRA_HASH 0x02 43 #define FHEXTRA_HTIME 0x03 44 #define FHEXTRA_VERSION 0x04 45 #define FHEXTRA_REDIR 0x05 46 #define FHEXTRA_UOWNER 0x06 47 #define FHEXTRA_SUBDATA 0x07 48 49 // Flags for FHEXTRA_CRYPT. 50 #define FHEXTRA_CRYPT_PSWCHECK 0x01 51 #define FHEXTRA_CRYPT_HASHMAC 0x02 52