2 This filter was automatically generated
3 from /home/metze/devel/samba/4.0/master4-franky/librpc/idl/krb5pac.idl and /home/metze/devel/samba/4.0/master4-franky/librpc/idl/krb5pac.cnf.
5 Pidl is a perl based IDL compiler for DCE/RPC idl files.
6 It is maintained by the Samba team, not the Wireshark team.
7 Instructions on how to download and install Pidl can be
8 found at http://wiki.wireshark.org/Pidl
16 #pragma warning(disable:4005)
17 #pragma warning(disable:4013)
18 #pragma warning(disable:4018)
19 #pragma warning(disable:4101)
24 #include <epan/packet.h>
26 #include "packet-dcerpc.h"
27 #include "packet-dcerpc-nt.h"
28 #include "packet-windows-common.h"
29 #include "packet-dcerpc-krb5pac.h"
31 /* Ett declarations */
32 static gint ett_dcerpc_krb5pac = -1;
33 static gint ett_krb5pac_PAC_LOGON_NAME = -1;
34 static gint ett_krb5pac_PAC_SIGNATURE_DATA = -1;
35 static gint ett_krb5pac_PAC_LOGON_INFO = -1;
36 static gint ett_krb5pac_PAC_CONSTRAINED_DELEGATION = -1;
37 static gint ett_krb5pac_PAC_UNKNOWN_12 = -1;
38 static gint ett_krb5pac_PAC_LOGON_INFO_CTR = -1;
39 static gint ett_krb5pac_PAC_CONSTRAINED_DELEGATION_CTR = -1;
40 static gint ett_krb5pac_DATA_BLOB_REM = -1;
41 static gint ett_krb5pac_PAC_INFO = -1;
42 static gint ett_krb5pac_PAC_BUFFER = -1;
43 static gint ett_krb5pac_PAC_DATA = -1;
44 static gint ett_krb5pac_PAC_BUFFER_RAW = -1;
45 static gint ett_krb5pac_PAC_DATA_RAW = -1;
46 static gint ett_krb5pac_PAC_Validate = -1;
47 static gint ett_krb5pac_netsamlogoncache_entry = -1;
50 /* Header field declarations */
51 static gint hf_krb5pac_PAC_LOGON_INFO_res_group_dom_sid = -1;
52 static gint hf_krb5pac_PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION_constrained_delegation_ = -1;
53 static gint hf_krb5pac_PAC_LOGON_INFO_info3 = -1;
54 static gint hf_krb5pac_PAC_Validate_MessageType = -1;
55 static gint hf_krb5pac_PAC_UNKNOWN_12_upn_name = -1;
56 static gint hf_krb5pac_PAC_INFO_valPAC_TYPE_KDC_CHECKSUM_kdc_cksum = -1;
57 static gint hf_krb5pac_PAC_UNKNOWN_12_domain_size = -1;
58 static gint hf_krb5pac_PAC_BUFFER__pad = -1;
59 static gint hf_krb5pac_PAC_UNKNOWN_12_domain_name = -1;
60 static gint hf_krb5pac_PAC_UNKNOWN_12_domain_offset = -1;
61 static gint hf_krb5pac_PAC_SIGNATURE_DATA_signature = -1;
62 static gint hf_krb5pac_PAC_UNKNOWN_12_upn_size = -1;
63 static gint hf_krb5pac_PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION_constrained_delegation = -1;
64 static gint hf_krb5pac_opnum = -1;
65 static gint hf_krb5pac_PAC_LOGON_NAME_size = -1;
66 static gint hf_krb5pac_decode_login_info_logon_info = -1;
67 static gint hf_krb5pac_decode_pac_validate_pac_validate = -1;
68 static gint hf_krb5pac_PAC_DATA_buffers = -1;
69 static gint hf_krb5pac_PAC_BUFFER_info_ = -1;
70 static gint hf_krb5pac_PAC_DATA_RAW_version = -1;
71 static gint hf_krb5pac_PAC_BUFFER_RAW_ndr_size = -1;
72 static gint hf_krb5pac_PAC_CONSTRAINED_DELEGATION_num_transited_services = -1;
73 static gint hf_krb5pac_PAC_CONSTRAINED_DELEGATION_transited_services = -1;
74 static gint hf_krb5pac_PAC_BUFFER_type = -1;
75 static gint hf_krb5pac_PAC_CONSTRAINED_DELEGATION_proxy_target = -1;
76 static gint hf_krb5pac_PAC_UNKNOWN_12_unknown6 = -1;
77 static gint hf_krb5pac_PAC_UNKNOWN_12_unknown5 = -1;
78 static gint hf_krb5pac_PAC_INFO_valdefault_unknown_ = -1;
79 static gint hf_krb5pac_PAC_LOGON_NAME_logon_time = -1;
80 static gint hf_krb5pac_decode_pac_raw_pac = -1;
81 static gint hf_krb5pac_PAC_BUFFER__ndr_size = -1;
82 static gint hf_krb5pac_PAC_LOGON_INFO_res_groups = -1;
83 static gint hf_krb5pac_PAC_UNKNOWN_12_unknown3 = -1;
84 static gint hf_krb5pac_PAC_UNKNOWN_12_upn_offset = -1;
85 static gint hf_krb5pac_PAC_Validate_ChecksumAndSignature = -1;
86 static gint hf_krb5pac_decode_login_info_ctr_logon_info_ctr = -1;
87 static gint hf_krb5pac_PAC_INFO_valdefault_unknown = -1;
88 static gint hf_krb5pac_PAC_CONSTRAINED_DELEGATION_CTR_info = -1;
89 static gint hf_krb5pac_PAC_INFO_valPAC_TYPE_LOGON_INFO_logon_info_ = -1;
90 static gint hf_krb5pac_PAC_BUFFER_info = -1;
91 static gint hf_krb5pac_netsamlogoncache_entry_info3 = -1;
92 static gint hf_krb5pac_PAC_Validate_SignatureType = -1;
93 static gint hf_krb5pac_PAC_DATA_num_buffers = -1;
94 static gint hf_krb5pac_PAC_BUFFER_RAW__pad = -1;
95 static gint hf_krb5pac_PAC_BUFFER_RAW_info = -1;
96 static gint hf_krb5pac_PAC_INFO_valPAC_TYPE_SRV_CHECKSUM_srv_cksum = -1;
97 static gint hf_krb5pac_PAC_INFO_valPAC_TYPE_LOGON_NAME_logon_name = -1;
98 static gint hf_krb5pac_PAC_LOGON_NAME_account_name = -1;
99 static gint hf_krb5pac_PAC_Validate_ChecksumLength = -1;
100 static gint hf_krb5pac_PAC_UNKNOWN_12_unknown4 = -1;
101 static gint hf_krb5pac_netsamlogoncache_entry_timestamp = -1;
102 static gint hf_krb5pac_PAC_DATA_RAW_buffers = -1;
103 static gint hf_krb5pac_PAC_SIGNATURE_DATA_type = -1;
104 static gint hf_krb5pac_PAC_INFO_valPAC_TYPE_LOGON_INFO_logon_info = -1;
105 static gint hf_krb5pac_decode_pac_pac = -1;
106 static gint hf_krb5pac_PAC_Validate_SignatureLength = -1;
107 static gint hf_krb5pac_PAC_DATA_RAW_num_buffers = -1;
108 static gint hf_krb5pac_PAC_BUFFER_RAW_info_ = -1;
109 static gint hf_krb5pac_PAC_BUFFER_RAW_type = -1;
110 static gint hf_krb5pac_PAC_LOGON_INFO_CTR_info = -1;
111 static gint hf_krb5pac_PAC_DATA_version = -1;
112 static gint hf_krb5pac_DATA_BLOB_REM_remaining = -1;
114 static gint proto_dcerpc_krb5pac = -1;
115 /* Version information */
118 static e_uuid_t uuid_dcerpc_krb5pac = {
119 0x12345778, 0x1234, 0xabcd,
120 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x", 0x }
122 static guint16 ver_dcerpc_krb5pac = 0;
124 static int krb5pac_dissect_element_PAC_LOGON_NAME_logon_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
125 static int krb5pac_dissect_element_PAC_LOGON_NAME_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
126 static int krb5pac_dissect_element_PAC_LOGON_NAME_account_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
127 static int krb5pac_dissect_element_PAC_LOGON_NAME_account_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
128 static int krb5pac_dissect_element_PAC_SIGNATURE_DATA_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
129 static int krb5pac_dissect_element_PAC_SIGNATURE_DATA_signature(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
130 static int krb5pac_dissect_element_PAC_LOGON_INFO_info3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
131 static int krb5pac_dissect_element_PAC_LOGON_INFO_res_group_dom_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
132 static int krb5pac_dissect_element_PAC_LOGON_INFO_res_group_dom_sid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
133 static int krb5pac_dissect_element_PAC_LOGON_INFO_res_groups(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
134 static int krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_proxy_target(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
135 static int krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_num_transited_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
136 static int krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_transited_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
137 static int krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_transited_services_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
138 static int krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_transited_services__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
139 static int krb5pac_dissect_element_PAC_UNKNOWN_12_upn_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
140 static int krb5pac_dissect_element_PAC_UNKNOWN_12_upn_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
141 static int krb5pac_dissect_element_PAC_UNKNOWN_12_domain_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
142 static int krb5pac_dissect_element_PAC_UNKNOWN_12_domain_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
143 static int krb5pac_dissect_element_PAC_UNKNOWN_12_unknown3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
144 static int krb5pac_dissect_element_PAC_UNKNOWN_12_unknown4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
145 static int krb5pac_dissect_element_PAC_UNKNOWN_12_unknown5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
146 static int krb5pac_dissect_element_PAC_UNKNOWN_12_upn_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
147 static int krb5pac_dissect_element_PAC_UNKNOWN_12_upn_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
148 static int krb5pac_dissect_element_PAC_UNKNOWN_12_domain_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
149 static int krb5pac_dissect_element_PAC_UNKNOWN_12_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
150 static int krb5pac_dissect_element_PAC_UNKNOWN_12_unknown6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
151 static int krb5pac_dissect_element_PAC_LOGON_INFO_CTR_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
152 static int krb5pac_dissect_element_PAC_LOGON_INFO_CTR_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
153 static int krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_CTR_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
154 static int krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_CTR_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
155 const value_string krb5pac_PAC_TYPE_vals[] = {
156 { PAC_TYPE_LOGON_INFO, "PAC_TYPE_LOGON_INFO" },
157 { PAC_TYPE_SRV_CHECKSUM, "PAC_TYPE_SRV_CHECKSUM" },
158 { PAC_TYPE_KDC_CHECKSUM, "PAC_TYPE_KDC_CHECKSUM" },
159 { PAC_TYPE_LOGON_NAME, "PAC_TYPE_LOGON_NAME" },
160 { PAC_TYPE_CONSTRAINED_DELEGATION, "PAC_TYPE_CONSTRAINED_DELEGATION" },
161 { PAC_TYPE_UNKNOWN_12, "PAC_TYPE_UNKNOWN_12" },
164 static int krb5pac_dissect_element_DATA_BLOB_REM_remaining(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
165 static int krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_LOGON_INFO_logon_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
166 static int krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_LOGON_INFO_logon_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
167 static int krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_SRV_CHECKSUM_srv_cksum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
168 static int krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_KDC_CHECKSUM_kdc_cksum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
169 static int krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_LOGON_NAME_logon_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
170 static int krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION_constrained_delegation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
171 static int krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION_constrained_delegation_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
172 static int krb5pac_dissect_element_PAC_INFO_valdefault_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
173 static int krb5pac_dissect_element_PAC_INFO_valdefault_unknown_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
174 static int krb5pac_dissect_element_PAC_BUFFER_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, guint32 *type);
175 static int krb5pac_dissect_element_PAC_BUFFER__ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
176 static int krb5pac_dissect_element_PAC_BUFFER_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, guint32 *type);
177 static int krb5pac_dissect_element_PAC_BUFFER_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, guint32 *type);
178 static int krb5pac_dissect_element_PAC_BUFFER_info__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, guint32 *type);
179 static int krb5pac_dissect_element_PAC_BUFFER__pad(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
180 static int krb5pac_dissect_element_PAC_DATA_num_buffers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
181 static int krb5pac_dissect_element_PAC_DATA_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
182 static int krb5pac_dissect_element_PAC_DATA_buffers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
183 static int krb5pac_dissect_element_PAC_DATA_buffers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
184 static int krb5pac_dissect_element_PAC_BUFFER_RAW_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
185 static int krb5pac_dissect_element_PAC_BUFFER_RAW_ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
186 static int krb5pac_dissect_element_PAC_BUFFER_RAW_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
187 static int krb5pac_dissect_element_PAC_BUFFER_RAW_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
188 static int krb5pac_dissect_element_PAC_BUFFER_RAW_info__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
189 static int krb5pac_dissect_element_PAC_BUFFER_RAW__pad(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
190 static int krb5pac_dissect_element_PAC_DATA_RAW_num_buffers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
191 static int krb5pac_dissect_element_PAC_DATA_RAW_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
192 static int krb5pac_dissect_element_PAC_DATA_RAW_buffers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
193 static int krb5pac_dissect_element_PAC_DATA_RAW_buffers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
194 static int krb5pac_dissect_element_PAC_Validate_MessageType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
195 static int krb5pac_dissect_element_PAC_Validate_ChecksumLength(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
196 static int krb5pac_dissect_element_PAC_Validate_SignatureType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
197 static int krb5pac_dissect_element_PAC_Validate_SignatureLength(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
198 static int krb5pac_dissect_element_PAC_Validate_ChecksumAndSignature(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
199 static int krb5pac_dissect_element_netsamlogoncache_entry_timestamp(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
200 static int krb5pac_dissect_element_netsamlogoncache_entry_info3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
201 static int krb5pac_dissect_element_decode_pac_pac(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
202 static int krb5pac_dissect_element_decode_pac_raw_pac(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
203 static int krb5pac_dissect_element_decode_login_info_logon_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
204 static int krb5pac_dissect_element_decode_login_info_ctr_logon_info_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
205 static int krb5pac_dissect_element_decode_pac_validate_pac_validate(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
209 /* IDL: NTTIME logon_time; */
210 /* IDL: [value(2*strlen_m(account_name))] uint16 size; */
211 /* IDL: [charset(UTF16)] uint8 account_name[size]; */
215 krb5pac_dissect_element_PAC_LOGON_NAME_logon_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
217 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_LOGON_NAME_logon_time);
223 krb5pac_dissect_element_PAC_LOGON_NAME_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
225 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_LOGON_NAME_size, 0);
231 krb5pac_dissect_element_PAC_LOGON_NAME_account_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
238 krb5pac_dissect_element_PAC_LOGON_NAME_account_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
240 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_LOGON_NAME_account_name, 0);
246 krb5pac_dissect_struct_PAC_LOGON_NAME(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
248 proto_item *item = NULL;
249 proto_tree *tree = NULL;
250 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
258 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
259 tree = proto_item_add_subtree(item, ett_krb5pac_PAC_LOGON_NAME);
262 offset = krb5pac_dissect_element_PAC_LOGON_NAME_logon_time(tvb, offset, pinfo, tree, drep);
264 offset = krb5pac_dissect_element_PAC_LOGON_NAME_size(tvb, offset, pinfo, tree, drep);
266 offset = krb5pac_dissect_element_PAC_LOGON_NAME_account_name(tvb, offset, pinfo, tree, drep);
269 proto_item_set_len(item, offset-old_offset);
272 if (di->call_data->flags & DCERPC_IS_NDR64) {
281 /* IDL: uint32 type; */
282 /* IDL: [flag(LIBNDR_FLAG_REMAINING)] DATA_BLOB signature; */
286 krb5pac_dissect_element_PAC_SIGNATURE_DATA_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
288 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_SIGNATURE_DATA_type, 0);
294 krb5pac_dissect_element_PAC_SIGNATURE_DATA_signature(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
296 offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_SIGNATURE_DATA_signature, 1);
302 krb5pac_dissect_struct_PAC_SIGNATURE_DATA(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
304 proto_item *item = NULL;
305 proto_tree *tree = NULL;
306 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
314 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
315 tree = proto_item_add_subtree(item, ett_krb5pac_PAC_SIGNATURE_DATA);
318 offset = krb5pac_dissect_element_PAC_SIGNATURE_DATA_type(tvb, offset, pinfo, tree, drep);
320 offset = krb5pac_dissect_element_PAC_SIGNATURE_DATA_signature(tvb, offset, pinfo, tree, drep);
323 proto_item_set_len(item, offset-old_offset);
326 if (di->call_data->flags & DCERPC_IS_NDR64) {
335 /* IDL: netr_SamInfo3 info3; */
336 /* IDL: [unique(1)] dom_sid2 *res_group_dom_sid; */
337 /* IDL: samr_RidWithAttributeArray res_groups; */
341 krb5pac_dissect_element_PAC_LOGON_INFO_info3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
343 offset = krb5pac_dissect_struct_netr_SamInfo3(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_LOGON_INFO_info3,0);
349 krb5pac_dissect_element_PAC_LOGON_INFO_res_group_dom_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
351 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, krb5pac_dissect_element_PAC_LOGON_INFO_res_group_dom_sid_, NDR_POINTER_UNIQUE, "Pointer to Res Group Dom Sid (dom_sid2)",hf_krb5pac_PAC_LOGON_INFO_res_group_dom_sid);
357 krb5pac_dissect_element_PAC_LOGON_INFO_res_group_dom_sid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
359 offset = krb5pac_dissect_struct_dom_sid2(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_LOGON_INFO_res_group_dom_sid,0);
365 krb5pac_dissect_element_PAC_LOGON_INFO_res_groups(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
367 offset = krb5pac_dissect_struct_samr_RidWithAttributeArray(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_LOGON_INFO_res_groups,0);
373 krb5pac_dissect_struct_PAC_LOGON_INFO(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
375 proto_item *item = NULL;
376 proto_tree *tree = NULL;
377 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
385 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
386 tree = proto_item_add_subtree(item, ett_krb5pac_PAC_LOGON_INFO);
389 offset = krb5pac_dissect_element_PAC_LOGON_INFO_info3(tvb, offset, pinfo, tree, drep);
391 offset = krb5pac_dissect_element_PAC_LOGON_INFO_res_group_dom_sid(tvb, offset, pinfo, tree, drep);
393 offset = krb5pac_dissect_element_PAC_LOGON_INFO_res_groups(tvb, offset, pinfo, tree, drep);
396 proto_item_set_len(item, offset-old_offset);
399 if (di->call_data->flags & DCERPC_IS_NDR64) {
408 /* IDL: lsa_String proxy_target; */
409 /* IDL: uint32 num_transited_services; */
410 /* IDL: [unique(1)] [size_is(num_transited_services)] lsa_String *transited_services; */
414 krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_proxy_target(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
416 offset = krb5pac_dissect_struct_lsa_String(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_CONSTRAINED_DELEGATION_proxy_target,0);
422 krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_num_transited_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
424 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_CONSTRAINED_DELEGATION_num_transited_services, 0);
430 krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_transited_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
432 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_transited_services_, NDR_POINTER_UNIQUE, "Pointer to Transited Services (lsa_String)",hf_krb5pac_PAC_CONSTRAINED_DELEGATION_transited_services);
438 krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_transited_services_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
440 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_transited_services__);
446 krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_transited_services__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
448 offset = krb5pac_dissect_struct_lsa_String(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_CONSTRAINED_DELEGATION_transited_services,0);
454 krb5pac_dissect_struct_PAC_CONSTRAINED_DELEGATION(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
456 proto_item *item = NULL;
457 proto_tree *tree = NULL;
458 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
466 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
467 tree = proto_item_add_subtree(item, ett_krb5pac_PAC_CONSTRAINED_DELEGATION);
470 offset = krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_proxy_target(tvb, offset, pinfo, tree, drep);
472 offset = krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_num_transited_services(tvb, offset, pinfo, tree, drep);
474 offset = krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_transited_services(tvb, offset, pinfo, tree, drep);
477 proto_item_set_len(item, offset-old_offset);
480 if (di->call_data->flags & DCERPC_IS_NDR64) {
489 /* IDL: [value(2*strlen_m(upn_name))] uint16 upn_size; */
490 /* IDL: uint16 upn_offset; */
491 /* IDL: [value(2*strlen_m(domain_name))] uint16 domain_size; */
492 /* IDL: uint16 domain_offset; */
493 /* IDL: uint16 unknown3; */
494 /* IDL: uint16 unknown4; */
495 /* IDL: uint32 unknown5; */
496 /* IDL: [charset(UTF16)] uint8 upn_name[upn_size+2]; */
497 /* IDL: [charset(UTF16)] uint8 domain_name[domain_size+2]; */
498 /* IDL: uint32 unknown6; */
502 krb5pac_dissect_element_PAC_UNKNOWN_12_upn_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
504 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_UNKNOWN_12_upn_size, 0);
510 krb5pac_dissect_element_PAC_UNKNOWN_12_upn_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
512 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_UNKNOWN_12_upn_offset, 0);
518 krb5pac_dissect_element_PAC_UNKNOWN_12_domain_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
520 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_UNKNOWN_12_domain_size, 0);
526 krb5pac_dissect_element_PAC_UNKNOWN_12_domain_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
528 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_UNKNOWN_12_domain_offset, 0);
534 krb5pac_dissect_element_PAC_UNKNOWN_12_unknown3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
536 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_UNKNOWN_12_unknown3, 0);
542 krb5pac_dissect_element_PAC_UNKNOWN_12_unknown4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
544 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_UNKNOWN_12_unknown4, 0);
550 krb5pac_dissect_element_PAC_UNKNOWN_12_unknown5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
552 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_UNKNOWN_12_unknown5, 0);
558 krb5pac_dissect_element_PAC_UNKNOWN_12_upn_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
565 krb5pac_dissect_element_PAC_UNKNOWN_12_upn_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
567 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_UNKNOWN_12_upn_name, 0);
573 krb5pac_dissect_element_PAC_UNKNOWN_12_domain_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
580 krb5pac_dissect_element_PAC_UNKNOWN_12_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
582 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_UNKNOWN_12_domain_name, 0);
588 krb5pac_dissect_element_PAC_UNKNOWN_12_unknown6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
590 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_UNKNOWN_12_unknown6, 0);
596 krb5pac_dissect_struct_PAC_UNKNOWN_12(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
598 proto_item *item = NULL;
599 proto_tree *tree = NULL;
600 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
608 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
609 tree = proto_item_add_subtree(item, ett_krb5pac_PAC_UNKNOWN_12);
612 offset = krb5pac_dissect_element_PAC_UNKNOWN_12_upn_size(tvb, offset, pinfo, tree, drep);
614 offset = krb5pac_dissect_element_PAC_UNKNOWN_12_upn_offset(tvb, offset, pinfo, tree, drep);
616 offset = krb5pac_dissect_element_PAC_UNKNOWN_12_domain_size(tvb, offset, pinfo, tree, drep);
618 offset = krb5pac_dissect_element_PAC_UNKNOWN_12_domain_offset(tvb, offset, pinfo, tree, drep);
620 offset = krb5pac_dissect_element_PAC_UNKNOWN_12_unknown3(tvb, offset, pinfo, tree, drep);
622 offset = krb5pac_dissect_element_PAC_UNKNOWN_12_unknown4(tvb, offset, pinfo, tree, drep);
624 offset = krb5pac_dissect_element_PAC_UNKNOWN_12_unknown5(tvb, offset, pinfo, tree, drep);
626 offset = krb5pac_dissect_element_PAC_UNKNOWN_12_upn_name(tvb, offset, pinfo, tree, drep);
628 offset = krb5pac_dissect_element_PAC_UNKNOWN_12_domain_name(tvb, offset, pinfo, tree, drep);
630 offset = krb5pac_dissect_element_PAC_UNKNOWN_12_unknown6(tvb, offset, pinfo, tree, drep);
633 proto_item_set_len(item, offset-old_offset);
636 if (di->call_data->flags & DCERPC_IS_NDR64) {
645 /* IDL: [unique(1)] PAC_LOGON_INFO *info; */
649 krb5pac_dissect_element_PAC_LOGON_INFO_CTR_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
651 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, krb5pac_dissect_element_PAC_LOGON_INFO_CTR_info_, NDR_POINTER_UNIQUE, "Pointer to Info (PAC_LOGON_INFO)",hf_krb5pac_PAC_LOGON_INFO_CTR_info);
657 krb5pac_dissect_element_PAC_LOGON_INFO_CTR_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
659 offset = krb5pac_dissect_struct_PAC_LOGON_INFO(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_LOGON_INFO_CTR_info,0);
665 krb5pac_dissect_struct_PAC_LOGON_INFO_CTR(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
667 proto_item *item = NULL;
668 proto_tree *tree = NULL;
669 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
677 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
678 tree = proto_item_add_subtree(item, ett_krb5pac_PAC_LOGON_INFO_CTR);
681 offset = krb5pac_dissect_element_PAC_LOGON_INFO_CTR_info(tvb, offset, pinfo, tree, drep);
684 proto_item_set_len(item, offset-old_offset);
687 if (di->call_data->flags & DCERPC_IS_NDR64) {
696 /* IDL: [unique(1)] PAC_CONSTRAINED_DELEGATION *info; */
700 krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_CTR_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
702 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_CTR_info_, NDR_POINTER_UNIQUE, "Pointer to Info (PAC_CONSTRAINED_DELEGATION)",hf_krb5pac_PAC_CONSTRAINED_DELEGATION_CTR_info);
708 krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_CTR_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
710 offset = krb5pac_dissect_struct_PAC_CONSTRAINED_DELEGATION(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_CONSTRAINED_DELEGATION_CTR_info,0);
716 krb5pac_dissect_struct_PAC_CONSTRAINED_DELEGATION_CTR(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
718 proto_item *item = NULL;
719 proto_tree *tree = NULL;
720 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
728 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
729 tree = proto_item_add_subtree(item, ett_krb5pac_PAC_CONSTRAINED_DELEGATION_CTR);
732 offset = krb5pac_dissect_element_PAC_CONSTRAINED_DELEGATION_CTR_info(tvb, offset, pinfo, tree, drep);
735 proto_item_set_len(item, offset-old_offset);
738 if (di->call_data->flags & DCERPC_IS_NDR64) {
747 /* IDL: PAC_TYPE_LOGON_INFO=1, */
748 /* IDL: PAC_TYPE_SRV_CHECKSUM=6, */
749 /* IDL: PAC_TYPE_KDC_CHECKSUM=7, */
750 /* IDL: PAC_TYPE_LOGON_NAME=10, */
751 /* IDL: PAC_TYPE_CONSTRAINED_DELEGATION=11, */
752 /* IDL: PAC_TYPE_UNKNOWN_12=12, */
756 krb5pac_dissect_enum_PAC_TYPE(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
760 parameter=(guint32)*param;
762 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_index, ¶meter);
764 *param=(guint32)parameter;
771 /* IDL: [flag(LIBNDR_FLAG_REMAINING)] DATA_BLOB remaining; */
775 krb5pac_dissect_element_DATA_BLOB_REM_remaining(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
777 offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, drep, hf_krb5pac_DATA_BLOB_REM_remaining, 1);
783 krb5pac_dissect_struct_DATA_BLOB_REM(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
785 proto_item *item = NULL;
786 proto_tree *tree = NULL;
787 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
795 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
796 tree = proto_item_add_subtree(item, ett_krb5pac_DATA_BLOB_REM);
799 offset = krb5pac_dissect_element_DATA_BLOB_REM_remaining(tvb, offset, pinfo, tree, drep);
802 proto_item_set_len(item, offset-old_offset);
805 if (di->call_data->flags & DCERPC_IS_NDR64) {
813 /* IDL: [gensize(1)] [nodiscriminant(1)] [public(1)] union { */
814 /* IDL: [case(PAC_TYPE_LOGON_INFO)] [subcontext(0xFFFFFC01)] [case(PAC_TYPE_LOGON_INFO)] PAC_LOGON_INFO_CTR logon_info; */
815 /* IDL: [case(PAC_TYPE_SRV_CHECKSUM)] [case(PAC_TYPE_SRV_CHECKSUM)] PAC_SIGNATURE_DATA srv_cksum; */
816 /* IDL: [case(PAC_TYPE_KDC_CHECKSUM)] [case(PAC_TYPE_KDC_CHECKSUM)] PAC_SIGNATURE_DATA kdc_cksum; */
817 /* IDL: [case(PAC_TYPE_LOGON_NAME)] [case(PAC_TYPE_LOGON_NAME)] PAC_LOGON_NAME logon_name; */
818 /* IDL: [case(PAC_TYPE_CONSTRAINED_DELEGATION)] [subcontext(0xFFFFFC01)] [case(PAC_TYPE_CONSTRAINED_DELEGATION)] PAC_CONSTRAINED_DELEGATION_CTR constrained_delegation; */
819 /* IDL: [default] ; */
823 krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_LOGON_INFO_logon_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
825 dcerpc_info *di = (dcerpc_info*)pinfo->private_data;
827 int conformant = di->conformant_run;
831 guint32 saved_flags = di->call_data->flags;
832 offset = dissect_ndr_uint0(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_INFO_valPAC_TYPE_LOGON_INFO_logon_info_, &size);
833 di->call_data->flags &= ~DCERPC_IS_NDR64;
834 subtvb = tvb_new_subset(tvb, offset, size, -1);
835 krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_LOGON_INFO_logon_info_(subtvb, 0, pinfo, tree, drep);
837 di->call_data->flags = saved_flags;
844 krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_LOGON_INFO_logon_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
846 offset = krb5pac_dissect_struct_PAC_LOGON_INFO_CTR(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_INFO_valPAC_TYPE_LOGON_INFO_logon_info,0);
852 krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_SRV_CHECKSUM_srv_cksum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
854 offset = krb5pac_dissect_struct_PAC_SIGNATURE_DATA(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_INFO_valPAC_TYPE_SRV_CHECKSUM_srv_cksum,0);
860 krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_KDC_CHECKSUM_kdc_cksum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
862 offset = krb5pac_dissect_struct_PAC_SIGNATURE_DATA(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_INFO_valPAC_TYPE_KDC_CHECKSUM_kdc_cksum,0);
868 krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_LOGON_NAME_logon_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
870 offset = krb5pac_dissect_struct_PAC_LOGON_NAME(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_INFO_valPAC_TYPE_LOGON_NAME_logon_name,0);
876 krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION_constrained_delegation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
878 dcerpc_info *di = (dcerpc_info*)pinfo->private_data;
880 int conformant = di->conformant_run;
884 guint32 saved_flags = di->call_data->flags;
885 offset = dissect_ndr_uint0(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION_constrained_delegation_, &size);
886 di->call_data->flags &= ~DCERPC_IS_NDR64;
887 subtvb = tvb_new_subset(tvb, offset, size, -1);
888 krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION_constrained_delegation_(subtvb, 0, pinfo, tree, drep);
890 di->call_data->flags = saved_flags;
897 krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION_constrained_delegation_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
899 offset = krb5pac_dissect_struct_PAC_CONSTRAINED_DELEGATION_CTR(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION_constrained_delegation,0);
905 krb5pac_dissect_element_PAC_INFO_valdefault_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
907 dcerpc_info *di = (dcerpc_info*)pinfo->private_data;
909 int conformant = di->conformant_run;
913 guint32 saved_flags = di->call_data->flags;
914 offset = dissect_ndr_uint0(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_INFO_valdefault_unknown_, &size);
915 di->call_data->flags &= ~DCERPC_IS_NDR64;
916 subtvb = tvb_new_subset(tvb, offset, size, -1);
917 krb5pac_dissect_element_PAC_INFO_valdefault_unknown_(subtvb, 0, pinfo, tree, drep);
919 di->call_data->flags = saved_flags;
926 krb5pac_dissect_element_PAC_INFO_valdefault_unknown_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
928 offset = krb5pac_dissect_struct_DATA_BLOB_REM(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_INFO_valdefault_unknown,0);
934 krb5pac_dissect_PAC_INFO(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
936 proto_item *item = NULL;
937 proto_tree *tree = NULL;
939 guint32 level = param;
943 item = proto_tree_add_text(parent_tree, tvb, offset, -1, "PAC_INFO");
944 tree = proto_item_add_subtree(item, ett_krb5pac_PAC_INFO);
948 case PAC_TYPE_LOGON_INFO:
949 offset = krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_LOGON_INFO_logon_info(tvb, offset, pinfo, tree, drep);
952 case PAC_TYPE_SRV_CHECKSUM:
953 offset = krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_SRV_CHECKSUM_srv_cksum(tvb, offset, pinfo, tree, drep);
956 case PAC_TYPE_KDC_CHECKSUM:
957 offset = krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_KDC_CHECKSUM_kdc_cksum(tvb, offset, pinfo, tree, drep);
960 case PAC_TYPE_LOGON_NAME:
961 offset = krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_LOGON_NAME_logon_name(tvb, offset, pinfo, tree, drep);
964 case PAC_TYPE_CONSTRAINED_DELEGATION:
965 offset = krb5pac_dissect_element_PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION_constrained_delegation(tvb, offset, pinfo, tree, drep);
969 offset = krb5pac_dissect_element_PAC_INFO_valdefault_unknown(tvb, offset, pinfo, tree, drep);
972 proto_item_set_len(item, offset-old_offset);
979 /* IDL: PAC_TYPE type; */
980 /* IDL: [value(_ndr_size_PAC_INFO(info,type,0))] uint32 _ndr_size; */
981 /* IDL: [relative(1)] [subcontext_size(_subcontext_size_PAC_INFO(r,ndr->flags))] [subcontext(0)] [switch_is(type)] [flag(LIBNDR_FLAG_ALIGN8)] PAC_INFO *info; */
982 /* IDL: [value(0)] uint32 _pad; */
986 krb5pac_dissect_element_PAC_BUFFER_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, guint32 *type)
988 offset = krb5pac_dissect_enum_PAC_TYPE(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_BUFFER_type, type);
994 krb5pac_dissect_element_PAC_BUFFER__ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
996 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_BUFFER__ndr_size, 0);
1002 krb5pac_dissect_element_PAC_BUFFER_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, guint32 *type)
1004 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, krb5pac_dissect_element_PAC_BUFFER_info_, , "Pointer to Info (PAC_INFO)",hf_krb5pac_PAC_BUFFER_info);
1010 krb5pac_dissect_element_PAC_BUFFER_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, guint32 *type)
1012 dcerpc_info *di = (dcerpc_info*)pinfo->private_data;
1014 int conformant = di->conformant_run;
1018 guint32 saved_flags = di->call_data->flags;
1019 offset = dissect_ndr_uint0(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_BUFFER_info_, &size);
1020 di->call_data->flags &= ~DCERPC_IS_NDR64;
1021 subtvb = tvb_new_subset(tvb, offset, size, -1);
1022 krb5pac_dissect_element_PAC_BUFFER_info__(subtvb, 0, pinfo, tree, drep, type);
1024 di->call_data->flags = saved_flags;
1031 krb5pac_dissect_element_PAC_BUFFER_info__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, guint32 *type)
1033 offset = krb5pac_dissect_PAC_INFO(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_BUFFER_info, *type);
1039 krb5pac_dissect_element_PAC_BUFFER__pad(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1041 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_BUFFER__pad, 0);
1047 krb5pac_dissect_struct_PAC_BUFFER(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
1050 proto_item *item = NULL;
1051 proto_tree *tree = NULL;
1052 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
1057 old_offset = offset;
1060 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1061 tree = proto_item_add_subtree(item, ett_krb5pac_PAC_BUFFER);
1064 offset = krb5pac_dissect_element_PAC_BUFFER_type(tvb, offset, pinfo, tree, drep, &type);
1066 offset = krb5pac_dissect_element_PAC_BUFFER__ndr_size(tvb, offset, pinfo, tree, drep);
1068 offset = krb5pac_dissect_element_PAC_BUFFER_info(tvb, offset, pinfo, tree, drep, &type);
1070 offset = krb5pac_dissect_element_PAC_BUFFER__pad(tvb, offset, pinfo, tree, drep);
1073 proto_item_set_len(item, offset-old_offset);
1076 if (di->call_data->flags & DCERPC_IS_NDR64) {
1085 /* IDL: uint32 num_buffers; */
1086 /* IDL: uint32 version; */
1087 /* IDL: PAC_BUFFER buffers[num_buffers]; */
1091 krb5pac_dissect_element_PAC_DATA_num_buffers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1093 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_DATA_num_buffers, 0);
1099 krb5pac_dissect_element_PAC_DATA_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1101 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_DATA_version, 0);
1107 krb5pac_dissect_element_PAC_DATA_buffers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1114 krb5pac_dissect_element_PAC_DATA_buffers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1116 offset = krb5pac_dissect_struct_PAC_BUFFER(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_DATA_buffers,0);
1122 krb5pac_dissect_struct_PAC_DATA(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
1124 proto_item *item = NULL;
1125 proto_tree *tree = NULL;
1126 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
1131 old_offset = offset;
1134 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1135 tree = proto_item_add_subtree(item, ett_krb5pac_PAC_DATA);
1138 offset = krb5pac_dissect_element_PAC_DATA_num_buffers(tvb, offset, pinfo, tree, drep);
1140 offset = krb5pac_dissect_element_PAC_DATA_version(tvb, offset, pinfo, tree, drep);
1142 offset = krb5pac_dissect_element_PAC_DATA_buffers(tvb, offset, pinfo, tree, drep);
1145 proto_item_set_len(item, offset-old_offset);
1148 if (di->call_data->flags & DCERPC_IS_NDR64) {
1157 /* IDL: PAC_TYPE type; */
1158 /* IDL: uint32 ndr_size; */
1159 /* IDL: [relative(1)] [subcontext_size(NDR_ROUND(ndr_size,8))] [subcontext(0)] [flag(LIBNDR_FLAG_ALIGN8)] DATA_BLOB_REM *info; */
1160 /* IDL: [value(0)] uint32 _pad; */
1164 krb5pac_dissect_element_PAC_BUFFER_RAW_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1166 offset = krb5pac_dissect_enum_PAC_TYPE(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_BUFFER_RAW_type, 0);
1172 krb5pac_dissect_element_PAC_BUFFER_RAW_ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1174 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_BUFFER_RAW_ndr_size, 0);
1180 krb5pac_dissect_element_PAC_BUFFER_RAW_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1182 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, krb5pac_dissect_element_PAC_BUFFER_RAW_info_, , "Pointer to Info (DATA_BLOB_REM)",hf_krb5pac_PAC_BUFFER_RAW_info);
1188 krb5pac_dissect_element_PAC_BUFFER_RAW_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1190 dcerpc_info *di = (dcerpc_info*)pinfo->private_data;
1192 int conformant = di->conformant_run;
1196 guint32 saved_flags = di->call_data->flags;
1197 offset = dissect_ndr_uint0(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_BUFFER_RAW_info_, &size);
1198 di->call_data->flags &= ~DCERPC_IS_NDR64;
1199 subtvb = tvb_new_subset(tvb, offset, size, -1);
1200 krb5pac_dissect_element_PAC_BUFFER_RAW_info__(subtvb, 0, pinfo, tree, drep);
1202 di->call_data->flags = saved_flags;
1209 krb5pac_dissect_element_PAC_BUFFER_RAW_info__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1211 offset = krb5pac_dissect_struct_DATA_BLOB_REM(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_BUFFER_RAW_info,0);
1217 krb5pac_dissect_element_PAC_BUFFER_RAW__pad(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1219 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_BUFFER_RAW__pad, 0);
1225 krb5pac_dissect_struct_PAC_BUFFER_RAW(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
1227 proto_item *item = NULL;
1228 proto_tree *tree = NULL;
1229 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
1234 old_offset = offset;
1237 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1238 tree = proto_item_add_subtree(item, ett_krb5pac_PAC_BUFFER_RAW);
1241 offset = krb5pac_dissect_element_PAC_BUFFER_RAW_type(tvb, offset, pinfo, tree, drep);
1243 offset = krb5pac_dissect_element_PAC_BUFFER_RAW_ndr_size(tvb, offset, pinfo, tree, drep);
1245 offset = krb5pac_dissect_element_PAC_BUFFER_RAW_info(tvb, offset, pinfo, tree, drep);
1247 offset = krb5pac_dissect_element_PAC_BUFFER_RAW__pad(tvb, offset, pinfo, tree, drep);
1250 proto_item_set_len(item, offset-old_offset);
1253 if (di->call_data->flags & DCERPC_IS_NDR64) {
1262 /* IDL: uint32 num_buffers; */
1263 /* IDL: uint32 version; */
1264 /* IDL: PAC_BUFFER_RAW buffers[num_buffers]; */
1268 krb5pac_dissect_element_PAC_DATA_RAW_num_buffers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1270 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_DATA_RAW_num_buffers, 0);
1276 krb5pac_dissect_element_PAC_DATA_RAW_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1278 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_DATA_RAW_version, 0);
1284 krb5pac_dissect_element_PAC_DATA_RAW_buffers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1291 krb5pac_dissect_element_PAC_DATA_RAW_buffers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1293 offset = krb5pac_dissect_struct_PAC_BUFFER_RAW(tvb,offset,pinfo,tree,drep,hf_krb5pac_PAC_DATA_RAW_buffers,0);
1299 krb5pac_dissect_struct_PAC_DATA_RAW(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
1301 proto_item *item = NULL;
1302 proto_tree *tree = NULL;
1303 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
1308 old_offset = offset;
1311 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1312 tree = proto_item_add_subtree(item, ett_krb5pac_PAC_DATA_RAW);
1315 offset = krb5pac_dissect_element_PAC_DATA_RAW_num_buffers(tvb, offset, pinfo, tree, drep);
1317 offset = krb5pac_dissect_element_PAC_DATA_RAW_version(tvb, offset, pinfo, tree, drep);
1319 offset = krb5pac_dissect_element_PAC_DATA_RAW_buffers(tvb, offset, pinfo, tree, drep);
1322 proto_item_set_len(item, offset-old_offset);
1325 if (di->call_data->flags & DCERPC_IS_NDR64) {
1334 /* IDL: [value(NETLOGON_GENERIC_KRB5_PAC_VALIDATE)] uint32 MessageType; */
1335 /* IDL: uint32 ChecksumLength; */
1336 /* IDL: int32 SignatureType; */
1337 /* IDL: uint32 SignatureLength; */
1338 /* IDL: [flag(LIBNDR_FLAG_REMAINING)] DATA_BLOB ChecksumAndSignature; */
1342 krb5pac_dissect_element_PAC_Validate_MessageType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1344 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_Validate_MessageType, 0);
1350 krb5pac_dissect_element_PAC_Validate_ChecksumLength(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1352 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_Validate_ChecksumLength, 0);
1358 krb5pac_dissect_element_PAC_Validate_SignatureType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1360 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_Validate_SignatureType, 0);
1366 krb5pac_dissect_element_PAC_Validate_SignatureLength(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1368 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_Validate_SignatureLength, 0);
1374 krb5pac_dissect_element_PAC_Validate_ChecksumAndSignature(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1376 offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, drep, hf_krb5pac_PAC_Validate_ChecksumAndSignature, 1);
1382 krb5pac_dissect_struct_PAC_Validate(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
1384 proto_item *item = NULL;
1385 proto_tree *tree = NULL;
1386 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
1391 old_offset = offset;
1394 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1395 tree = proto_item_add_subtree(item, ett_krb5pac_PAC_Validate);
1398 offset = krb5pac_dissect_element_PAC_Validate_MessageType(tvb, offset, pinfo, tree, drep);
1400 offset = krb5pac_dissect_element_PAC_Validate_ChecksumLength(tvb, offset, pinfo, tree, drep);
1402 offset = krb5pac_dissect_element_PAC_Validate_SignatureType(tvb, offset, pinfo, tree, drep);
1404 offset = krb5pac_dissect_element_PAC_Validate_SignatureLength(tvb, offset, pinfo, tree, drep);
1406 offset = krb5pac_dissect_element_PAC_Validate_ChecksumAndSignature(tvb, offset, pinfo, tree, drep);
1409 proto_item_set_len(item, offset-old_offset);
1412 if (di->call_data->flags & DCERPC_IS_NDR64) {
1421 /* IDL: time_t timestamp; */
1422 /* IDL: netr_SamInfo3 info3; */
1426 krb5pac_dissect_element_netsamlogoncache_entry_timestamp(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1428 offset = dissect_ndr_time_t(tvb, offset, pinfo,tree, drep, hf_krb5pac_netsamlogoncache_entry_timestamp, NULL);
1434 krb5pac_dissect_element_netsamlogoncache_entry_info3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1436 offset = krb5pac_dissect_struct_netr_SamInfo3(tvb,offset,pinfo,tree,drep,hf_krb5pac_netsamlogoncache_entry_info3,0);
1442 krb5pac_dissect_struct_netsamlogoncache_entry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
1444 proto_item *item = NULL;
1445 proto_tree *tree = NULL;
1446 dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
1451 old_offset = offset;
1454 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1455 tree = proto_item_add_subtree(item, ett_krb5pac_netsamlogoncache_entry);
1458 offset = krb5pac_dissect_element_netsamlogoncache_entry_timestamp(tvb, offset, pinfo, tree, drep);
1460 offset = krb5pac_dissect_element_netsamlogoncache_entry_info3(tvb, offset, pinfo, tree, drep);
1463 proto_item_set_len(item, offset-old_offset);
1466 if (di->call_data->flags & DCERPC_IS_NDR64) {
1474 krb5pac_dissect_element_decode_pac_pac(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1476 offset = krb5pac_dissect_struct_PAC_DATA(tvb,offset,pinfo,tree,drep,hf_krb5pac_decode_pac_pac,0);
1481 /* IDL: void decode_pac( */
1482 /* IDL: [in] PAC_DATA pac */
1486 krb5pac_dissect_decode_pac_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1488 pinfo->dcerpc_procedure_name="decode_pac";
1493 krb5pac_dissect_decode_pac_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1495 pinfo->dcerpc_procedure_name="decode_pac";
1496 offset = krb5pac_dissect_element_decode_pac_pac(tvb, offset, pinfo, tree, drep);
1497 offset = dissect_deferred_pointers(pinfo, tvb, offset, drep);
1502 krb5pac_dissect_element_decode_pac_raw_pac(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1504 offset = krb5pac_dissect_struct_PAC_DATA_RAW(tvb,offset,pinfo,tree,drep,hf_krb5pac_decode_pac_raw_pac,0);
1509 /* IDL: void decode_pac_raw( */
1510 /* IDL: [in] PAC_DATA_RAW pac */
1514 krb5pac_dissect_decode_pac_raw_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1516 pinfo->dcerpc_procedure_name="decode_pac_raw";
1521 krb5pac_dissect_decode_pac_raw_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1523 pinfo->dcerpc_procedure_name="decode_pac_raw";
1524 offset = krb5pac_dissect_element_decode_pac_raw_pac(tvb, offset, pinfo, tree, drep);
1525 offset = dissect_deferred_pointers(pinfo, tvb, offset, drep);
1530 krb5pac_dissect_element_decode_login_info_logon_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1532 offset = krb5pac_dissect_struct_PAC_LOGON_INFO(tvb,offset,pinfo,tree,drep,hf_krb5pac_decode_login_info_logon_info,0);
1537 /* IDL: void decode_login_info( */
1538 /* IDL: [in] PAC_LOGON_INFO logon_info */
1542 krb5pac_dissect_decode_login_info_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1544 pinfo->dcerpc_procedure_name="decode_login_info";
1549 krb5pac_dissect_decode_login_info_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1551 pinfo->dcerpc_procedure_name="decode_login_info";
1552 offset = krb5pac_dissect_element_decode_login_info_logon_info(tvb, offset, pinfo, tree, drep);
1553 offset = dissect_deferred_pointers(pinfo, tvb, offset, drep);
1558 krb5pac_dissect_element_decode_login_info_ctr_logon_info_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1560 offset = krb5pac_dissect_struct_PAC_LOGON_INFO_CTR(tvb,offset,pinfo,tree,drep,hf_krb5pac_decode_login_info_ctr_logon_info_ctr,0);
1565 /* IDL: void decode_login_info_ctr( */
1566 /* IDL: [in] PAC_LOGON_INFO_CTR logon_info_ctr */
1570 krb5pac_dissect_decode_login_info_ctr_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1572 pinfo->dcerpc_procedure_name="decode_login_info_ctr";
1577 krb5pac_dissect_decode_login_info_ctr_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1579 pinfo->dcerpc_procedure_name="decode_login_info_ctr";
1580 offset = krb5pac_dissect_element_decode_login_info_ctr_logon_info_ctr(tvb, offset, pinfo, tree, drep);
1581 offset = dissect_deferred_pointers(pinfo, tvb, offset, drep);
1586 krb5pac_dissect_element_decode_pac_validate_pac_validate(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1588 offset = krb5pac_dissect_struct_PAC_Validate(tvb,offset,pinfo,tree,drep,hf_krb5pac_decode_pac_validate_pac_validate,0);
1593 /* IDL: void decode_pac_validate( */
1594 /* IDL: [in] PAC_Validate pac_validate */
1598 krb5pac_dissect_decode_pac_validate_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1600 pinfo->dcerpc_procedure_name="decode_pac_validate";
1605 krb5pac_dissect_decode_pac_validate_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
1607 pinfo->dcerpc_procedure_name="decode_pac_validate";
1608 offset = krb5pac_dissect_element_decode_pac_validate_pac_validate(tvb, offset, pinfo, tree, drep);
1609 offset = dissect_deferred_pointers(pinfo, tvb, offset, drep);
1614 static dcerpc_sub_dissector krb5pac_dissectors[] = {
1616 krb5pac_dissect_decode_pac_request, krb5pac_dissect_decode_pac_response},
1617 { 1, "decode_pac_raw",
1618 krb5pac_dissect_decode_pac_raw_request, krb5pac_dissect_decode_pac_raw_response},
1619 { 2, "decode_login_info",
1620 krb5pac_dissect_decode_login_info_request, krb5pac_dissect_decode_login_info_response},
1621 { 3, "decode_login_info_ctr",
1622 krb5pac_dissect_decode_login_info_ctr_request, krb5pac_dissect_decode_login_info_ctr_response},
1623 { 4, "decode_pac_validate",
1624 krb5pac_dissect_decode_pac_validate_request, krb5pac_dissect_decode_pac_validate_response},
1625 { 0, NULL, NULL, NULL }
1628 void proto_register_dcerpc_krb5pac(void)
1630 static hf_register_info hf[] = {
1631 { &hf_krb5pac_PAC_LOGON_INFO_res_group_dom_sid,
1632 { "Res Group Dom Sid", "krb5pac.PAC_LOGON_INFO.res_group_dom_sid", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1633 { &hf_krb5pac_PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION_constrained_delegation_,
1634 { "Subcontext length", "krb5pac.PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION.subcontext", FT_UINT0, BASE_HEX, NULL, 0, NULL, HFILL }},
1635 { &hf_krb5pac_PAC_LOGON_INFO_info3,
1636 { "Info3", "krb5pac.PAC_LOGON_INFO.info3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1637 { &hf_krb5pac_PAC_Validate_MessageType,
1638 { "Messagetype", "krb5pac.PAC_Validate.MessageType", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1639 { &hf_krb5pac_PAC_UNKNOWN_12_upn_name,
1640 { "Upn Name", "krb5pac.PAC_UNKNOWN_12.upn_name", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
1641 { &hf_krb5pac_PAC_INFO_valPAC_TYPE_KDC_CHECKSUM_kdc_cksum,
1642 { "Kdc Cksum", "krb5pac.PAC_INFO_valPAC_TYPE_KDC_CHECKSUM.kdc_cksum", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1643 { &hf_krb5pac_PAC_UNKNOWN_12_domain_size,
1644 { "Domain Size", "krb5pac.PAC_UNKNOWN_12.domain_size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
1645 { &hf_krb5pac_PAC_BUFFER__pad,
1646 { " Pad", "krb5pac.PAC_BUFFER._pad", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1647 { &hf_krb5pac_PAC_UNKNOWN_12_domain_name,
1648 { "Domain Name", "krb5pac.PAC_UNKNOWN_12.domain_name", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
1649 { &hf_krb5pac_PAC_UNKNOWN_12_domain_offset,
1650 { "Domain Offset", "krb5pac.PAC_UNKNOWN_12.domain_offset", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
1651 { &hf_krb5pac_PAC_SIGNATURE_DATA_signature,
1652 { "Signature", "krb5pac.PAC_SIGNATURE_DATA.signature", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1653 { &hf_krb5pac_PAC_UNKNOWN_12_upn_size,
1654 { "Upn Size", "krb5pac.PAC_UNKNOWN_12.upn_size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
1655 { &hf_krb5pac_PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION_constrained_delegation,
1656 { "Constrained Delegation", "krb5pac.PAC_INFO_valPAC_TYPE_CONSTRAINED_DELEGATION.constrained_delegation", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1657 { &hf_krb5pac_opnum,
1658 { "Operation", "krb5pac.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
1659 { &hf_krb5pac_PAC_LOGON_NAME_size,
1660 { "Size", "krb5pac.PAC_LOGON_NAME.size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
1661 { &hf_krb5pac_decode_login_info_logon_info,
1662 { "Logon Info", "krb5pac.decode_login_info.logon_info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1663 { &hf_krb5pac_decode_pac_validate_pac_validate,
1664 { "Pac Validate", "krb5pac.decode_pac_validate.pac_validate", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1665 { &hf_krb5pac_PAC_DATA_buffers,
1666 { "Buffers", "krb5pac.PAC_DATA.buffers", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1667 { &hf_krb5pac_PAC_BUFFER_info_,
1668 { "Subcontext length", "krb5pac.PAC_BUFFER.subcontext", FT_UINT0, BASE_HEX, NULL, 0, NULL, HFILL }},
1669 { &hf_krb5pac_PAC_DATA_RAW_version,
1670 { "Version", "krb5pac.PAC_DATA_RAW.version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1671 { &hf_krb5pac_PAC_BUFFER_RAW_ndr_size,
1672 { "Ndr Size", "krb5pac.PAC_BUFFER_RAW.ndr_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1673 { &hf_krb5pac_PAC_CONSTRAINED_DELEGATION_num_transited_services,
1674 { "Num Transited Services", "krb5pac.PAC_CONSTRAINED_DELEGATION.num_transited_services", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1675 { &hf_krb5pac_PAC_CONSTRAINED_DELEGATION_transited_services,
1676 { "Transited Services", "krb5pac.PAC_CONSTRAINED_DELEGATION.transited_services", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1677 { &hf_krb5pac_PAC_BUFFER_type,
1678 { "Type", "krb5pac.PAC_BUFFER.type", FT_UINT32, BASE_DEC, VALS(krb5pac_PAC_TYPE_vals), 0, NULL, HFILL }},
1679 { &hf_krb5pac_PAC_CONSTRAINED_DELEGATION_proxy_target,
1680 { "Proxy Target", "krb5pac.PAC_CONSTRAINED_DELEGATION.proxy_target", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1681 { &hf_krb5pac_PAC_UNKNOWN_12_unknown6,
1682 { "Unknown6", "krb5pac.PAC_UNKNOWN_12.unknown6", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1683 { &hf_krb5pac_PAC_UNKNOWN_12_unknown5,
1684 { "Unknown5", "krb5pac.PAC_UNKNOWN_12.unknown5", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1685 { &hf_krb5pac_PAC_INFO_valdefault_unknown_,
1686 { "Subcontext length", "krb5pac.PAC_INFO_valdefault.subcontext", FT_UINT0, BASE_HEX, NULL, 0, NULL, HFILL }},
1687 { &hf_krb5pac_PAC_LOGON_NAME_logon_time,
1688 { "Logon Time", "krb5pac.PAC_LOGON_NAME.logon_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
1689 { &hf_krb5pac_decode_pac_raw_pac,
1690 { "Pac", "krb5pac.decode_pac_raw.pac", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1691 { &hf_krb5pac_PAC_BUFFER__ndr_size,
1692 { " Ndr Size", "krb5pac.PAC_BUFFER._ndr_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1693 { &hf_krb5pac_PAC_LOGON_INFO_res_groups,
1694 { "Res Groups", "krb5pac.PAC_LOGON_INFO.res_groups", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1695 { &hf_krb5pac_PAC_UNKNOWN_12_unknown3,
1696 { "Unknown3", "krb5pac.PAC_UNKNOWN_12.unknown3", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
1697 { &hf_krb5pac_PAC_UNKNOWN_12_upn_offset,
1698 { "Upn Offset", "krb5pac.PAC_UNKNOWN_12.upn_offset", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
1699 { &hf_krb5pac_PAC_Validate_ChecksumAndSignature,
1700 { "Checksumandsignature", "krb5pac.PAC_Validate.ChecksumAndSignature", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1701 { &hf_krb5pac_decode_login_info_ctr_logon_info_ctr,
1702 { "Logon Info Ctr", "krb5pac.decode_login_info_ctr.logon_info_ctr", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1703 { &hf_krb5pac_PAC_INFO_valdefault_unknown,
1704 { "Unknown", "krb5pac.PAC_INFO_valdefault.unknown", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1705 { &hf_krb5pac_PAC_CONSTRAINED_DELEGATION_CTR_info,
1706 { "Info", "krb5pac.PAC_CONSTRAINED_DELEGATION_CTR.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1707 { &hf_krb5pac_PAC_INFO_valPAC_TYPE_LOGON_INFO_logon_info_,
1708 { "Subcontext length", "krb5pac.PAC_INFO_valPAC_TYPE_LOGON_INFO.subcontext", FT_UINT0, BASE_HEX, NULL, 0, NULL, HFILL }},
1709 { &hf_krb5pac_PAC_BUFFER_info,
1710 { "Info", "krb5pac.PAC_BUFFER.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1711 { &hf_krb5pac_netsamlogoncache_entry_info3,
1712 { "Info3", "krb5pac.netsamlogoncache_entry.info3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1713 { &hf_krb5pac_PAC_Validate_SignatureType,
1714 { "Signaturetype", "krb5pac.PAC_Validate.SignatureType", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1715 { &hf_krb5pac_PAC_DATA_num_buffers,
1716 { "Num Buffers", "krb5pac.PAC_DATA.num_buffers", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1717 { &hf_krb5pac_PAC_BUFFER_RAW__pad,
1718 { " Pad", "krb5pac.PAC_BUFFER_RAW._pad", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1719 { &hf_krb5pac_PAC_BUFFER_RAW_info,
1720 { "Info", "krb5pac.PAC_BUFFER_RAW.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1721 { &hf_krb5pac_PAC_INFO_valPAC_TYPE_SRV_CHECKSUM_srv_cksum,
1722 { "Srv Cksum", "krb5pac.PAC_INFO_valPAC_TYPE_SRV_CHECKSUM.srv_cksum", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1723 { &hf_krb5pac_PAC_INFO_valPAC_TYPE_LOGON_NAME_logon_name,
1724 { "Logon Name", "krb5pac.PAC_INFO_valPAC_TYPE_LOGON_NAME.logon_name", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1725 { &hf_krb5pac_PAC_LOGON_NAME_account_name,
1726 { "Account Name", "krb5pac.PAC_LOGON_NAME.account_name", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
1727 { &hf_krb5pac_PAC_Validate_ChecksumLength,
1728 { "Checksumlength", "krb5pac.PAC_Validate.ChecksumLength", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1729 { &hf_krb5pac_PAC_UNKNOWN_12_unknown4,
1730 { "Unknown4", "krb5pac.PAC_UNKNOWN_12.unknown4", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
1731 { &hf_krb5pac_netsamlogoncache_entry_timestamp,
1732 { "Timestamp", "krb5pac.netsamlogoncache_entry.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
1733 { &hf_krb5pac_PAC_DATA_RAW_buffers,
1734 { "Buffers", "krb5pac.PAC_DATA_RAW.buffers", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1735 { &hf_krb5pac_PAC_SIGNATURE_DATA_type,
1736 { "Type", "krb5pac.PAC_SIGNATURE_DATA.type", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1737 { &hf_krb5pac_PAC_INFO_valPAC_TYPE_LOGON_INFO_logon_info,
1738 { "Logon Info", "krb5pac.PAC_INFO_valPAC_TYPE_LOGON_INFO.logon_info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1739 { &hf_krb5pac_decode_pac_pac,
1740 { "Pac", "krb5pac.decode_pac.pac", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1741 { &hf_krb5pac_PAC_Validate_SignatureLength,
1742 { "Signaturelength", "krb5pac.PAC_Validate.SignatureLength", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1743 { &hf_krb5pac_PAC_DATA_RAW_num_buffers,
1744 { "Num Buffers", "krb5pac.PAC_DATA_RAW.num_buffers", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1745 { &hf_krb5pac_PAC_BUFFER_RAW_info_,
1746 { "Subcontext length", "krb5pac.PAC_BUFFER_RAW.subcontext", FT_UINT0, BASE_HEX, NULL, 0, NULL, HFILL }},
1747 { &hf_krb5pac_PAC_BUFFER_RAW_type,
1748 { "Type", "krb5pac.PAC_BUFFER_RAW.type", FT_UINT32, BASE_DEC, VALS(krb5pac_PAC_TYPE_vals), 0, NULL, HFILL }},
1749 { &hf_krb5pac_PAC_LOGON_INFO_CTR_info,
1750 { "Info", "krb5pac.PAC_LOGON_INFO_CTR.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1751 { &hf_krb5pac_PAC_DATA_version,
1752 { "Version", "krb5pac.PAC_DATA.version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
1753 { &hf_krb5pac_DATA_BLOB_REM_remaining,
1754 { "Remaining", "krb5pac.DATA_BLOB_REM.remaining", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
1758 static gint *ett[] = {
1759 &ett_dcerpc_krb5pac,
1760 &ett_krb5pac_PAC_LOGON_NAME,
1761 &ett_krb5pac_PAC_SIGNATURE_DATA,
1762 &ett_krb5pac_PAC_LOGON_INFO,
1763 &ett_krb5pac_PAC_CONSTRAINED_DELEGATION,
1764 &ett_krb5pac_PAC_UNKNOWN_12,
1765 &ett_krb5pac_PAC_LOGON_INFO_CTR,
1766 &ett_krb5pac_PAC_CONSTRAINED_DELEGATION_CTR,
1767 &ett_krb5pac_DATA_BLOB_REM,
1768 &ett_krb5pac_PAC_INFO,
1769 &ett_krb5pac_PAC_BUFFER,
1770 &ett_krb5pac_PAC_DATA,
1771 &ett_krb5pac_PAC_BUFFER_RAW,
1772 &ett_krb5pac_PAC_DATA_RAW,
1773 &ett_krb5pac_PAC_Validate,
1774 &ett_krb5pac_netsamlogoncache_entry,
1777 proto_dcerpc_krb5pac = proto_register_protocol("Active Directory KRB5 PAC", "KRB5PAC", "krb5pac");
1778 proto_register_field_array(proto_dcerpc_krb5pac, hf, array_length (hf));
1779 proto_register_subtree_array(ett, array_length(ett));
1782 void proto_reg_handoff_dcerpc_krb5pac(void)
1784 dcerpc_init_uuid(proto_dcerpc_krb5pac, ett_dcerpc_krb5pac,
1785 &uuid_dcerpc_krb5pac, ver_dcerpc_krb5pac,
1786 krb5pac_dissectors, hf_krb5pac_opnum);