/src/wireshark/epan/dissectors/packet-h235.c
Line | Count | Source |
1 | | /* Do not modify this file. Changes will be overwritten. */ |
2 | | /* Generated automatically by the ASN.1 to Wireshark dissector compiler */ |
3 | | /* packet-h235.c */ |
4 | | /* asn2wrs.py -q -L -p h235 -c ./h235.cnf -s ./packet-h235-template -D . -O ../.. H235-SECURITY-MESSAGES.asn H235-SRTP.asn */ |
5 | | |
6 | | /* packet-h235.c |
7 | | * Routines for H.235 packet dissection |
8 | | * 2004 Tomas Kukosa |
9 | | * |
10 | | * Wireshark - Network traffic analyzer |
11 | | * By Gerald Combs <gerald@wireshark.org> |
12 | | * Copyright 1998 Gerald Combs |
13 | | * |
14 | | * SPDX-License-Identifier: GPL-2.0-or-later |
15 | | */ |
16 | | |
17 | | #include "config.h" |
18 | | |
19 | | #include <epan/packet.h> |
20 | | #include <epan/oids.h> |
21 | | #include <epan/asn1.h> |
22 | | #include <wsutil/array.h> |
23 | | |
24 | | #include "packet-per.h" |
25 | | #include "packet-h235.h" |
26 | | #include "packet-h225.h" |
27 | | |
28 | 16 | #define OID_MIKEY "0.0.8.235.0.3.76" |
29 | 16 | #define OID_MIKEY_PS "0.0.8.235.0.3.72" |
30 | 16 | #define OID_MIKEY_DHHMAC "0.0.8.235.0.3.73" |
31 | 16 | #define OID_MIKEY_PK_SIGN "0.0.8.235.0.3.74" |
32 | 16 | #define OID_MIKEY_DH_SIGN "0.0.8.235.0.3.75" |
33 | 16 | #define OID_TG "0.0.8.235.0.3.70" |
34 | 16 | #define OID_SG "0.0.8.235.0.3.71" |
35 | | |
36 | | void proto_register_h235(void); |
37 | | void proto_reg_handoff_h235(void); |
38 | | |
39 | | /* Initialize the protocol and registered fields */ |
40 | | static int proto_h235; |
41 | | static int hf_h235_SrtpCryptoCapability_PDU; /* SrtpCryptoCapability */ |
42 | | static int hf_h235_nonStandardIdentifier; /* OBJECT_IDENTIFIER */ |
43 | | static int hf_h235_data; /* OCTET_STRING */ |
44 | | static int hf_h235_halfkey; /* BIT_STRING_SIZE_0_2048 */ |
45 | | static int hf_h235_modSize; /* BIT_STRING_SIZE_0_2048 */ |
46 | | static int hf_h235_generator; /* BIT_STRING_SIZE_0_2048 */ |
47 | | static int hf_h235_x; /* BIT_STRING_SIZE_0_511 */ |
48 | | static int hf_h235_y; /* BIT_STRING_SIZE_0_511 */ |
49 | | static int hf_h235_eckasdhp; /* T_eckasdhp */ |
50 | | static int hf_h235_public_key; /* ECpoint */ |
51 | | static int hf_h235_modulus; /* BIT_STRING_SIZE_0_511 */ |
52 | | static int hf_h235_base; /* ECpoint */ |
53 | | static int hf_h235_weierstrassA; /* BIT_STRING_SIZE_0_511 */ |
54 | | static int hf_h235_weierstrassB; /* BIT_STRING_SIZE_0_511 */ |
55 | | static int hf_h235_eckasdh2; /* T_eckasdh2 */ |
56 | | static int hf_h235_fieldSize; /* BIT_STRING_SIZE_0_511 */ |
57 | | static int hf_h235_type; /* OBJECT_IDENTIFIER */ |
58 | | static int hf_h235_certificatedata; /* OCTET_STRING */ |
59 | | static int hf_h235_default; /* NULL */ |
60 | | static int hf_h235_radius; /* NULL */ |
61 | | static int hf_h235_dhExch; /* NULL */ |
62 | | static int hf_h235_pwdSymEnc; /* NULL */ |
63 | | static int hf_h235_pwdHash; /* NULL */ |
64 | | static int hf_h235_certSign; /* NULL */ |
65 | | static int hf_h235_ipsec; /* NULL */ |
66 | | static int hf_h235_tls; /* NULL */ |
67 | | static int hf_h235_nonStandard; /* NonStandardParameter */ |
68 | | static int hf_h235_authenticationBES; /* AuthenticationBES */ |
69 | | static int hf_h235_keyExch; /* OBJECT_IDENTIFIER */ |
70 | | static int hf_h235_tokenOID; /* OBJECT_IDENTIFIER */ |
71 | | static int hf_h235_timeStamp; /* TimeStamp */ |
72 | | static int hf_h235_password; /* Password */ |
73 | | static int hf_h235_dhkey; /* DHset */ |
74 | | static int hf_h235_challenge; /* ChallengeString */ |
75 | | static int hf_h235_random; /* RandomVal */ |
76 | | static int hf_h235_certificate; /* TypedCertificate */ |
77 | | static int hf_h235_generalID; /* Identifier */ |
78 | | static int hf_h235_eckasdhkey; /* ECKASDH */ |
79 | | static int hf_h235_sendersID; /* Identifier */ |
80 | | static int hf_h235_h235Key; /* H235Key */ |
81 | | static int hf_h235_profileInfo; /* SEQUENCE_OF_ProfileElement */ |
82 | | static int hf_h235_profileInfo_item; /* ProfileElement */ |
83 | | static int hf_h235_elementID; /* INTEGER_0_255 */ |
84 | | static int hf_h235_paramS; /* Params */ |
85 | | static int hf_h235_element; /* Element */ |
86 | | static int hf_h235_octets; /* OCTET_STRING */ |
87 | | static int hf_h235_integer; /* INTEGER */ |
88 | | static int hf_h235_bits; /* BIT_STRING */ |
89 | | static int hf_h235_name; /* BMPString */ |
90 | | static int hf_h235_flag; /* BOOLEAN */ |
91 | | static int hf_h235_toBeSigned; /* ToBeSigned */ |
92 | | static int hf_h235_algorithmOID; /* OBJECT_IDENTIFIER */ |
93 | | static int hf_h235_signaturedata; /* BIT_STRING */ |
94 | | static int hf_h235_encryptedData; /* OCTET_STRING */ |
95 | | static int hf_h235_hash; /* BIT_STRING */ |
96 | | static int hf_h235_ranInt; /* INTEGER */ |
97 | | static int hf_h235_iv8; /* IV8 */ |
98 | | static int hf_h235_iv16; /* IV16 */ |
99 | | static int hf_h235_iv; /* OCTET_STRING */ |
100 | | static int hf_h235_clearSalt; /* OCTET_STRING */ |
101 | | static int hf_h235_cryptoEncryptedToken; /* T_cryptoEncryptedToken */ |
102 | | static int hf_h235_encryptedToken; /* ENCRYPTED */ |
103 | | static int hf_h235_cryptoSignedToken; /* T_cryptoSignedToken */ |
104 | | static int hf_h235_signedToken; /* SIGNED */ |
105 | | static int hf_h235_cryptoHashedToken; /* T_cryptoHashedToken */ |
106 | | static int hf_h235_hashedVals; /* ClearToken */ |
107 | | static int hf_h235_hashedToken; /* HASHED */ |
108 | | static int hf_h235_cryptoPwdEncr; /* ENCRYPTED */ |
109 | | static int hf_h235_secureChannel; /* KeyMaterial */ |
110 | | static int hf_h235_sharedSecret; /* ENCRYPTED */ |
111 | | static int hf_h235_certProtectedKey; /* SIGNED */ |
112 | | static int hf_h235_secureSharedSecret; /* V3KeySyncMaterial */ |
113 | | static int hf_h235_encryptedSessionKey; /* OCTET_STRING */ |
114 | | static int hf_h235_encryptedSaltingKey; /* OCTET_STRING */ |
115 | | static int hf_h235_clearSaltingKey; /* OCTET_STRING */ |
116 | | static int hf_h235_paramSsalt; /* Params */ |
117 | | static int hf_h235_keyDerivationOID; /* OBJECT_IDENTIFIER */ |
118 | | static int hf_h235_genericKeyMaterial; /* OCTET_STRING */ |
119 | | static int hf_h235_SrtpCryptoCapability_item; /* SrtpCryptoInfo */ |
120 | | static int hf_h235_cryptoSuite; /* OBJECT_IDENTIFIER */ |
121 | | static int hf_h235_sessionParams; /* SrtpSessionParameters */ |
122 | | static int hf_h235_allowMKI; /* BOOLEAN */ |
123 | | static int hf_h235_SrtpKeys_item; /* SrtpKeyParameters */ |
124 | | static int hf_h235_masterKey; /* OCTET_STRING */ |
125 | | static int hf_h235_masterSalt; /* OCTET_STRING */ |
126 | | static int hf_h235_lifetime; /* T_lifetime */ |
127 | | static int hf_h235_powerOfTwo; /* INTEGER */ |
128 | | static int hf_h235_specific; /* INTEGER */ |
129 | | static int hf_h235_mki; /* T_mki */ |
130 | | static int hf_h235_length; /* INTEGER_1_128 */ |
131 | | static int hf_h235_value; /* OCTET_STRING */ |
132 | | static int hf_h235_kdr; /* INTEGER_0_24 */ |
133 | | static int hf_h235_unencryptedSrtp; /* BOOLEAN */ |
134 | | static int hf_h235_unencryptedSrtcp; /* BOOLEAN */ |
135 | | static int hf_h235_unauthenticatedSrtp; /* BOOLEAN */ |
136 | | static int hf_h235_fecOrder; /* FecOrder */ |
137 | | static int hf_h235_windowSizeHint; /* INTEGER_64_65535 */ |
138 | | static int hf_h235_newParameter; /* SEQUENCE_OF_GenericData */ |
139 | | static int hf_h235_newParameter_item; /* GenericData */ |
140 | | static int hf_h235_fecBeforeSrtp; /* NULL */ |
141 | | static int hf_h235_fecAfterSrtp; /* NULL */ |
142 | | |
143 | | /* Initialize the subtree pointers */ |
144 | | static int ett_h235_NonStandardParameter; |
145 | | static int ett_h235_DHset; |
146 | | static int ett_h235_ECpoint; |
147 | | static int ett_h235_ECKASDH; |
148 | | static int ett_h235_T_eckasdhp; |
149 | | static int ett_h235_T_eckasdh2; |
150 | | static int ett_h235_TypedCertificate; |
151 | | static int ett_h235_AuthenticationBES; |
152 | | static int ett_h235_AuthenticationMechanism; |
153 | | static int ett_h235_ClearToken; |
154 | | static int ett_h235_SEQUENCE_OF_ProfileElement; |
155 | | static int ett_h235_ProfileElement; |
156 | | static int ett_h235_Element; |
157 | | static int ett_h235_SIGNED; |
158 | | static int ett_h235_ENCRYPTED; |
159 | | static int ett_h235_HASHED; |
160 | | static int ett_h235_Params; |
161 | | static int ett_h235_CryptoToken; |
162 | | static int ett_h235_T_cryptoEncryptedToken; |
163 | | static int ett_h235_T_cryptoSignedToken; |
164 | | static int ett_h235_T_cryptoHashedToken; |
165 | | static int ett_h235_H235Key; |
166 | | static int ett_h235_V3KeySyncMaterial; |
167 | | static int ett_h235_SrtpCryptoCapability; |
168 | | static int ett_h235_SrtpCryptoInfo; |
169 | | static int ett_h235_SrtpKeys; |
170 | | static int ett_h235_SrtpKeyParameters; |
171 | | static int ett_h235_T_lifetime; |
172 | | static int ett_h235_T_mki; |
173 | | static int ett_h235_SrtpSessionParameters; |
174 | | static int ett_h235_SEQUENCE_OF_GenericData; |
175 | | static int ett_h235_FecOrder; |
176 | | |
177 | | |
178 | | static unsigned |
179 | 3 | dissect_h235_ToBeSigned(tvbuff_t *tvb, unsigned offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) { |
180 | 3 | dissect_per_not_decoded_yet(tree, actx->pinfo, tvb, "ToBeSigned"); |
181 | 3 | return offset; |
182 | 3 | } |
183 | | |
184 | | |
185 | | |
186 | | static unsigned |
187 | 24 | dissect_h235_ChallengeString(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
188 | 24 | offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, |
189 | 24 | 8, 128, false, NULL); |
190 | | |
191 | 24 | return offset; |
192 | 24 | } |
193 | | |
194 | | |
195 | | |
196 | | unsigned |
197 | 44 | dissect_h235_TimeStamp(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
198 | 44 | offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, |
199 | 44 | 1U, 4294967295U, NULL, false); |
200 | | |
201 | 44 | return offset; |
202 | 44 | } |
203 | | |
204 | | |
205 | | |
206 | | static unsigned |
207 | 18 | dissect_h235_RandomVal(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
208 | 18 | offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); |
209 | | |
210 | 18 | return offset; |
211 | 18 | } |
212 | | |
213 | | |
214 | | |
215 | | static unsigned |
216 | 9 | dissect_h235_Password(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
217 | 9 | offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index, |
218 | 9 | 1, 128, false); |
219 | | |
220 | 9 | return offset; |
221 | 9 | } |
222 | | |
223 | | |
224 | | |
225 | | static unsigned |
226 | 3 | dissect_h235_Identifier(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
227 | 3 | offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index, |
228 | 3 | 1, 128, false); |
229 | | |
230 | 3 | return offset; |
231 | 3 | } |
232 | | |
233 | | |
234 | | |
235 | | static unsigned |
236 | 0 | dissect_h235_KeyMaterial(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
237 | 0 | offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, |
238 | 0 | 1, 2048, false, NULL, 0, NULL, NULL); |
239 | |
|
240 | 0 | return offset; |
241 | 0 | } |
242 | | |
243 | | |
244 | | |
245 | | static unsigned |
246 | 110 | dissect_h235_OBJECT_IDENTIFIER(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
247 | 110 | offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL); |
248 | | |
249 | 110 | return offset; |
250 | 110 | } |
251 | | |
252 | | |
253 | | |
254 | | static unsigned |
255 | 16 | dissect_h235_OCTET_STRING(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
256 | 16 | offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, |
257 | 16 | NO_BOUND, NO_BOUND, false, NULL); |
258 | | |
259 | 16 | return offset; |
260 | 16 | } |
261 | | |
262 | | |
263 | | static const per_sequence_t NonStandardParameter_sequence[] = { |
264 | | { &hf_h235_nonStandardIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_OBJECT_IDENTIFIER }, |
265 | | { &hf_h235_data , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_OCTET_STRING }, |
266 | | { NULL, 0, 0, NULL } |
267 | | }; |
268 | | |
269 | | static unsigned |
270 | 9 | dissect_h235_NonStandardParameter(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
271 | 9 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
272 | 9 | ett_h235_NonStandardParameter, NonStandardParameter_sequence); |
273 | | |
274 | 9 | return offset; |
275 | 9 | } |
276 | | |
277 | | |
278 | | |
279 | | static unsigned |
280 | 9 | dissect_h235_BIT_STRING_SIZE_0_2048(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
281 | 9 | offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, |
282 | 9 | 0, 2048, false, NULL, 0, NULL, NULL); |
283 | | |
284 | 9 | return offset; |
285 | 9 | } |
286 | | |
287 | | |
288 | | static const per_sequence_t DHset_sequence[] = { |
289 | | { &hf_h235_halfkey , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h235_BIT_STRING_SIZE_0_2048 }, |
290 | | { &hf_h235_modSize , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h235_BIT_STRING_SIZE_0_2048 }, |
291 | | { &hf_h235_generator , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h235_BIT_STRING_SIZE_0_2048 }, |
292 | | { NULL, 0, 0, NULL } |
293 | | }; |
294 | | |
295 | | static unsigned |
296 | 4 | dissect_h235_DHset(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
297 | 4 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
298 | 4 | ett_h235_DHset, DHset_sequence); |
299 | | |
300 | 4 | return offset; |
301 | 4 | } |
302 | | |
303 | | |
304 | | |
305 | | static unsigned |
306 | 2 | dissect_h235_BIT_STRING_SIZE_0_511(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
307 | 2 | offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, |
308 | 2 | 0, 511, false, NULL, 0, NULL, NULL); |
309 | | |
310 | 2 | return offset; |
311 | 2 | } |
312 | | |
313 | | |
314 | | static const per_sequence_t ECpoint_sequence[] = { |
315 | | { &hf_h235_x , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_BIT_STRING_SIZE_0_511 }, |
316 | | { &hf_h235_y , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_BIT_STRING_SIZE_0_511 }, |
317 | | { NULL, 0, 0, NULL } |
318 | | }; |
319 | | |
320 | | static unsigned |
321 | 2 | dissect_h235_ECpoint(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
322 | 2 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
323 | 2 | ett_h235_ECpoint, ECpoint_sequence); |
324 | | |
325 | 2 | return offset; |
326 | 2 | } |
327 | | |
328 | | |
329 | | static const per_sequence_t T_eckasdhp_sequence[] = { |
330 | | { &hf_h235_public_key , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_ECpoint }, |
331 | | { &hf_h235_modulus , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_BIT_STRING_SIZE_0_511 }, |
332 | | { &hf_h235_base , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_ECpoint }, |
333 | | { &hf_h235_weierstrassA , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_BIT_STRING_SIZE_0_511 }, |
334 | | { &hf_h235_weierstrassB , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_BIT_STRING_SIZE_0_511 }, |
335 | | { NULL, 0, 0, NULL } |
336 | | }; |
337 | | |
338 | | static unsigned |
339 | 1 | dissect_h235_T_eckasdhp(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
340 | 1 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
341 | 1 | ett_h235_T_eckasdhp, T_eckasdhp_sequence); |
342 | | |
343 | 1 | return offset; |
344 | 1 | } |
345 | | |
346 | | |
347 | | static const per_sequence_t T_eckasdh2_sequence[] = { |
348 | | { &hf_h235_public_key , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_ECpoint }, |
349 | | { &hf_h235_fieldSize , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_BIT_STRING_SIZE_0_511 }, |
350 | | { &hf_h235_base , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_ECpoint }, |
351 | | { &hf_h235_weierstrassA , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_BIT_STRING_SIZE_0_511 }, |
352 | | { &hf_h235_weierstrassB , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_BIT_STRING_SIZE_0_511 }, |
353 | | { NULL, 0, 0, NULL } |
354 | | }; |
355 | | |
356 | | static unsigned |
357 | 0 | dissect_h235_T_eckasdh2(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
358 | 0 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
359 | 0 | ett_h235_T_eckasdh2, T_eckasdh2_sequence); |
360 | |
|
361 | 0 | return offset; |
362 | 0 | } |
363 | | |
364 | | |
365 | | static const value_string h235_ECKASDH_vals[] = { |
366 | | { 0, "eckasdhp" }, |
367 | | { 1, "eckasdh2" }, |
368 | | { 0, NULL } |
369 | | }; |
370 | | |
371 | | static const per_choice_t ECKASDH_choice[] = { |
372 | | { 0, &hf_h235_eckasdhp , ASN1_EXTENSION_ROOT , dissect_h235_T_eckasdhp }, |
373 | | { 1, &hf_h235_eckasdh2 , ASN1_EXTENSION_ROOT , dissect_h235_T_eckasdh2 }, |
374 | | { 0, NULL, 0, NULL } |
375 | | }; |
376 | | |
377 | | static unsigned |
378 | 1 | dissect_h235_ECKASDH(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
379 | 1 | offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, |
380 | 1 | ett_h235_ECKASDH, ECKASDH_choice, |
381 | 1 | NULL); |
382 | | |
383 | 1 | return offset; |
384 | 1 | } |
385 | | |
386 | | |
387 | | static const per_sequence_t TypedCertificate_sequence[] = { |
388 | | { &hf_h235_type , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h235_OBJECT_IDENTIFIER }, |
389 | | { &hf_h235_certificatedata, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h235_OCTET_STRING }, |
390 | | { NULL, 0, 0, NULL } |
391 | | }; |
392 | | |
393 | | static unsigned |
394 | 1 | dissect_h235_TypedCertificate(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
395 | 1 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
396 | 1 | ett_h235_TypedCertificate, TypedCertificate_sequence); |
397 | | |
398 | 1 | return offset; |
399 | 1 | } |
400 | | |
401 | | |
402 | | |
403 | | static unsigned |
404 | 120 | dissect_h235_NULL(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
405 | 120 | offset = dissect_per_null(tvb, offset, actx, tree, hf_index); |
406 | | |
407 | 120 | return offset; |
408 | 120 | } |
409 | | |
410 | | |
411 | | static const value_string h235_AuthenticationBES_vals[] = { |
412 | | { 0, "default" }, |
413 | | { 1, "radius" }, |
414 | | { 0, NULL } |
415 | | }; |
416 | | |
417 | | static const per_choice_t AuthenticationBES_choice[] = { |
418 | | { 0, &hf_h235_default , ASN1_EXTENSION_ROOT , dissect_h235_NULL }, |
419 | | { 1, &hf_h235_radius , ASN1_EXTENSION_ROOT , dissect_h235_NULL }, |
420 | | { 0, NULL, 0, NULL } |
421 | | }; |
422 | | |
423 | | static unsigned |
424 | 3 | dissect_h235_AuthenticationBES(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
425 | 3 | offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, |
426 | 3 | ett_h235_AuthenticationBES, AuthenticationBES_choice, |
427 | 3 | NULL); |
428 | | |
429 | 3 | return offset; |
430 | 3 | } |
431 | | |
432 | | |
433 | | const value_string h235_AuthenticationMechanism_vals[] = { |
434 | | { 0, "dhExch" }, |
435 | | { 1, "pwdSymEnc" }, |
436 | | { 2, "pwdHash" }, |
437 | | { 3, "certSign" }, |
438 | | { 4, "ipsec" }, |
439 | | { 5, "tls" }, |
440 | | { 6, "nonStandard" }, |
441 | | { 7, "authenticationBES" }, |
442 | | { 8, "keyExch" }, |
443 | | { 0, NULL } |
444 | | }; |
445 | | |
446 | | static const per_choice_t AuthenticationMechanism_choice[] = { |
447 | | { 0, &hf_h235_dhExch , ASN1_EXTENSION_ROOT , dissect_h235_NULL }, |
448 | | { 1, &hf_h235_pwdSymEnc , ASN1_EXTENSION_ROOT , dissect_h235_NULL }, |
449 | | { 2, &hf_h235_pwdHash , ASN1_EXTENSION_ROOT , dissect_h235_NULL }, |
450 | | { 3, &hf_h235_certSign , ASN1_EXTENSION_ROOT , dissect_h235_NULL }, |
451 | | { 4, &hf_h235_ipsec , ASN1_EXTENSION_ROOT , dissect_h235_NULL }, |
452 | | { 5, &hf_h235_tls , ASN1_EXTENSION_ROOT , dissect_h235_NULL }, |
453 | | { 6, &hf_h235_nonStandard , ASN1_EXTENSION_ROOT , dissect_h235_NonStandardParameter }, |
454 | | { 7, &hf_h235_authenticationBES, ASN1_NOT_EXTENSION_ROOT, dissect_h235_AuthenticationBES }, |
455 | | { 8, &hf_h235_keyExch , ASN1_NOT_EXTENSION_ROOT, dissect_h235_OBJECT_IDENTIFIER }, |
456 | | { 0, NULL, 0, NULL } |
457 | | }; |
458 | | |
459 | | unsigned |
460 | 136 | dissect_h235_AuthenticationMechanism(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
461 | 136 | offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, |
462 | 136 | ett_h235_AuthenticationMechanism, AuthenticationMechanism_choice, |
463 | 136 | NULL); |
464 | | |
465 | 136 | return offset; |
466 | 136 | } |
467 | | |
468 | | |
469 | | |
470 | | static unsigned |
471 | 4 | dissect_h235_INTEGER(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
472 | 4 | offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); |
473 | | |
474 | 4 | return offset; |
475 | 4 | } |
476 | | |
477 | | |
478 | | |
479 | | static unsigned |
480 | 6 | dissect_h235_IV8(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
481 | 6 | offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, |
482 | 6 | 8, 8, false, NULL); |
483 | | |
484 | 6 | return offset; |
485 | 6 | } |
486 | | |
487 | | |
488 | | |
489 | | static unsigned |
490 | 1 | dissect_h235_IV16(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
491 | 1 | offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, |
492 | 1 | 16, 16, false, NULL); |
493 | | |
494 | 1 | return offset; |
495 | 1 | } |
496 | | |
497 | | |
498 | | static const per_sequence_t Params_sequence[] = { |
499 | | { &hf_h235_ranInt , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_INTEGER }, |
500 | | { &hf_h235_iv8 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_IV8 }, |
501 | | { &hf_h235_iv16 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h235_IV16 }, |
502 | | { &hf_h235_iv , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h235_OCTET_STRING }, |
503 | | { &hf_h235_clearSalt , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h235_OCTET_STRING }, |
504 | | { NULL, 0, 0, NULL } |
505 | | }; |
506 | | |
507 | | static unsigned |
508 | 31 | dissect_h235_Params(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
509 | 31 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
510 | 31 | ett_h235_Params, Params_sequence); |
511 | | |
512 | 31 | return offset; |
513 | 31 | } |
514 | | |
515 | | |
516 | | static const per_sequence_t ENCRYPTED_sequence[] = { |
517 | | { &hf_h235_algorithmOID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_OBJECT_IDENTIFIER }, |
518 | | { &hf_h235_paramS , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_Params }, |
519 | | { &hf_h235_encryptedData , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_OCTET_STRING }, |
520 | | { NULL, 0, 0, NULL } |
521 | | }; |
522 | | |
523 | | unsigned |
524 | 10 | dissect_h235_ENCRYPTED(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
525 | 10 | proto_item *hidden_item; |
526 | 10 | hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset>>3, 0, ENC_NA); |
527 | 10 | proto_item_set_hidden(hidden_item); |
528 | 10 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
529 | 10 | ett_h235_ENCRYPTED, ENCRYPTED_sequence); |
530 | | |
531 | 10 | return offset; |
532 | 10 | } |
533 | | |
534 | | |
535 | | |
536 | | |
537 | | static unsigned |
538 | 21 | dissect_h235_BIT_STRING(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
539 | 21 | offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, |
540 | 21 | NO_BOUND, NO_BOUND, false, NULL, 0, NULL, NULL); |
541 | | |
542 | 21 | return offset; |
543 | 21 | } |
544 | | |
545 | | |
546 | | static const per_sequence_t SIGNED_sequence[] = { |
547 | | { &hf_h235_toBeSigned , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_ToBeSigned }, |
548 | | { &hf_h235_algorithmOID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_OBJECT_IDENTIFIER }, |
549 | | { &hf_h235_paramS , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_Params }, |
550 | | { &hf_h235_signaturedata , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_BIT_STRING }, |
551 | | { NULL, 0, 0, NULL } |
552 | | }; |
553 | | |
554 | | unsigned |
555 | 3 | dissect_h235_SIGNED(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
556 | 3 | proto_item *hidden_item; |
557 | 3 | hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset>>3, 0, ENC_NA); |
558 | 3 | proto_item_set_hidden(hidden_item); |
559 | 3 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
560 | 3 | ett_h235_SIGNED, SIGNED_sequence); |
561 | | |
562 | 3 | return offset; |
563 | 3 | } |
564 | | |
565 | | |
566 | | static const per_sequence_t V3KeySyncMaterial_sequence[] = { |
567 | | { &hf_h235_generalID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_Identifier }, |
568 | | { &hf_h235_algorithmOID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_OBJECT_IDENTIFIER }, |
569 | | { &hf_h235_paramS , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h235_Params }, |
570 | | { &hf_h235_encryptedSessionKey, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_OCTET_STRING }, |
571 | | { &hf_h235_encryptedSaltingKey, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_OCTET_STRING }, |
572 | | { &hf_h235_clearSaltingKey, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_OCTET_STRING }, |
573 | | { &hf_h235_paramSsalt , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_Params }, |
574 | | { &hf_h235_keyDerivationOID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_OBJECT_IDENTIFIER }, |
575 | | { &hf_h235_genericKeyMaterial, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h235_OCTET_STRING }, |
576 | | { NULL, 0, 0, NULL } |
577 | | }; |
578 | | |
579 | | static unsigned |
580 | 0 | dissect_h235_V3KeySyncMaterial(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
581 | 0 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
582 | 0 | ett_h235_V3KeySyncMaterial, V3KeySyncMaterial_sequence); |
583 | |
|
584 | 0 | return offset; |
585 | 0 | } |
586 | | |
587 | | |
588 | | static const value_string h235_H235Key_vals[] = { |
589 | | { 0, "secureChannel" }, |
590 | | { 1, "sharedSecret" }, |
591 | | { 2, "certProtectedKey" }, |
592 | | { 3, "secureSharedSecret" }, |
593 | | { 0, NULL } |
594 | | }; |
595 | | |
596 | | static const per_choice_t H235Key_choice[] = { |
597 | | { 0, &hf_h235_secureChannel , ASN1_EXTENSION_ROOT , dissect_h235_KeyMaterial }, |
598 | | { 1, &hf_h235_sharedSecret , ASN1_EXTENSION_ROOT , dissect_h235_ENCRYPTED }, |
599 | | { 2, &hf_h235_certProtectedKey, ASN1_EXTENSION_ROOT , dissect_h235_SIGNED }, |
600 | | { 3, &hf_h235_secureSharedSecret, ASN1_NOT_EXTENSION_ROOT, dissect_h235_V3KeySyncMaterial }, |
601 | | { 0, NULL, 0, NULL } |
602 | | }; |
603 | | |
604 | | static unsigned |
605 | 0 | dissect_h235_H235Key(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
606 | 0 | offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, |
607 | 0 | ett_h235_H235Key, H235Key_choice, |
608 | 0 | NULL); |
609 | |
|
610 | 0 | return offset; |
611 | 0 | } |
612 | | |
613 | | |
614 | | |
615 | | static unsigned |
616 | 0 | dissect_h235_INTEGER_0_255(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
617 | 0 | offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, |
618 | 0 | 0U, 255U, NULL, false); |
619 | |
|
620 | 0 | return offset; |
621 | 0 | } |
622 | | |
623 | | |
624 | | |
625 | | static unsigned |
626 | 0 | dissect_h235_BMPString(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
627 | 0 | offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index, |
628 | 0 | NO_BOUND, NO_BOUND, false); |
629 | |
|
630 | 0 | return offset; |
631 | 0 | } |
632 | | |
633 | | |
634 | | |
635 | | static unsigned |
636 | 0 | dissect_h235_BOOLEAN(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
637 | 0 | offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL); |
638 | |
|
639 | 0 | return offset; |
640 | 0 | } |
641 | | |
642 | | |
643 | | static const value_string h235_Element_vals[] = { |
644 | | { 0, "octets" }, |
645 | | { 1, "integer" }, |
646 | | { 2, "bits" }, |
647 | | { 3, "name" }, |
648 | | { 4, "flag" }, |
649 | | { 0, NULL } |
650 | | }; |
651 | | |
652 | | static const per_choice_t Element_choice[] = { |
653 | | { 0, &hf_h235_octets , ASN1_EXTENSION_ROOT , dissect_h235_OCTET_STRING }, |
654 | | { 1, &hf_h235_integer , ASN1_EXTENSION_ROOT , dissect_h235_INTEGER }, |
655 | | { 2, &hf_h235_bits , ASN1_EXTENSION_ROOT , dissect_h235_BIT_STRING }, |
656 | | { 3, &hf_h235_name , ASN1_EXTENSION_ROOT , dissect_h235_BMPString }, |
657 | | { 4, &hf_h235_flag , ASN1_EXTENSION_ROOT , dissect_h235_BOOLEAN }, |
658 | | { 0, NULL, 0, NULL } |
659 | | }; |
660 | | |
661 | | static unsigned |
662 | 0 | dissect_h235_Element(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
663 | 0 | offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, |
664 | 0 | ett_h235_Element, Element_choice, |
665 | 0 | NULL); |
666 | |
|
667 | 0 | return offset; |
668 | 0 | } |
669 | | |
670 | | |
671 | | static const per_sequence_t ProfileElement_sequence[] = { |
672 | | { &hf_h235_elementID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h235_INTEGER_0_255 }, |
673 | | { &hf_h235_paramS , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_Params }, |
674 | | { &hf_h235_element , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_Element }, |
675 | | { NULL, 0, 0, NULL } |
676 | | }; |
677 | | |
678 | | static unsigned |
679 | 0 | dissect_h235_ProfileElement(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
680 | 0 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
681 | 0 | ett_h235_ProfileElement, ProfileElement_sequence); |
682 | |
|
683 | 0 | return offset; |
684 | 0 | } |
685 | | |
686 | | |
687 | | static const per_sequence_t SEQUENCE_OF_ProfileElement_sequence_of[1] = { |
688 | | { &hf_h235_profileInfo_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_ProfileElement }, |
689 | | }; |
690 | | |
691 | | static unsigned |
692 | 0 | dissect_h235_SEQUENCE_OF_ProfileElement(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
693 | 0 | offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index, |
694 | 0 | ett_h235_SEQUENCE_OF_ProfileElement, SEQUENCE_OF_ProfileElement_sequence_of); |
695 | |
|
696 | 0 | return offset; |
697 | 0 | } |
698 | | |
699 | | |
700 | | static const per_sequence_t ClearToken_sequence[] = { |
701 | | { &hf_h235_tokenOID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h235_OBJECT_IDENTIFIER }, |
702 | | { &hf_h235_timeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_TimeStamp }, |
703 | | { &hf_h235_password , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_Password }, |
704 | | { &hf_h235_dhkey , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_DHset }, |
705 | | { &hf_h235_challenge , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_ChallengeString }, |
706 | | { &hf_h235_random , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_RandomVal }, |
707 | | { &hf_h235_certificate , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_TypedCertificate }, |
708 | | { &hf_h235_generalID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_Identifier }, |
709 | | { &hf_h235_nonStandard , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_NonStandardParameter }, |
710 | | { &hf_h235_eckasdhkey , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h235_ECKASDH }, |
711 | | { &hf_h235_sendersID , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h235_Identifier }, |
712 | | { &hf_h235_h235Key , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h235_H235Key }, |
713 | | { &hf_h235_profileInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h235_SEQUENCE_OF_ProfileElement }, |
714 | | { NULL, 0, 0, NULL } |
715 | | }; |
716 | | |
717 | | unsigned |
718 | 59 | dissect_h235_ClearToken(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
719 | 59 | proto_item *hidden_item; |
720 | 59 | hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset>>3, 0, ENC_NA); |
721 | 59 | proto_item_set_hidden(hidden_item); |
722 | 59 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
723 | 59 | ett_h235_ClearToken, ClearToken_sequence); |
724 | | |
725 | 59 | return offset; |
726 | 59 | } |
727 | | |
728 | | |
729 | | static const per_sequence_t HASHED_sequence[] = { |
730 | | { &hf_h235_algorithmOID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_OBJECT_IDENTIFIER }, |
731 | | { &hf_h235_paramS , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_Params }, |
732 | | { &hf_h235_hash , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_BIT_STRING }, |
733 | | { NULL, 0, 0, NULL } |
734 | | }; |
735 | | |
736 | | unsigned |
737 | 29 | dissect_h235_HASHED(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
738 | 29 | proto_item *hidden_item; |
739 | 29 | hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset>>3, 0, ENC_NA); |
740 | 29 | proto_item_set_hidden(hidden_item); |
741 | 29 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
742 | 29 | ett_h235_HASHED, HASHED_sequence); |
743 | | |
744 | 29 | return offset; |
745 | 29 | } |
746 | | |
747 | | |
748 | | |
749 | | |
750 | | static const per_sequence_t T_cryptoEncryptedToken_sequence[] = { |
751 | | { &hf_h235_tokenOID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_OBJECT_IDENTIFIER }, |
752 | | { &hf_h235_encryptedToken , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_ENCRYPTED }, |
753 | | { NULL, 0, 0, NULL } |
754 | | }; |
755 | | |
756 | | static unsigned |
757 | 2 | dissect_h235_T_cryptoEncryptedToken(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
758 | 2 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
759 | 2 | ett_h235_T_cryptoEncryptedToken, T_cryptoEncryptedToken_sequence); |
760 | | |
761 | 2 | return offset; |
762 | 2 | } |
763 | | |
764 | | |
765 | | static const per_sequence_t T_cryptoSignedToken_sequence[] = { |
766 | | { &hf_h235_tokenOID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_OBJECT_IDENTIFIER }, |
767 | | { &hf_h235_signedToken , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_SIGNED }, |
768 | | { NULL, 0, 0, NULL } |
769 | | }; |
770 | | |
771 | | static unsigned |
772 | 0 | dissect_h235_T_cryptoSignedToken(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
773 | 0 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
774 | 0 | ett_h235_T_cryptoSignedToken, T_cryptoSignedToken_sequence); |
775 | |
|
776 | 0 | return offset; |
777 | 0 | } |
778 | | |
779 | | |
780 | | static const per_sequence_t T_cryptoHashedToken_sequence[] = { |
781 | | { &hf_h235_tokenOID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_OBJECT_IDENTIFIER }, |
782 | | { &hf_h235_hashedVals , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_ClearToken }, |
783 | | { &hf_h235_hashedToken , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_HASHED }, |
784 | | { NULL, 0, 0, NULL } |
785 | | }; |
786 | | |
787 | | static unsigned |
788 | 1 | dissect_h235_T_cryptoHashedToken(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
789 | 1 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
790 | 1 | ett_h235_T_cryptoHashedToken, T_cryptoHashedToken_sequence); |
791 | | |
792 | 1 | return offset; |
793 | 1 | } |
794 | | |
795 | | |
796 | | const value_string h235_CryptoToken_vals[] = { |
797 | | { 0, "cryptoEncryptedToken" }, |
798 | | { 1, "cryptoSignedToken" }, |
799 | | { 2, "cryptoHashedToken" }, |
800 | | { 3, "cryptoPwdEncr" }, |
801 | | { 0, NULL } |
802 | | }; |
803 | | |
804 | | static const per_choice_t CryptoToken_choice[] = { |
805 | | { 0, &hf_h235_cryptoEncryptedToken, ASN1_EXTENSION_ROOT , dissect_h235_T_cryptoEncryptedToken }, |
806 | | { 1, &hf_h235_cryptoSignedToken, ASN1_EXTENSION_ROOT , dissect_h235_T_cryptoSignedToken }, |
807 | | { 2, &hf_h235_cryptoHashedToken, ASN1_EXTENSION_ROOT , dissect_h235_T_cryptoHashedToken }, |
808 | | { 3, &hf_h235_cryptoPwdEncr , ASN1_EXTENSION_ROOT , dissect_h235_ENCRYPTED }, |
809 | | { 0, NULL, 0, NULL } |
810 | | }; |
811 | | |
812 | | unsigned |
813 | 3 | dissect_h235_CryptoToken(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
814 | 3 | proto_item *hidden_item; |
815 | 3 | hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset>>3, 0, ENC_NA); |
816 | 3 | proto_item_set_hidden(hidden_item); |
817 | 3 | offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, |
818 | 3 | ett_h235_CryptoToken, CryptoToken_choice, |
819 | 3 | NULL); |
820 | | |
821 | 3 | return offset; |
822 | 3 | } |
823 | | |
824 | | |
825 | | |
826 | | static unsigned |
827 | 0 | dissect_h235_INTEGER_0_24(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
828 | 0 | offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, |
829 | 0 | 0U, 24U, NULL, false); |
830 | |
|
831 | 0 | return offset; |
832 | 0 | } |
833 | | |
834 | | |
835 | | static const per_sequence_t FecOrder_sequence[] = { |
836 | | { &hf_h235_fecBeforeSrtp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_NULL }, |
837 | | { &hf_h235_fecAfterSrtp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_NULL }, |
838 | | { NULL, 0, 0, NULL } |
839 | | }; |
840 | | |
841 | | static unsigned |
842 | 0 | dissect_h235_FecOrder(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
843 | 0 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
844 | 0 | ett_h235_FecOrder, FecOrder_sequence); |
845 | |
|
846 | 0 | return offset; |
847 | 0 | } |
848 | | |
849 | | |
850 | | |
851 | | static unsigned |
852 | 0 | dissect_h235_INTEGER_64_65535(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
853 | 0 | offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, |
854 | 0 | 64U, 65535U, NULL, false); |
855 | |
|
856 | 0 | return offset; |
857 | 0 | } |
858 | | |
859 | | |
860 | | static const per_sequence_t SEQUENCE_OF_GenericData_sequence_of[1] = { |
861 | | { &hf_h235_newParameter_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_GenericData }, |
862 | | }; |
863 | | |
864 | | static unsigned |
865 | 0 | dissect_h235_SEQUENCE_OF_GenericData(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
866 | 0 | offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index, |
867 | 0 | ett_h235_SEQUENCE_OF_GenericData, SEQUENCE_OF_GenericData_sequence_of); |
868 | |
|
869 | 0 | return offset; |
870 | 0 | } |
871 | | |
872 | | |
873 | | static const per_sequence_t SrtpSessionParameters_sequence[] = { |
874 | | { &hf_h235_kdr , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_INTEGER_0_24 }, |
875 | | { &hf_h235_unencryptedSrtp, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_BOOLEAN }, |
876 | | { &hf_h235_unencryptedSrtcp, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_BOOLEAN }, |
877 | | { &hf_h235_unauthenticatedSrtp, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_BOOLEAN }, |
878 | | { &hf_h235_fecOrder , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_FecOrder }, |
879 | | { &hf_h235_windowSizeHint , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_INTEGER_64_65535 }, |
880 | | { &hf_h235_newParameter , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_SEQUENCE_OF_GenericData }, |
881 | | { NULL, 0, 0, NULL } |
882 | | }; |
883 | | |
884 | | static unsigned |
885 | 0 | dissect_h235_SrtpSessionParameters(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
886 | 0 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
887 | 0 | ett_h235_SrtpSessionParameters, SrtpSessionParameters_sequence); |
888 | |
|
889 | 0 | return offset; |
890 | 0 | } |
891 | | |
892 | | |
893 | | static const per_sequence_t SrtpCryptoInfo_sequence[] = { |
894 | | { &hf_h235_cryptoSuite , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_OBJECT_IDENTIFIER }, |
895 | | { &hf_h235_sessionParams , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_SrtpSessionParameters }, |
896 | | { &hf_h235_allowMKI , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_BOOLEAN }, |
897 | | { NULL, 0, 0, NULL } |
898 | | }; |
899 | | |
900 | | static unsigned |
901 | 0 | dissect_h235_SrtpCryptoInfo(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
902 | 0 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
903 | 0 | ett_h235_SrtpCryptoInfo, SrtpCryptoInfo_sequence); |
904 | |
|
905 | 0 | return offset; |
906 | 0 | } |
907 | | |
908 | | |
909 | | static const per_sequence_t SrtpCryptoCapability_sequence_of[1] = { |
910 | | { &hf_h235_SrtpCryptoCapability_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_SrtpCryptoInfo }, |
911 | | }; |
912 | | |
913 | | static unsigned |
914 | 0 | dissect_h235_SrtpCryptoCapability(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
915 | 0 | offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index, |
916 | 0 | ett_h235_SrtpCryptoCapability, SrtpCryptoCapability_sequence_of); |
917 | |
|
918 | 0 | return offset; |
919 | 0 | } |
920 | | |
921 | | |
922 | | static const value_string h235_T_lifetime_vals[] = { |
923 | | { 0, "powerOfTwo" }, |
924 | | { 1, "specific" }, |
925 | | { 0, NULL } |
926 | | }; |
927 | | |
928 | | static const per_choice_t T_lifetime_choice[] = { |
929 | | { 0, &hf_h235_powerOfTwo , ASN1_EXTENSION_ROOT , dissect_h235_INTEGER }, |
930 | | { 1, &hf_h235_specific , ASN1_EXTENSION_ROOT , dissect_h235_INTEGER }, |
931 | | { 0, NULL, 0, NULL } |
932 | | }; |
933 | | |
934 | | static unsigned |
935 | 0 | dissect_h235_T_lifetime(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
936 | 0 | offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, |
937 | 0 | ett_h235_T_lifetime, T_lifetime_choice, |
938 | 0 | NULL); |
939 | |
|
940 | 0 | return offset; |
941 | 0 | } |
942 | | |
943 | | |
944 | | |
945 | | static unsigned |
946 | 0 | dissect_h235_INTEGER_1_128(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
947 | 0 | offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, |
948 | 0 | 1U, 128U, NULL, false); |
949 | |
|
950 | 0 | return offset; |
951 | 0 | } |
952 | | |
953 | | |
954 | | static const per_sequence_t T_mki_sequence[] = { |
955 | | { &hf_h235_length , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h235_INTEGER_1_128 }, |
956 | | { &hf_h235_value , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h235_OCTET_STRING }, |
957 | | { NULL, 0, 0, NULL } |
958 | | }; |
959 | | |
960 | | static unsigned |
961 | 0 | dissect_h235_T_mki(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
962 | 0 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
963 | 0 | ett_h235_T_mki, T_mki_sequence); |
964 | |
|
965 | 0 | return offset; |
966 | 0 | } |
967 | | |
968 | | |
969 | | static const per_sequence_t SrtpKeyParameters_sequence[] = { |
970 | | { &hf_h235_masterKey , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h235_OCTET_STRING }, |
971 | | { &hf_h235_masterSalt , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h235_OCTET_STRING }, |
972 | | { &hf_h235_lifetime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_T_lifetime }, |
973 | | { &hf_h235_mki , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_T_mki }, |
974 | | { NULL, 0, 0, NULL } |
975 | | }; |
976 | | |
977 | | static unsigned |
978 | 0 | dissect_h235_SrtpKeyParameters(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
979 | 0 | offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, |
980 | 0 | ett_h235_SrtpKeyParameters, SrtpKeyParameters_sequence); |
981 | |
|
982 | 0 | return offset; |
983 | 0 | } |
984 | | |
985 | | |
986 | | static const per_sequence_t SrtpKeys_sequence_of[1] = { |
987 | | { &hf_h235_SrtpKeys_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_SrtpKeyParameters }, |
988 | | }; |
989 | | |
990 | | unsigned |
991 | 0 | dissect_h235_SrtpKeys(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
992 | 0 | offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index, |
993 | 0 | ett_h235_SrtpKeys, SrtpKeys_sequence_of); |
994 | |
|
995 | 0 | return offset; |
996 | 0 | } |
997 | | |
998 | | /*--- PDUs ---*/ |
999 | | |
1000 | 0 | static int dissect_SrtpCryptoCapability_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { |
1001 | 0 | unsigned offset = 0; |
1002 | 0 | asn1_ctx_t asn1_ctx; |
1003 | 0 | asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo); |
1004 | 0 | offset = dissect_h235_SrtpCryptoCapability(tvb, offset, &asn1_ctx, tree, hf_h235_SrtpCryptoCapability_PDU); |
1005 | 0 | offset += 7; offset >>= 3; |
1006 | 0 | return offset; |
1007 | 0 | } |
1008 | | |
1009 | | |
1010 | | |
1011 | | /*--- proto_register_h235 ----------------------------------------------*/ |
1012 | 16 | void proto_register_h235(void) { |
1013 | | |
1014 | | /* List of fields */ |
1015 | 16 | static hf_register_info hf[] = { |
1016 | 16 | { &hf_h235_SrtpCryptoCapability_PDU, |
1017 | 16 | { "SrtpCryptoCapability", "h235.SrtpCryptoCapability", |
1018 | 16 | FT_UINT32, BASE_DEC, NULL, 0, |
1019 | 16 | NULL, HFILL }}, |
1020 | 16 | { &hf_h235_nonStandardIdentifier, |
1021 | 16 | { "nonStandardIdentifier", "h235.nonStandardIdentifier", |
1022 | 16 | FT_OID, BASE_NONE, NULL, 0, |
1023 | 16 | "OBJECT_IDENTIFIER", HFILL }}, |
1024 | 16 | { &hf_h235_data, |
1025 | 16 | { "data", "h235.data", |
1026 | 16 | FT_UINT32, BASE_DEC, NULL, 0, |
1027 | 16 | "OCTET_STRING", HFILL }}, |
1028 | 16 | { &hf_h235_halfkey, |
1029 | 16 | { "halfkey", "h235.halfkey", |
1030 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1031 | 16 | "BIT_STRING_SIZE_0_2048", HFILL }}, |
1032 | 16 | { &hf_h235_modSize, |
1033 | 16 | { "modSize", "h235.modSize", |
1034 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1035 | 16 | "BIT_STRING_SIZE_0_2048", HFILL }}, |
1036 | 16 | { &hf_h235_generator, |
1037 | 16 | { "generator", "h235.generator", |
1038 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1039 | 16 | "BIT_STRING_SIZE_0_2048", HFILL }}, |
1040 | 16 | { &hf_h235_x, |
1041 | 16 | { "x", "h235.x", |
1042 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1043 | 16 | "BIT_STRING_SIZE_0_511", HFILL }}, |
1044 | 16 | { &hf_h235_y, |
1045 | 16 | { "y", "h235.y", |
1046 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1047 | 16 | "BIT_STRING_SIZE_0_511", HFILL }}, |
1048 | 16 | { &hf_h235_eckasdhp, |
1049 | 16 | { "eckasdhp", "h235.eckasdhp_element", |
1050 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1051 | 16 | NULL, HFILL }}, |
1052 | 16 | { &hf_h235_public_key, |
1053 | 16 | { "public-key", "h235.public_key_element", |
1054 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1055 | 16 | "ECpoint", HFILL }}, |
1056 | 16 | { &hf_h235_modulus, |
1057 | 16 | { "modulus", "h235.modulus", |
1058 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1059 | 16 | "BIT_STRING_SIZE_0_511", HFILL }}, |
1060 | 16 | { &hf_h235_base, |
1061 | 16 | { "base", "h235.base_element", |
1062 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1063 | 16 | "ECpoint", HFILL }}, |
1064 | 16 | { &hf_h235_weierstrassA, |
1065 | 16 | { "weierstrassA", "h235.weierstrassA", |
1066 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1067 | 16 | "BIT_STRING_SIZE_0_511", HFILL }}, |
1068 | 16 | { &hf_h235_weierstrassB, |
1069 | 16 | { "weierstrassB", "h235.weierstrassB", |
1070 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1071 | 16 | "BIT_STRING_SIZE_0_511", HFILL }}, |
1072 | 16 | { &hf_h235_eckasdh2, |
1073 | 16 | { "eckasdh2", "h235.eckasdh2_element", |
1074 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1075 | 16 | NULL, HFILL }}, |
1076 | 16 | { &hf_h235_fieldSize, |
1077 | 16 | { "fieldSize", "h235.fieldSize", |
1078 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1079 | 16 | "BIT_STRING_SIZE_0_511", HFILL }}, |
1080 | 16 | { &hf_h235_type, |
1081 | 16 | { "type", "h235.type", |
1082 | 16 | FT_OID, BASE_NONE, NULL, 0, |
1083 | 16 | "OBJECT_IDENTIFIER", HFILL }}, |
1084 | 16 | { &hf_h235_certificatedata, |
1085 | 16 | { "certificate", "h235.certificatedata", |
1086 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1087 | 16 | "OCTET_STRING", HFILL }}, |
1088 | 16 | { &hf_h235_default, |
1089 | 16 | { "default", "h235.default_element", |
1090 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1091 | 16 | NULL, HFILL }}, |
1092 | 16 | { &hf_h235_radius, |
1093 | 16 | { "radius", "h235.radius_element", |
1094 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1095 | 16 | NULL, HFILL }}, |
1096 | 16 | { &hf_h235_dhExch, |
1097 | 16 | { "dhExch", "h235.dhExch_element", |
1098 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1099 | 16 | NULL, HFILL }}, |
1100 | 16 | { &hf_h235_pwdSymEnc, |
1101 | 16 | { "pwdSymEnc", "h235.pwdSymEnc_element", |
1102 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1103 | 16 | NULL, HFILL }}, |
1104 | 16 | { &hf_h235_pwdHash, |
1105 | 16 | { "pwdHash", "h235.pwdHash_element", |
1106 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1107 | 16 | NULL, HFILL }}, |
1108 | 16 | { &hf_h235_certSign, |
1109 | 16 | { "certSign", "h235.certSign_element", |
1110 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1111 | 16 | NULL, HFILL }}, |
1112 | 16 | { &hf_h235_ipsec, |
1113 | 16 | { "ipsec", "h235.ipsec_element", |
1114 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1115 | 16 | NULL, HFILL }}, |
1116 | 16 | { &hf_h235_tls, |
1117 | 16 | { "tls", "h235.tls_element", |
1118 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1119 | 16 | NULL, HFILL }}, |
1120 | 16 | { &hf_h235_nonStandard, |
1121 | 16 | { "nonStandard", "h235.nonStandard_element", |
1122 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1123 | 16 | "NonStandardParameter", HFILL }}, |
1124 | 16 | { &hf_h235_authenticationBES, |
1125 | 16 | { "authenticationBES", "h235.authenticationBES", |
1126 | 16 | FT_UINT32, BASE_DEC, VALS(h235_AuthenticationBES_vals), 0, |
1127 | 16 | NULL, HFILL }}, |
1128 | 16 | { &hf_h235_keyExch, |
1129 | 16 | { "keyExch", "h235.keyExch", |
1130 | 16 | FT_OID, BASE_NONE, NULL, 0, |
1131 | 16 | "OBJECT_IDENTIFIER", HFILL }}, |
1132 | 16 | { &hf_h235_tokenOID, |
1133 | 16 | { "tokenOID", "h235.tokenOID", |
1134 | 16 | FT_OID, BASE_NONE, NULL, 0, |
1135 | 16 | "OBJECT_IDENTIFIER", HFILL }}, |
1136 | 16 | { &hf_h235_timeStamp, |
1137 | 16 | { "timeStamp", "h235.timeStamp", |
1138 | 16 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, |
1139 | 16 | NULL, HFILL }}, |
1140 | 16 | { &hf_h235_password, |
1141 | 16 | { "password", "h235.password", |
1142 | 16 | FT_STRING, BASE_NONE, NULL, 0, |
1143 | 16 | NULL, HFILL }}, |
1144 | 16 | { &hf_h235_dhkey, |
1145 | 16 | { "dhkey", "h235.dhkey_element", |
1146 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1147 | 16 | "DHset", HFILL }}, |
1148 | 16 | { &hf_h235_challenge, |
1149 | 16 | { "challenge", "h235.challenge", |
1150 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1151 | 16 | "ChallengeString", HFILL }}, |
1152 | 16 | { &hf_h235_random, |
1153 | 16 | { "random", "h235.random", |
1154 | 16 | FT_INT32, BASE_DEC, NULL, 0, |
1155 | 16 | "RandomVal", HFILL }}, |
1156 | 16 | { &hf_h235_certificate, |
1157 | 16 | { "certificate", "h235.certificate_element", |
1158 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1159 | 16 | "TypedCertificate", HFILL }}, |
1160 | 16 | { &hf_h235_generalID, |
1161 | 16 | { "generalID", "h235.generalID", |
1162 | 16 | FT_STRING, BASE_NONE, NULL, 0, |
1163 | 16 | "Identifier", HFILL }}, |
1164 | 16 | { &hf_h235_eckasdhkey, |
1165 | 16 | { "eckasdhkey", "h235.eckasdhkey", |
1166 | 16 | FT_UINT32, BASE_DEC, VALS(h235_ECKASDH_vals), 0, |
1167 | 16 | "ECKASDH", HFILL }}, |
1168 | 16 | { &hf_h235_sendersID, |
1169 | 16 | { "sendersID", "h235.sendersID", |
1170 | 16 | FT_STRING, BASE_NONE, NULL, 0, |
1171 | 16 | "Identifier", HFILL }}, |
1172 | 16 | { &hf_h235_h235Key, |
1173 | 16 | { "h235Key", "h235.h235Key", |
1174 | 16 | FT_UINT32, BASE_DEC, VALS(h235_H235Key_vals), 0, |
1175 | 16 | NULL, HFILL }}, |
1176 | 16 | { &hf_h235_profileInfo, |
1177 | 16 | { "profileInfo", "h235.profileInfo", |
1178 | 16 | FT_UINT32, BASE_DEC, NULL, 0, |
1179 | 16 | "SEQUENCE_OF_ProfileElement", HFILL }}, |
1180 | 16 | { &hf_h235_profileInfo_item, |
1181 | 16 | { "ProfileElement", "h235.ProfileElement_element", |
1182 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1183 | 16 | NULL, HFILL }}, |
1184 | 16 | { &hf_h235_elementID, |
1185 | 16 | { "elementID", "h235.elementID", |
1186 | 16 | FT_UINT32, BASE_DEC, NULL, 0, |
1187 | 16 | "INTEGER_0_255", HFILL }}, |
1188 | 16 | { &hf_h235_paramS, |
1189 | 16 | { "paramS", "h235.paramS_element", |
1190 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1191 | 16 | NULL, HFILL }}, |
1192 | 16 | { &hf_h235_element, |
1193 | 16 | { "element", "h235.element", |
1194 | 16 | FT_UINT32, BASE_DEC, VALS(h235_Element_vals), 0, |
1195 | 16 | NULL, HFILL }}, |
1196 | 16 | { &hf_h235_octets, |
1197 | 16 | { "octets", "h235.octets", |
1198 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1199 | 16 | "OCTET_STRING", HFILL }}, |
1200 | 16 | { &hf_h235_integer, |
1201 | 16 | { "integer", "h235.integer", |
1202 | 16 | FT_INT32, BASE_DEC, NULL, 0, |
1203 | 16 | NULL, HFILL }}, |
1204 | 16 | { &hf_h235_bits, |
1205 | 16 | { "bits", "h235.bits", |
1206 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1207 | 16 | "BIT_STRING", HFILL }}, |
1208 | 16 | { &hf_h235_name, |
1209 | 16 | { "name", "h235.name", |
1210 | 16 | FT_STRING, BASE_NONE, NULL, 0, |
1211 | 16 | "BMPString", HFILL }}, |
1212 | 16 | { &hf_h235_flag, |
1213 | 16 | { "flag", "h235.flag", |
1214 | 16 | FT_BOOLEAN, BASE_NONE, NULL, 0, |
1215 | 16 | "BOOLEAN", HFILL }}, |
1216 | 16 | { &hf_h235_toBeSigned, |
1217 | 16 | { "toBeSigned", "h235.toBeSigned_element", |
1218 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1219 | 16 | NULL, HFILL }}, |
1220 | 16 | { &hf_h235_algorithmOID, |
1221 | 16 | { "algorithmOID", "h235.algorithmOID", |
1222 | 16 | FT_OID, BASE_NONE, NULL, 0, |
1223 | 16 | "OBJECT_IDENTIFIER", HFILL }}, |
1224 | 16 | { &hf_h235_signaturedata, |
1225 | 16 | { "signature", "h235.signaturedata", |
1226 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1227 | 16 | "BIT_STRING", HFILL }}, |
1228 | 16 | { &hf_h235_encryptedData, |
1229 | 16 | { "encryptedData", "h235.encryptedData", |
1230 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1231 | 16 | "OCTET_STRING", HFILL }}, |
1232 | 16 | { &hf_h235_hash, |
1233 | 16 | { "hash", "h235.hash", |
1234 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1235 | 16 | "BIT_STRING", HFILL }}, |
1236 | 16 | { &hf_h235_ranInt, |
1237 | 16 | { "ranInt", "h235.ranInt", |
1238 | 16 | FT_INT32, BASE_DEC, NULL, 0, |
1239 | 16 | "INTEGER", HFILL }}, |
1240 | 16 | { &hf_h235_iv8, |
1241 | 16 | { "iv8", "h235.iv8", |
1242 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1243 | 16 | NULL, HFILL }}, |
1244 | 16 | { &hf_h235_iv16, |
1245 | 16 | { "iv16", "h235.iv16", |
1246 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1247 | 16 | NULL, HFILL }}, |
1248 | 16 | { &hf_h235_iv, |
1249 | 16 | { "iv", "h235.iv", |
1250 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1251 | 16 | "OCTET_STRING", HFILL }}, |
1252 | 16 | { &hf_h235_clearSalt, |
1253 | 16 | { "clearSalt", "h235.clearSalt", |
1254 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1255 | 16 | "OCTET_STRING", HFILL }}, |
1256 | 16 | { &hf_h235_cryptoEncryptedToken, |
1257 | 16 | { "cryptoEncryptedToken", "h235.cryptoEncryptedToken_element", |
1258 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1259 | 16 | NULL, HFILL }}, |
1260 | 16 | { &hf_h235_encryptedToken, |
1261 | 16 | { "token", "h235.encryptedToken_element", |
1262 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1263 | 16 | "ENCRYPTED", HFILL }}, |
1264 | 16 | { &hf_h235_cryptoSignedToken, |
1265 | 16 | { "cryptoSignedToken", "h235.cryptoSignedToken_element", |
1266 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1267 | 16 | NULL, HFILL }}, |
1268 | 16 | { &hf_h235_signedToken, |
1269 | 16 | { "token", "h235.signedToken_element", |
1270 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1271 | 16 | "SIGNED", HFILL }}, |
1272 | 16 | { &hf_h235_cryptoHashedToken, |
1273 | 16 | { "cryptoHashedToken", "h235.cryptoHashedToken_element", |
1274 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1275 | 16 | NULL, HFILL }}, |
1276 | 16 | { &hf_h235_hashedVals, |
1277 | 16 | { "hashedVals", "h235.hashedVals_element", |
1278 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1279 | 16 | "ClearToken", HFILL }}, |
1280 | 16 | { &hf_h235_hashedToken, |
1281 | 16 | { "token", "h235.hashedToken_element", |
1282 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1283 | 16 | "HASHED", HFILL }}, |
1284 | 16 | { &hf_h235_cryptoPwdEncr, |
1285 | 16 | { "cryptoPwdEncr", "h235.cryptoPwdEncr_element", |
1286 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1287 | 16 | "ENCRYPTED", HFILL }}, |
1288 | 16 | { &hf_h235_secureChannel, |
1289 | 16 | { "secureChannel", "h235.secureChannel", |
1290 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1291 | 16 | "KeyMaterial", HFILL }}, |
1292 | 16 | { &hf_h235_sharedSecret, |
1293 | 16 | { "sharedSecret", "h235.sharedSecret_element", |
1294 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1295 | 16 | "ENCRYPTED", HFILL }}, |
1296 | 16 | { &hf_h235_certProtectedKey, |
1297 | 16 | { "certProtectedKey", "h235.certProtectedKey_element", |
1298 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1299 | 16 | "SIGNED", HFILL }}, |
1300 | 16 | { &hf_h235_secureSharedSecret, |
1301 | 16 | { "secureSharedSecret", "h235.secureSharedSecret_element", |
1302 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1303 | 16 | "V3KeySyncMaterial", HFILL }}, |
1304 | 16 | { &hf_h235_encryptedSessionKey, |
1305 | 16 | { "encryptedSessionKey", "h235.encryptedSessionKey", |
1306 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1307 | 16 | "OCTET_STRING", HFILL }}, |
1308 | 16 | { &hf_h235_encryptedSaltingKey, |
1309 | 16 | { "encryptedSaltingKey", "h235.encryptedSaltingKey", |
1310 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1311 | 16 | "OCTET_STRING", HFILL }}, |
1312 | 16 | { &hf_h235_clearSaltingKey, |
1313 | 16 | { "clearSaltingKey", "h235.clearSaltingKey", |
1314 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1315 | 16 | "OCTET_STRING", HFILL }}, |
1316 | 16 | { &hf_h235_paramSsalt, |
1317 | 16 | { "paramSsalt", "h235.paramSsalt_element", |
1318 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1319 | 16 | "Params", HFILL }}, |
1320 | 16 | { &hf_h235_keyDerivationOID, |
1321 | 16 | { "keyDerivationOID", "h235.keyDerivationOID", |
1322 | 16 | FT_OID, BASE_NONE, NULL, 0, |
1323 | 16 | "OBJECT_IDENTIFIER", HFILL }}, |
1324 | 16 | { &hf_h235_genericKeyMaterial, |
1325 | 16 | { "genericKeyMaterial", "h235.genericKeyMaterial", |
1326 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1327 | 16 | "OCTET_STRING", HFILL }}, |
1328 | 16 | { &hf_h235_SrtpCryptoCapability_item, |
1329 | 16 | { "SrtpCryptoInfo", "h235.SrtpCryptoInfo_element", |
1330 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1331 | 16 | NULL, HFILL }}, |
1332 | 16 | { &hf_h235_cryptoSuite, |
1333 | 16 | { "cryptoSuite", "h235.cryptoSuite", |
1334 | 16 | FT_OID, BASE_NONE, NULL, 0, |
1335 | 16 | "OBJECT_IDENTIFIER", HFILL }}, |
1336 | 16 | { &hf_h235_sessionParams, |
1337 | 16 | { "sessionParams", "h235.sessionParams_element", |
1338 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1339 | 16 | "SrtpSessionParameters", HFILL }}, |
1340 | 16 | { &hf_h235_allowMKI, |
1341 | 16 | { "allowMKI", "h235.allowMKI", |
1342 | 16 | FT_BOOLEAN, BASE_NONE, NULL, 0, |
1343 | 16 | "BOOLEAN", HFILL }}, |
1344 | 16 | { &hf_h235_SrtpKeys_item, |
1345 | 16 | { "SrtpKeyParameters", "h235.SrtpKeyParameters_element", |
1346 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1347 | 16 | NULL, HFILL }}, |
1348 | 16 | { &hf_h235_masterKey, |
1349 | 16 | { "masterKey", "h235.masterKey", |
1350 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1351 | 16 | "OCTET_STRING", HFILL }}, |
1352 | 16 | { &hf_h235_masterSalt, |
1353 | 16 | { "masterSalt", "h235.masterSalt", |
1354 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1355 | 16 | "OCTET_STRING", HFILL }}, |
1356 | 16 | { &hf_h235_lifetime, |
1357 | 16 | { "lifetime", "h235.lifetime", |
1358 | 16 | FT_UINT32, BASE_DEC, VALS(h235_T_lifetime_vals), 0, |
1359 | 16 | NULL, HFILL }}, |
1360 | 16 | { &hf_h235_powerOfTwo, |
1361 | 16 | { "powerOfTwo", "h235.powerOfTwo", |
1362 | 16 | FT_INT32, BASE_DEC, NULL, 0, |
1363 | 16 | "INTEGER", HFILL }}, |
1364 | 16 | { &hf_h235_specific, |
1365 | 16 | { "specific", "h235.specific", |
1366 | 16 | FT_INT32, BASE_DEC, NULL, 0, |
1367 | 16 | "INTEGER", HFILL }}, |
1368 | 16 | { &hf_h235_mki, |
1369 | 16 | { "mki", "h235.mki_element", |
1370 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1371 | 16 | NULL, HFILL }}, |
1372 | 16 | { &hf_h235_length, |
1373 | 16 | { "length", "h235.length", |
1374 | 16 | FT_UINT32, BASE_DEC, NULL, 0, |
1375 | 16 | "INTEGER_1_128", HFILL }}, |
1376 | 16 | { &hf_h235_value, |
1377 | 16 | { "value", "h235.value", |
1378 | 16 | FT_BYTES, BASE_NONE, NULL, 0, |
1379 | 16 | "OCTET_STRING", HFILL }}, |
1380 | 16 | { &hf_h235_kdr, |
1381 | 16 | { "kdr", "h235.kdr", |
1382 | 16 | FT_UINT32, BASE_DEC, NULL, 0, |
1383 | 16 | "INTEGER_0_24", HFILL }}, |
1384 | 16 | { &hf_h235_unencryptedSrtp, |
1385 | 16 | { "unencryptedSrtp", "h235.unencryptedSrtp", |
1386 | 16 | FT_BOOLEAN, BASE_NONE, NULL, 0, |
1387 | 16 | "BOOLEAN", HFILL }}, |
1388 | 16 | { &hf_h235_unencryptedSrtcp, |
1389 | 16 | { "unencryptedSrtcp", "h235.unencryptedSrtcp", |
1390 | 16 | FT_BOOLEAN, BASE_NONE, NULL, 0, |
1391 | 16 | "BOOLEAN", HFILL }}, |
1392 | 16 | { &hf_h235_unauthenticatedSrtp, |
1393 | 16 | { "unauthenticatedSrtp", "h235.unauthenticatedSrtp", |
1394 | 16 | FT_BOOLEAN, BASE_NONE, NULL, 0, |
1395 | 16 | "BOOLEAN", HFILL }}, |
1396 | 16 | { &hf_h235_fecOrder, |
1397 | 16 | { "fecOrder", "h235.fecOrder_element", |
1398 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1399 | 16 | NULL, HFILL }}, |
1400 | 16 | { &hf_h235_windowSizeHint, |
1401 | 16 | { "windowSizeHint", "h235.windowSizeHint", |
1402 | 16 | FT_UINT32, BASE_DEC, NULL, 0, |
1403 | 16 | "INTEGER_64_65535", HFILL }}, |
1404 | 16 | { &hf_h235_newParameter, |
1405 | 16 | { "newParameter", "h235.newParameter", |
1406 | 16 | FT_UINT32, BASE_DEC, NULL, 0, |
1407 | 16 | "SEQUENCE_OF_GenericData", HFILL }}, |
1408 | 16 | { &hf_h235_newParameter_item, |
1409 | 16 | { "GenericData", "h235.GenericData_element", |
1410 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1411 | 16 | NULL, HFILL }}, |
1412 | 16 | { &hf_h235_fecBeforeSrtp, |
1413 | 16 | { "fecBeforeSrtp", "h235.fecBeforeSrtp_element", |
1414 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1415 | 16 | NULL, HFILL }}, |
1416 | 16 | { &hf_h235_fecAfterSrtp, |
1417 | 16 | { "fecAfterSrtp", "h235.fecAfterSrtp_element", |
1418 | 16 | FT_NONE, BASE_NONE, NULL, 0, |
1419 | 16 | NULL, HFILL }}, |
1420 | 16 | }; |
1421 | | |
1422 | | /* List of subtrees */ |
1423 | 16 | static int *ett[] = { |
1424 | 16 | &ett_h235_NonStandardParameter, |
1425 | 16 | &ett_h235_DHset, |
1426 | 16 | &ett_h235_ECpoint, |
1427 | 16 | &ett_h235_ECKASDH, |
1428 | 16 | &ett_h235_T_eckasdhp, |
1429 | 16 | &ett_h235_T_eckasdh2, |
1430 | 16 | &ett_h235_TypedCertificate, |
1431 | 16 | &ett_h235_AuthenticationBES, |
1432 | 16 | &ett_h235_AuthenticationMechanism, |
1433 | 16 | &ett_h235_ClearToken, |
1434 | 16 | &ett_h235_SEQUENCE_OF_ProfileElement, |
1435 | 16 | &ett_h235_ProfileElement, |
1436 | 16 | &ett_h235_Element, |
1437 | 16 | &ett_h235_SIGNED, |
1438 | 16 | &ett_h235_ENCRYPTED, |
1439 | 16 | &ett_h235_HASHED, |
1440 | 16 | &ett_h235_Params, |
1441 | 16 | &ett_h235_CryptoToken, |
1442 | 16 | &ett_h235_T_cryptoEncryptedToken, |
1443 | 16 | &ett_h235_T_cryptoSignedToken, |
1444 | 16 | &ett_h235_T_cryptoHashedToken, |
1445 | 16 | &ett_h235_H235Key, |
1446 | 16 | &ett_h235_V3KeySyncMaterial, |
1447 | 16 | &ett_h235_SrtpCryptoCapability, |
1448 | 16 | &ett_h235_SrtpCryptoInfo, |
1449 | 16 | &ett_h235_SrtpKeys, |
1450 | 16 | &ett_h235_SrtpKeyParameters, |
1451 | 16 | &ett_h235_T_lifetime, |
1452 | 16 | &ett_h235_T_mki, |
1453 | 16 | &ett_h235_SrtpSessionParameters, |
1454 | 16 | &ett_h235_SEQUENCE_OF_GenericData, |
1455 | 16 | &ett_h235_FecOrder, |
1456 | 16 | }; |
1457 | | |
1458 | | /* Register protocol */ |
1459 | 16 | proto_h235 = proto_register_protocol("H235-SECURITY-MESSAGES", "H.235", "h235"); |
1460 | | |
1461 | | /* Register fields and subtrees */ |
1462 | 16 | proto_register_field_array(proto_h235, hf, array_length(hf)); |
1463 | 16 | proto_register_subtree_array(ett, array_length(ett)); |
1464 | | |
1465 | | /* OID names */ |
1466 | | /* H.235.1, Chapter 15, Table 3 */ |
1467 | | /* A */ |
1468 | 16 | oid_add_from_string("all fields in RAS/CS","0.0.8.235.0.1.1"); |
1469 | 16 | oid_add_from_string("all fields in RAS/CS","0.0.8.235.0.2.1"); |
1470 | | /* T */ |
1471 | 16 | oid_add_from_string("ClearToken","0.0.8.235.0.1.5"); |
1472 | 16 | oid_add_from_string("ClearToken","0.0.8.235.0.2.5"); |
1473 | | /* U */ |
1474 | 16 | oid_add_from_string("HMAC-SHA1-96","0.0.8.235.0.1.6"); |
1475 | 16 | oid_add_from_string("HMAC-SHA1-96","0.0.8.235.0.2.6"); |
1476 | | /* H.235.7, Chapter 5, Table 1 */ |
1477 | 16 | oid_add_from_string("MIKEY", OID_MIKEY); |
1478 | 16 | oid_add_from_string("MIKEY-PS", OID_MIKEY_PS); |
1479 | 16 | oid_add_from_string("MIKEY-DHHMAC", OID_MIKEY_DHHMAC); |
1480 | 16 | oid_add_from_string("MIKEY-PK-SIGN", OID_MIKEY_PK_SIGN); |
1481 | 16 | oid_add_from_string("MIKEY-DH-SIGN", OID_MIKEY_DH_SIGN); |
1482 | | /* H.235.7, Chapter 8.5 */ |
1483 | 16 | oid_add_from_string("TG",OID_TG); |
1484 | | /* H.235.7, Chapter 9.5 */ |
1485 | 16 | oid_add_from_string("SG",OID_SG); |
1486 | | /* H.235.8, Chapter 4.2, Table 2 */ |
1487 | 16 | oid_add_from_string("AES_CM_128_HMAC_SHA1_80","0.0.8.235.0.4.91"); |
1488 | 16 | oid_add_from_string("AES_CM_128_HMAC_SHA1_32","0.0.8.235.0.4.92"); |
1489 | 16 | oid_add_from_string("F8_128_HMAC_SHA1_80","0.0.8.235.0.4.93"); |
1490 | 16 | } |
1491 | | |
1492 | | |
1493 | | /*--- proto_reg_handoff_h235 -------------------------------------------*/ |
1494 | 16 | void proto_reg_handoff_h235(void) { |
1495 | 16 | dissector_handle_t mikey_handle; |
1496 | | |
1497 | 16 | mikey_handle = find_dissector("mikey"); |
1498 | | |
1499 | | /* H.235.7, Chapter 7.1, MIKEY operation at "session level" */ |
1500 | 16 | dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY "/nonCollapsing/0", mikey_handle); |
1501 | 16 | dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PS "/nonCollapsing/0", mikey_handle); |
1502 | 16 | dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DHHMAC "/nonCollapsing/0", mikey_handle); |
1503 | 16 | dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PK_SIGN "/nonCollapsing/0", mikey_handle); |
1504 | 16 | dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DH_SIGN "/nonCollapsing/0", mikey_handle); |
1505 | 16 | dissector_add_string("h245.gef.content", "EncryptionSync/0", mikey_handle); |
1506 | | /* H.235.7, Chapter 7.2, MIKEY operation at "media level" */ |
1507 | 16 | dissector_add_string("h245.gef.content", "EncryptionSync/76", mikey_handle); |
1508 | 16 | dissector_add_string("h245.gef.content", "EncryptionSync/72", mikey_handle); |
1509 | 16 | dissector_add_string("h245.gef.content", "EncryptionSync/73", mikey_handle); |
1510 | 16 | dissector_add_string("h245.gef.content", "EncryptionSync/74", mikey_handle); |
1511 | 16 | dissector_add_string("h245.gef.content", "EncryptionSync/75", mikey_handle); |
1512 | 16 | dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY "/nonCollapsing/76", mikey_handle); |
1513 | 16 | dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PS "/nonCollapsing/72", mikey_handle); |
1514 | 16 | dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DHHMAC "/nonCollapsing/73", mikey_handle); |
1515 | 16 | dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PK_SIGN "/nonCollapsing/74", mikey_handle); |
1516 | 16 | dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DH_SIGN "/nonCollapsing/75", mikey_handle); |
1517 | | |
1518 | | /* H.235.8, Chapter 4.1.2, SrtpCryptoCapability transport */ |
1519 | 16 | dissector_add_string("h245.gef.content", "GenericCapability/0.0.8.235.0.4.90/nonCollapsingRaw", |
1520 | 16 | create_dissector_handle(dissect_SrtpCryptoCapability_PDU, proto_h235)); |
1521 | | |
1522 | 16 | } |
1523 | | |