typedef [enum16bit] enum {
DCERPC_SEC_VT_COMMAND_BITMASK1 = 0x0001,
DCERPC_SEC_VT_COMMAND_PCONTEXT = 0x0002,
- DCERPC_SEC_VT_COMMAND_HEADER2 = 0x0003
+ DCERPC_SEC_VT_COMMAND_HEADER2 = 0x0003,
+ DCERPC_SEC_VT_COMMAND_PREAUTH = 0x0004
} dcerpc_sec_vt_command_enum;
typedef [bitmap32bit] bitmap {
uint16 opnum;
} dcerpc_sec_vt_header2;
+ typedef struct {
+ [flag(NDR_PAHEX)] uint8 salt[16];
+ [flag(NDR_PAHEX)] uint8 sha512[64];
+ } dcerpc_sec_vt_preauth;
+
typedef [switch_type(dcerpc_sec_vt_command_enum),nodiscriminant] union {
[case(DCERPC_SEC_VT_COMMAND_BITMASK1)] dcerpc_sec_vt_bitmask1 bitmask1;
[case(DCERPC_SEC_VT_COMMAND_PCONTEXT)] dcerpc_sec_vt_pcontext pcontext;
[case(DCERPC_SEC_VT_COMMAND_HEADER2)] dcerpc_sec_vt_header2 header2;
+ [case(DCERPC_SEC_VT_COMMAND_PREAUTH)] dcerpc_sec_vt_preauth preauth;
[default,flag(NDR_REMAINING)] DATA_BLOB _unknown;
} dcerpc_sec_vt_union;
case DCERPC_SEC_VT_COMMAND_BITMASK1:
case DCERPC_SEC_VT_COMMAND_PCONTEXT:
case DCERPC_SEC_VT_COMMAND_HEADER2:
+ case DCERPC_SEC_VT_COMMAND_PREAUTH:
break;
default:
if ((r->commands[i].u._unknown.length % 4) != 0) {