1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
4 /* asn2wrs.py -q -L -p h235 -c ./h235.cnf -s ./packet-h235-template -D . -O ../.. H235-SECURITY-MESSAGES.asn H235-SRTP.asn */
7 * Routines for H.235 packet dissection
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
14 * SPDX-License-Identifier: GPL-2.0-or-later
19 #include <epan/packet.h>
20 #include <epan/oids.h>
21 #include <epan/asn1.h>
22 #include <wsutil/array.h>
24 #include "packet-per.h"
25 #include "packet-h235.h"
26 #include "packet-h225.h"
28 #define PNAME "H235-SECURITY-MESSAGES"
29 #define PSNAME "H.235"
32 #define OID_MIKEY "0.0.8.235.0.3.76"
33 #define OID_MIKEY_PS "0.0.8.235.0.3.72"
34 #define OID_MIKEY_DHHMAC "0.0.8.235.0.3.73"
35 #define OID_MIKEY_PK_SIGN "0.0.8.235.0.3.74"
36 #define OID_MIKEY_DH_SIGN "0.0.8.235.0.3.75"
37 #define OID_TG "0.0.8.235.0.3.70"
38 #define OID_SG "0.0.8.235.0.3.71"
40 void proto_register_h235(void);
41 void proto_reg_handoff_h235(void);
43 /* Initialize the protocol and registered fields */
44 static int proto_h235
;
45 static int hf_h235_SrtpCryptoCapability_PDU
; /* SrtpCryptoCapability */
46 static int hf_h235_nonStandardIdentifier
; /* OBJECT_IDENTIFIER */
47 static int hf_h235_data
; /* OCTET_STRING */
48 static int hf_h235_halfkey
; /* BIT_STRING_SIZE_0_2048 */
49 static int hf_h235_modSize
; /* BIT_STRING_SIZE_0_2048 */
50 static int hf_h235_generator
; /* BIT_STRING_SIZE_0_2048 */
51 static int hf_h235_x
; /* BIT_STRING_SIZE_0_511 */
52 static int hf_h235_y
; /* BIT_STRING_SIZE_0_511 */
53 static int hf_h235_eckasdhp
; /* T_eckasdhp */
54 static int hf_h235_public_key
; /* ECpoint */
55 static int hf_h235_modulus
; /* BIT_STRING_SIZE_0_511 */
56 static int hf_h235_base
; /* ECpoint */
57 static int hf_h235_weierstrassA
; /* BIT_STRING_SIZE_0_511 */
58 static int hf_h235_weierstrassB
; /* BIT_STRING_SIZE_0_511 */
59 static int hf_h235_eckasdh2
; /* T_eckasdh2 */
60 static int hf_h235_fieldSize
; /* BIT_STRING_SIZE_0_511 */
61 static int hf_h235_type
; /* OBJECT_IDENTIFIER */
62 static int hf_h235_certificatedata
; /* OCTET_STRING */
63 static int hf_h235_default
; /* NULL */
64 static int hf_h235_radius
; /* NULL */
65 static int hf_h235_dhExch
; /* NULL */
66 static int hf_h235_pwdSymEnc
; /* NULL */
67 static int hf_h235_pwdHash
; /* NULL */
68 static int hf_h235_certSign
; /* NULL */
69 static int hf_h235_ipsec
; /* NULL */
70 static int hf_h235_tls
; /* NULL */
71 static int hf_h235_nonStandard
; /* NonStandardParameter */
72 static int hf_h235_authenticationBES
; /* AuthenticationBES */
73 static int hf_h235_keyExch
; /* OBJECT_IDENTIFIER */
74 static int hf_h235_tokenOID
; /* OBJECT_IDENTIFIER */
75 static int hf_h235_timeStamp
; /* TimeStamp */
76 static int hf_h235_password
; /* Password */
77 static int hf_h235_dhkey
; /* DHset */
78 static int hf_h235_challenge
; /* ChallengeString */
79 static int hf_h235_random
; /* RandomVal */
80 static int hf_h235_certificate
; /* TypedCertificate */
81 static int hf_h235_generalID
; /* Identifier */
82 static int hf_h235_eckasdhkey
; /* ECKASDH */
83 static int hf_h235_sendersID
; /* Identifier */
84 static int hf_h235_h235Key
; /* H235Key */
85 static int hf_h235_profileInfo
; /* SEQUENCE_OF_ProfileElement */
86 static int hf_h235_profileInfo_item
; /* ProfileElement */
87 static int hf_h235_elementID
; /* INTEGER_0_255 */
88 static int hf_h235_paramS
; /* Params */
89 static int hf_h235_element
; /* Element */
90 static int hf_h235_octets
; /* OCTET_STRING */
91 static int hf_h235_integer
; /* INTEGER */
92 static int hf_h235_bits
; /* BIT_STRING */
93 static int hf_h235_name
; /* BMPString */
94 static int hf_h235_flag
; /* BOOLEAN */
95 static int hf_h235_toBeSigned
; /* ToBeSigned */
96 static int hf_h235_algorithmOID
; /* OBJECT_IDENTIFIER */
97 static int hf_h235_signaturedata
; /* BIT_STRING */
98 static int hf_h235_encryptedData
; /* OCTET_STRING */
99 static int hf_h235_hash
; /* BIT_STRING */
100 static int hf_h235_ranInt
; /* INTEGER */
101 static int hf_h235_iv8
; /* IV8 */
102 static int hf_h235_iv16
; /* IV16 */
103 static int hf_h235_iv
; /* OCTET_STRING */
104 static int hf_h235_clearSalt
; /* OCTET_STRING */
105 static int hf_h235_cryptoEncryptedToken
; /* T_cryptoEncryptedToken */
106 static int hf_h235_encryptedToken
; /* ENCRYPTED */
107 static int hf_h235_cryptoSignedToken
; /* T_cryptoSignedToken */
108 static int hf_h235_signedToken
; /* SIGNED */
109 static int hf_h235_cryptoHashedToken
; /* T_cryptoHashedToken */
110 static int hf_h235_hashedVals
; /* ClearToken */
111 static int hf_h235_hashedToken
; /* HASHED */
112 static int hf_h235_cryptoPwdEncr
; /* ENCRYPTED */
113 static int hf_h235_secureChannel
; /* KeyMaterial */
114 static int hf_h235_sharedSecret
; /* ENCRYPTED */
115 static int hf_h235_certProtectedKey
; /* SIGNED */
116 static int hf_h235_secureSharedSecret
; /* V3KeySyncMaterial */
117 static int hf_h235_encryptedSessionKey
; /* OCTET_STRING */
118 static int hf_h235_encryptedSaltingKey
; /* OCTET_STRING */
119 static int hf_h235_clearSaltingKey
; /* OCTET_STRING */
120 static int hf_h235_paramSsalt
; /* Params */
121 static int hf_h235_keyDerivationOID
; /* OBJECT_IDENTIFIER */
122 static int hf_h235_genericKeyMaterial
; /* OCTET_STRING */
123 static int hf_h235_SrtpCryptoCapability_item
; /* SrtpCryptoInfo */
124 static int hf_h235_cryptoSuite
; /* OBJECT_IDENTIFIER */
125 static int hf_h235_sessionParams
; /* SrtpSessionParameters */
126 static int hf_h235_allowMKI
; /* BOOLEAN */
127 static int hf_h235_SrtpKeys_item
; /* SrtpKeyParameters */
128 static int hf_h235_masterKey
; /* OCTET_STRING */
129 static int hf_h235_masterSalt
; /* OCTET_STRING */
130 static int hf_h235_lifetime
; /* T_lifetime */
131 static int hf_h235_powerOfTwo
; /* INTEGER */
132 static int hf_h235_specific
; /* INTEGER */
133 static int hf_h235_mki
; /* T_mki */
134 static int hf_h235_length
; /* INTEGER_1_128 */
135 static int hf_h235_value
; /* OCTET_STRING */
136 static int hf_h235_kdr
; /* INTEGER_0_24 */
137 static int hf_h235_unencryptedSrtp
; /* BOOLEAN */
138 static int hf_h235_unencryptedSrtcp
; /* BOOLEAN */
139 static int hf_h235_unauthenticatedSrtp
; /* BOOLEAN */
140 static int hf_h235_fecOrder
; /* FecOrder */
141 static int hf_h235_windowSizeHint
; /* INTEGER_64_65535 */
142 static int hf_h235_newParameter
; /* SEQUENCE_OF_GenericData */
143 static int hf_h235_newParameter_item
; /* GenericData */
144 static int hf_h235_fecBeforeSrtp
; /* NULL */
145 static int hf_h235_fecAfterSrtp
; /* NULL */
147 /* Initialize the subtree pointers */
148 static int ett_h235_NonStandardParameter
;
149 static int ett_h235_DHset
;
150 static int ett_h235_ECpoint
;
151 static int ett_h235_ECKASDH
;
152 static int ett_h235_T_eckasdhp
;
153 static int ett_h235_T_eckasdh2
;
154 static int ett_h235_TypedCertificate
;
155 static int ett_h235_AuthenticationBES
;
156 static int ett_h235_AuthenticationMechanism
;
157 static int ett_h235_ClearToken
;
158 static int ett_h235_SEQUENCE_OF_ProfileElement
;
159 static int ett_h235_ProfileElement
;
160 static int ett_h235_Element
;
161 static int ett_h235_SIGNED
;
162 static int ett_h235_ENCRYPTED
;
163 static int ett_h235_HASHED
;
164 static int ett_h235_Params
;
165 static int ett_h235_CryptoToken
;
166 static int ett_h235_T_cryptoEncryptedToken
;
167 static int ett_h235_T_cryptoSignedToken
;
168 static int ett_h235_T_cryptoHashedToken
;
169 static int ett_h235_H235Key
;
170 static int ett_h235_V3KeySyncMaterial
;
171 static int ett_h235_SrtpCryptoCapability
;
172 static int ett_h235_SrtpCryptoInfo
;
173 static int ett_h235_SrtpKeys
;
174 static int ett_h235_SrtpKeyParameters
;
175 static int ett_h235_T_lifetime
;
176 static int ett_h235_T_mki
;
177 static int ett_h235_SrtpSessionParameters
;
178 static int ett_h235_SEQUENCE_OF_GenericData
;
179 static int ett_h235_FecOrder
;
183 dissect_xxx_ToBeSigned(tvbuff_t
*tvb
, int offset
, asn1_ctx_t
*actx
, proto_tree
*tree
, int hf_index _U_
) {
184 dissect_per_not_decoded_yet(tree
, actx
->pinfo
, tvb
, "ToBeSigned");
191 dissect_h235_ChallengeString(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
192 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
193 8, 128, false, NULL
);
201 dissect_h235_TimeStamp(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
202 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
203 1U, 4294967295U, NULL
, false);
211 dissect_h235_RandomVal(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
212 offset
= dissect_per_integer(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
220 dissect_h235_Password(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
221 offset
= dissect_per_BMPString(tvb
, offset
, actx
, tree
, hf_index
,
230 dissect_h235_Identifier(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
231 offset
= dissect_per_BMPString(tvb
, offset
, actx
, tree
, hf_index
,
240 dissect_h235_KeyMaterial(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
241 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
242 1, 2048, false, NULL
, 0, NULL
, NULL
);
250 dissect_h235_OBJECT_IDENTIFIER(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
251 offset
= dissect_per_object_identifier(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
259 dissect_h235_OCTET_STRING(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
260 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
261 NO_BOUND
, NO_BOUND
, false, NULL
);
267 static const per_sequence_t NonStandardParameter_sequence
[] = {
268 { &hf_h235_nonStandardIdentifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_OBJECT_IDENTIFIER
},
269 { &hf_h235_data
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_OCTET_STRING
},
274 dissect_h235_NonStandardParameter(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
275 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
276 ett_h235_NonStandardParameter
, NonStandardParameter_sequence
);
284 dissect_h235_BIT_STRING_SIZE_0_2048(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
285 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
286 0, 2048, false, NULL
, 0, NULL
, NULL
);
292 static const per_sequence_t DHset_sequence
[] = {
293 { &hf_h235_halfkey
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_h235_BIT_STRING_SIZE_0_2048
},
294 { &hf_h235_modSize
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_h235_BIT_STRING_SIZE_0_2048
},
295 { &hf_h235_generator
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_h235_BIT_STRING_SIZE_0_2048
},
300 dissect_h235_DHset(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
301 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
302 ett_h235_DHset
, DHset_sequence
);
310 dissect_h235_BIT_STRING_SIZE_0_511(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
311 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
312 0, 511, false, NULL
, 0, NULL
, NULL
);
318 static const per_sequence_t ECpoint_sequence
[] = {
319 { &hf_h235_x
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_BIT_STRING_SIZE_0_511
},
320 { &hf_h235_y
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_BIT_STRING_SIZE_0_511
},
325 dissect_h235_ECpoint(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
326 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
327 ett_h235_ECpoint
, ECpoint_sequence
);
333 static const per_sequence_t T_eckasdhp_sequence
[] = {
334 { &hf_h235_public_key
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_ECpoint
},
335 { &hf_h235_modulus
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_BIT_STRING_SIZE_0_511
},
336 { &hf_h235_base
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_ECpoint
},
337 { &hf_h235_weierstrassA
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_BIT_STRING_SIZE_0_511
},
338 { &hf_h235_weierstrassB
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_BIT_STRING_SIZE_0_511
},
343 dissect_h235_T_eckasdhp(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
344 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
345 ett_h235_T_eckasdhp
, T_eckasdhp_sequence
);
351 static const per_sequence_t T_eckasdh2_sequence
[] = {
352 { &hf_h235_public_key
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_ECpoint
},
353 { &hf_h235_fieldSize
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_BIT_STRING_SIZE_0_511
},
354 { &hf_h235_base
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_ECpoint
},
355 { &hf_h235_weierstrassA
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_BIT_STRING_SIZE_0_511
},
356 { &hf_h235_weierstrassB
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_BIT_STRING_SIZE_0_511
},
361 dissect_h235_T_eckasdh2(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
362 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
363 ett_h235_T_eckasdh2
, T_eckasdh2_sequence
);
369 static const value_string h235_ECKASDH_vals
[] = {
375 static const per_choice_t ECKASDH_choice
[] = {
376 { 0, &hf_h235_eckasdhp
, ASN1_EXTENSION_ROOT
, dissect_h235_T_eckasdhp
},
377 { 1, &hf_h235_eckasdh2
, ASN1_EXTENSION_ROOT
, dissect_h235_T_eckasdh2
},
382 dissect_h235_ECKASDH(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
383 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
384 ett_h235_ECKASDH
, ECKASDH_choice
,
391 static const per_sequence_t TypedCertificate_sequence
[] = {
392 { &hf_h235_type
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_h235_OBJECT_IDENTIFIER
},
393 { &hf_h235_certificatedata
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_h235_OCTET_STRING
},
398 dissect_h235_TypedCertificate(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
399 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
400 ett_h235_TypedCertificate
, TypedCertificate_sequence
);
408 dissect_h235_NULL(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
409 offset
= dissect_per_null(tvb
, offset
, actx
, tree
, hf_index
);
415 static const value_string h235_AuthenticationBES_vals
[] = {
421 static const per_choice_t AuthenticationBES_choice
[] = {
422 { 0, &hf_h235_default
, ASN1_EXTENSION_ROOT
, dissect_h235_NULL
},
423 { 1, &hf_h235_radius
, ASN1_EXTENSION_ROOT
, dissect_h235_NULL
},
428 dissect_h235_AuthenticationBES(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
429 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
430 ett_h235_AuthenticationBES
, AuthenticationBES_choice
,
437 const value_string h235_AuthenticationMechanism_vals
[] = {
444 { 6, "nonStandard" },
445 { 7, "authenticationBES" },
450 static const per_choice_t AuthenticationMechanism_choice
[] = {
451 { 0, &hf_h235_dhExch
, ASN1_EXTENSION_ROOT
, dissect_h235_NULL
},
452 { 1, &hf_h235_pwdSymEnc
, ASN1_EXTENSION_ROOT
, dissect_h235_NULL
},
453 { 2, &hf_h235_pwdHash
, ASN1_EXTENSION_ROOT
, dissect_h235_NULL
},
454 { 3, &hf_h235_certSign
, ASN1_EXTENSION_ROOT
, dissect_h235_NULL
},
455 { 4, &hf_h235_ipsec
, ASN1_EXTENSION_ROOT
, dissect_h235_NULL
},
456 { 5, &hf_h235_tls
, ASN1_EXTENSION_ROOT
, dissect_h235_NULL
},
457 { 6, &hf_h235_nonStandard
, ASN1_EXTENSION_ROOT
, dissect_h235_NonStandardParameter
},
458 { 7, &hf_h235_authenticationBES
, ASN1_NOT_EXTENSION_ROOT
, dissect_h235_AuthenticationBES
},
459 { 8, &hf_h235_keyExch
, ASN1_NOT_EXTENSION_ROOT
, dissect_h235_OBJECT_IDENTIFIER
},
464 dissect_h235_AuthenticationMechanism(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
465 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
466 ett_h235_AuthenticationMechanism
, AuthenticationMechanism_choice
,
475 dissect_h235_INTEGER(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
476 offset
= dissect_per_integer(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
484 dissect_h235_IV8(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
485 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
494 dissect_h235_IV16(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
495 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
496 16, 16, false, NULL
);
502 static const per_sequence_t Params_sequence
[] = {
503 { &hf_h235_ranInt
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_INTEGER
},
504 { &hf_h235_iv8
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_IV8
},
505 { &hf_h235_iv16
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_IV16
},
506 { &hf_h235_iv
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_OCTET_STRING
},
507 { &hf_h235_clearSalt
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_OCTET_STRING
},
512 dissect_h235_Params(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
513 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
514 ett_h235_Params
, Params_sequence
);
520 static const per_sequence_t ENCRYPTED_sequence
[] = {
521 { &hf_h235_algorithmOID
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_OBJECT_IDENTIFIER
},
522 { &hf_h235_paramS
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_Params
},
523 { &hf_h235_encryptedData
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_OCTET_STRING
},
528 dissect_h235_ENCRYPTED(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
529 proto_item
*hidden_item
;
530 hidden_item
= proto_tree_add_item(tree
, proto_h235
, tvb
, offset
>>3, 0, ENC_NA
);
531 proto_item_set_hidden(hidden_item
);
532 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
533 ett_h235_ENCRYPTED
, ENCRYPTED_sequence
);
541 dissect_h235_BIT_STRING(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
542 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
543 NO_BOUND
, NO_BOUND
, false, NULL
, 0, NULL
, NULL
);
549 static const per_sequence_t SIGNED_sequence
[] = {
550 { &hf_h235_toBeSigned
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_xxx_ToBeSigned
},
551 { &hf_h235_algorithmOID
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_OBJECT_IDENTIFIER
},
552 { &hf_h235_paramS
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_Params
},
553 { &hf_h235_signaturedata
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_BIT_STRING
},
558 dissect_h235_SIGNED(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
559 proto_item
*hidden_item
;
560 hidden_item
= proto_tree_add_item(tree
, proto_h235
, tvb
, offset
>>3, 0, ENC_NA
);
561 proto_item_set_hidden(hidden_item
);
562 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
563 ett_h235_SIGNED
, SIGNED_sequence
);
569 static const per_sequence_t V3KeySyncMaterial_sequence
[] = {
570 { &hf_h235_generalID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_Identifier
},
571 { &hf_h235_algorithmOID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_OBJECT_IDENTIFIER
},
572 { &hf_h235_paramS
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_h235_Params
},
573 { &hf_h235_encryptedSessionKey
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_OCTET_STRING
},
574 { &hf_h235_encryptedSaltingKey
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_OCTET_STRING
},
575 { &hf_h235_clearSaltingKey
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_OCTET_STRING
},
576 { &hf_h235_paramSsalt
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_Params
},
577 { &hf_h235_keyDerivationOID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_OBJECT_IDENTIFIER
},
578 { &hf_h235_genericKeyMaterial
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_OCTET_STRING
},
583 dissect_h235_V3KeySyncMaterial(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
584 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
585 ett_h235_V3KeySyncMaterial
, V3KeySyncMaterial_sequence
);
591 static const value_string h235_H235Key_vals
[] = {
592 { 0, "secureChannel" },
593 { 1, "sharedSecret" },
594 { 2, "certProtectedKey" },
595 { 3, "secureSharedSecret" },
599 static const per_choice_t H235Key_choice
[] = {
600 { 0, &hf_h235_secureChannel
, ASN1_EXTENSION_ROOT
, dissect_h235_KeyMaterial
},
601 { 1, &hf_h235_sharedSecret
, ASN1_EXTENSION_ROOT
, dissect_h235_ENCRYPTED
},
602 { 2, &hf_h235_certProtectedKey
, ASN1_EXTENSION_ROOT
, dissect_h235_SIGNED
},
603 { 3, &hf_h235_secureSharedSecret
, ASN1_NOT_EXTENSION_ROOT
, dissect_h235_V3KeySyncMaterial
},
608 dissect_h235_H235Key(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
609 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
610 ett_h235_H235Key
, H235Key_choice
,
619 dissect_h235_INTEGER_0_255(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
620 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
621 0U, 255U, NULL
, false);
629 dissect_h235_BMPString(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
630 offset
= dissect_per_BMPString(tvb
, offset
, actx
, tree
, hf_index
,
631 NO_BOUND
, NO_BOUND
, false);
639 dissect_h235_BOOLEAN(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
640 offset
= dissect_per_boolean(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
646 static const value_string h235_Element_vals
[] = {
655 static const per_choice_t Element_choice
[] = {
656 { 0, &hf_h235_octets
, ASN1_EXTENSION_ROOT
, dissect_h235_OCTET_STRING
},
657 { 1, &hf_h235_integer
, ASN1_EXTENSION_ROOT
, dissect_h235_INTEGER
},
658 { 2, &hf_h235_bits
, ASN1_EXTENSION_ROOT
, dissect_h235_BIT_STRING
},
659 { 3, &hf_h235_name
, ASN1_EXTENSION_ROOT
, dissect_h235_BMPString
},
660 { 4, &hf_h235_flag
, ASN1_EXTENSION_ROOT
, dissect_h235_BOOLEAN
},
665 dissect_h235_Element(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
666 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
667 ett_h235_Element
, Element_choice
,
674 static const per_sequence_t ProfileElement_sequence
[] = {
675 { &hf_h235_elementID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_h235_INTEGER_0_255
},
676 { &hf_h235_paramS
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_Params
},
677 { &hf_h235_element
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_Element
},
682 dissect_h235_ProfileElement(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
683 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
684 ett_h235_ProfileElement
, ProfileElement_sequence
);
690 static const per_sequence_t SEQUENCE_OF_ProfileElement_sequence_of
[1] = {
691 { &hf_h235_profileInfo_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_ProfileElement
},
695 dissect_h235_SEQUENCE_OF_ProfileElement(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
696 offset
= dissect_per_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
697 ett_h235_SEQUENCE_OF_ProfileElement
, SEQUENCE_OF_ProfileElement_sequence_of
);
703 static const per_sequence_t ClearToken_sequence
[] = {
704 { &hf_h235_tokenOID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_h235_OBJECT_IDENTIFIER
},
705 { &hf_h235_timeStamp
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_TimeStamp
},
706 { &hf_h235_password
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_Password
},
707 { &hf_h235_dhkey
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_DHset
},
708 { &hf_h235_challenge
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_ChallengeString
},
709 { &hf_h235_random
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_RandomVal
},
710 { &hf_h235_certificate
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_TypedCertificate
},
711 { &hf_h235_generalID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_Identifier
},
712 { &hf_h235_nonStandard
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_NonStandardParameter
},
713 { &hf_h235_eckasdhkey
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_ECKASDH
},
714 { &hf_h235_sendersID
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_Identifier
},
715 { &hf_h235_h235Key
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_H235Key
},
716 { &hf_h235_profileInfo
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_SEQUENCE_OF_ProfileElement
},
721 dissect_h235_ClearToken(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
722 proto_item
*hidden_item
;
723 hidden_item
= proto_tree_add_item(tree
, proto_h235
, tvb
, offset
>>3, 0, ENC_NA
);
724 proto_item_set_hidden(hidden_item
);
725 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
726 ett_h235_ClearToken
, ClearToken_sequence
);
732 static const per_sequence_t HASHED_sequence
[] = {
733 { &hf_h235_algorithmOID
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_OBJECT_IDENTIFIER
},
734 { &hf_h235_paramS
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_Params
},
735 { &hf_h235_hash
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_BIT_STRING
},
740 dissect_h235_HASHED(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
741 proto_item
*hidden_item
;
742 hidden_item
= proto_tree_add_item(tree
, proto_h235
, tvb
, offset
>>3, 0, ENC_NA
);
743 proto_item_set_hidden(hidden_item
);
744 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
745 ett_h235_HASHED
, HASHED_sequence
);
751 static const per_sequence_t T_cryptoEncryptedToken_sequence
[] = {
752 { &hf_h235_tokenOID
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_OBJECT_IDENTIFIER
},
753 { &hf_h235_encryptedToken
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_ENCRYPTED
},
758 dissect_h235_T_cryptoEncryptedToken(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
759 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
760 ett_h235_T_cryptoEncryptedToken
, T_cryptoEncryptedToken_sequence
);
766 static const per_sequence_t T_cryptoSignedToken_sequence
[] = {
767 { &hf_h235_tokenOID
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_OBJECT_IDENTIFIER
},
768 { &hf_h235_signedToken
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_SIGNED
},
773 dissect_h235_T_cryptoSignedToken(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
774 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
775 ett_h235_T_cryptoSignedToken
, T_cryptoSignedToken_sequence
);
781 static const per_sequence_t T_cryptoHashedToken_sequence
[] = {
782 { &hf_h235_tokenOID
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_OBJECT_IDENTIFIER
},
783 { &hf_h235_hashedVals
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_ClearToken
},
784 { &hf_h235_hashedToken
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_HASHED
},
789 dissect_h235_T_cryptoHashedToken(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
790 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
791 ett_h235_T_cryptoHashedToken
, T_cryptoHashedToken_sequence
);
797 const value_string h235_CryptoToken_vals
[] = {
798 { 0, "cryptoEncryptedToken" },
799 { 1, "cryptoSignedToken" },
800 { 2, "cryptoHashedToken" },
801 { 3, "cryptoPwdEncr" },
805 static const per_choice_t CryptoToken_choice
[] = {
806 { 0, &hf_h235_cryptoEncryptedToken
, ASN1_EXTENSION_ROOT
, dissect_h235_T_cryptoEncryptedToken
},
807 { 1, &hf_h235_cryptoSignedToken
, ASN1_EXTENSION_ROOT
, dissect_h235_T_cryptoSignedToken
},
808 { 2, &hf_h235_cryptoHashedToken
, ASN1_EXTENSION_ROOT
, dissect_h235_T_cryptoHashedToken
},
809 { 3, &hf_h235_cryptoPwdEncr
, ASN1_EXTENSION_ROOT
, dissect_h235_ENCRYPTED
},
814 dissect_h235_CryptoToken(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
815 proto_item
*hidden_item
;
816 hidden_item
= proto_tree_add_item(tree
, proto_h235
, tvb
, offset
>>3, 0, ENC_NA
);
817 proto_item_set_hidden(hidden_item
);
818 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
819 ett_h235_CryptoToken
, CryptoToken_choice
,
828 dissect_h235_INTEGER_0_24(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
829 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
830 0U, 24U, NULL
, false);
836 static const per_sequence_t FecOrder_sequence
[] = {
837 { &hf_h235_fecBeforeSrtp
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_NULL
},
838 { &hf_h235_fecAfterSrtp
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_NULL
},
843 dissect_h235_FecOrder(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
844 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
845 ett_h235_FecOrder
, FecOrder_sequence
);
853 dissect_h235_INTEGER_64_65535(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
854 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
855 64U, 65535U, NULL
, false);
861 static const per_sequence_t SEQUENCE_OF_GenericData_sequence_of
[1] = {
862 { &hf_h235_newParameter_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h225_GenericData
},
866 dissect_h235_SEQUENCE_OF_GenericData(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
867 offset
= dissect_per_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
868 ett_h235_SEQUENCE_OF_GenericData
, SEQUENCE_OF_GenericData_sequence_of
);
874 static const per_sequence_t SrtpSessionParameters_sequence
[] = {
875 { &hf_h235_kdr
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_INTEGER_0_24
},
876 { &hf_h235_unencryptedSrtp
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_BOOLEAN
},
877 { &hf_h235_unencryptedSrtcp
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_BOOLEAN
},
878 { &hf_h235_unauthenticatedSrtp
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_BOOLEAN
},
879 { &hf_h235_fecOrder
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_FecOrder
},
880 { &hf_h235_windowSizeHint
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_INTEGER_64_65535
},
881 { &hf_h235_newParameter
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_SEQUENCE_OF_GenericData
},
886 dissect_h235_SrtpSessionParameters(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
887 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
888 ett_h235_SrtpSessionParameters
, SrtpSessionParameters_sequence
);
894 static const per_sequence_t SrtpCryptoInfo_sequence
[] = {
895 { &hf_h235_cryptoSuite
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_OBJECT_IDENTIFIER
},
896 { &hf_h235_sessionParams
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_SrtpSessionParameters
},
897 { &hf_h235_allowMKI
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_BOOLEAN
},
902 dissect_h235_SrtpCryptoInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
903 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
904 ett_h235_SrtpCryptoInfo
, SrtpCryptoInfo_sequence
);
910 static const per_sequence_t SrtpCryptoCapability_sequence_of
[1] = {
911 { &hf_h235_SrtpCryptoCapability_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_SrtpCryptoInfo
},
915 dissect_h235_SrtpCryptoCapability(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
916 offset
= dissect_per_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
917 ett_h235_SrtpCryptoCapability
, SrtpCryptoCapability_sequence_of
);
923 static const value_string h235_T_lifetime_vals
[] = {
929 static const per_choice_t T_lifetime_choice
[] = {
930 { 0, &hf_h235_powerOfTwo
, ASN1_EXTENSION_ROOT
, dissect_h235_INTEGER
},
931 { 1, &hf_h235_specific
, ASN1_EXTENSION_ROOT
, dissect_h235_INTEGER
},
936 dissect_h235_T_lifetime(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
937 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
938 ett_h235_T_lifetime
, T_lifetime_choice
,
947 dissect_h235_INTEGER_1_128(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
948 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
949 1U, 128U, NULL
, false);
955 static const per_sequence_t T_mki_sequence
[] = {
956 { &hf_h235_length
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_h235_INTEGER_1_128
},
957 { &hf_h235_value
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_h235_OCTET_STRING
},
962 dissect_h235_T_mki(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
963 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
964 ett_h235_T_mki
, T_mki_sequence
);
970 static const per_sequence_t SrtpKeyParameters_sequence
[] = {
971 { &hf_h235_masterKey
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_h235_OCTET_STRING
},
972 { &hf_h235_masterSalt
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_h235_OCTET_STRING
},
973 { &hf_h235_lifetime
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_T_lifetime
},
974 { &hf_h235_mki
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h235_T_mki
},
979 dissect_h235_SrtpKeyParameters(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
980 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
981 ett_h235_SrtpKeyParameters
, SrtpKeyParameters_sequence
);
987 static const per_sequence_t SrtpKeys_sequence_of
[1] = {
988 { &hf_h235_SrtpKeys_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_h235_SrtpKeyParameters
},
992 dissect_h235_SrtpKeys(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
993 offset
= dissect_per_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
994 ett_h235_SrtpKeys
, SrtpKeys_sequence_of
);
1001 static int dissect_SrtpCryptoCapability_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1003 asn1_ctx_t asn1_ctx
;
1004 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
1005 offset
= dissect_h235_SrtpCryptoCapability(tvb
, offset
, &asn1_ctx
, tree
, hf_h235_SrtpCryptoCapability_PDU
);
1006 offset
+= 7; offset
>>= 3;
1012 /*--- proto_register_h235 ----------------------------------------------*/
1013 void proto_register_h235(void) {
1015 /* List of fields */
1016 static hf_register_info hf
[] = {
1017 { &hf_h235_SrtpCryptoCapability_PDU
,
1018 { "SrtpCryptoCapability", "h235.SrtpCryptoCapability",
1019 FT_UINT32
, BASE_DEC
, NULL
, 0,
1021 { &hf_h235_nonStandardIdentifier
,
1022 { "nonStandardIdentifier", "h235.nonStandardIdentifier",
1023 FT_OID
, BASE_NONE
, NULL
, 0,
1024 "OBJECT_IDENTIFIER", HFILL
}},
1026 { "data", "h235.data",
1027 FT_UINT32
, BASE_DEC
, NULL
, 0,
1028 "OCTET_STRING", HFILL
}},
1030 { "halfkey", "h235.halfkey",
1031 FT_BYTES
, BASE_NONE
, NULL
, 0,
1032 "BIT_STRING_SIZE_0_2048", HFILL
}},
1034 { "modSize", "h235.modSize",
1035 FT_BYTES
, BASE_NONE
, NULL
, 0,
1036 "BIT_STRING_SIZE_0_2048", HFILL
}},
1037 { &hf_h235_generator
,
1038 { "generator", "h235.generator",
1039 FT_BYTES
, BASE_NONE
, NULL
, 0,
1040 "BIT_STRING_SIZE_0_2048", HFILL
}},
1043 FT_BYTES
, BASE_NONE
, NULL
, 0,
1044 "BIT_STRING_SIZE_0_511", HFILL
}},
1047 FT_BYTES
, BASE_NONE
, NULL
, 0,
1048 "BIT_STRING_SIZE_0_511", HFILL
}},
1049 { &hf_h235_eckasdhp
,
1050 { "eckasdhp", "h235.eckasdhp_element",
1051 FT_NONE
, BASE_NONE
, NULL
, 0,
1053 { &hf_h235_public_key
,
1054 { "public-key", "h235.public_key_element",
1055 FT_NONE
, BASE_NONE
, NULL
, 0,
1056 "ECpoint", HFILL
}},
1058 { "modulus", "h235.modulus",
1059 FT_BYTES
, BASE_NONE
, NULL
, 0,
1060 "BIT_STRING_SIZE_0_511", HFILL
}},
1062 { "base", "h235.base_element",
1063 FT_NONE
, BASE_NONE
, NULL
, 0,
1064 "ECpoint", HFILL
}},
1065 { &hf_h235_weierstrassA
,
1066 { "weierstrassA", "h235.weierstrassA",
1067 FT_BYTES
, BASE_NONE
, NULL
, 0,
1068 "BIT_STRING_SIZE_0_511", HFILL
}},
1069 { &hf_h235_weierstrassB
,
1070 { "weierstrassB", "h235.weierstrassB",
1071 FT_BYTES
, BASE_NONE
, NULL
, 0,
1072 "BIT_STRING_SIZE_0_511", HFILL
}},
1073 { &hf_h235_eckasdh2
,
1074 { "eckasdh2", "h235.eckasdh2_element",
1075 FT_NONE
, BASE_NONE
, NULL
, 0,
1077 { &hf_h235_fieldSize
,
1078 { "fieldSize", "h235.fieldSize",
1079 FT_BYTES
, BASE_NONE
, NULL
, 0,
1080 "BIT_STRING_SIZE_0_511", HFILL
}},
1082 { "type", "h235.type",
1083 FT_OID
, BASE_NONE
, NULL
, 0,
1084 "OBJECT_IDENTIFIER", HFILL
}},
1085 { &hf_h235_certificatedata
,
1086 { "certificate", "h235.certificate",
1087 FT_BYTES
, BASE_NONE
, NULL
, 0,
1088 "OCTET_STRING", HFILL
}},
1090 { "default", "h235.default_element",
1091 FT_NONE
, BASE_NONE
, NULL
, 0,
1094 { "radius", "h235.radius_element",
1095 FT_NONE
, BASE_NONE
, NULL
, 0,
1098 { "dhExch", "h235.dhExch_element",
1099 FT_NONE
, BASE_NONE
, NULL
, 0,
1101 { &hf_h235_pwdSymEnc
,
1102 { "pwdSymEnc", "h235.pwdSymEnc_element",
1103 FT_NONE
, BASE_NONE
, NULL
, 0,
1106 { "pwdHash", "h235.pwdHash_element",
1107 FT_NONE
, BASE_NONE
, NULL
, 0,
1109 { &hf_h235_certSign
,
1110 { "certSign", "h235.certSign_element",
1111 FT_NONE
, BASE_NONE
, NULL
, 0,
1114 { "ipsec", "h235.ipsec_element",
1115 FT_NONE
, BASE_NONE
, NULL
, 0,
1118 { "tls", "h235.tls_element",
1119 FT_NONE
, BASE_NONE
, NULL
, 0,
1121 { &hf_h235_nonStandard
,
1122 { "nonStandard", "h235.nonStandard_element",
1123 FT_NONE
, BASE_NONE
, NULL
, 0,
1124 "NonStandardParameter", HFILL
}},
1125 { &hf_h235_authenticationBES
,
1126 { "authenticationBES", "h235.authenticationBES",
1127 FT_UINT32
, BASE_DEC
, VALS(h235_AuthenticationBES_vals
), 0,
1130 { "keyExch", "h235.keyExch",
1131 FT_OID
, BASE_NONE
, NULL
, 0,
1132 "OBJECT_IDENTIFIER", HFILL
}},
1133 { &hf_h235_tokenOID
,
1134 { "tokenOID", "h235.tokenOID",
1135 FT_OID
, BASE_NONE
, NULL
, 0,
1136 "OBJECT_IDENTIFIER", HFILL
}},
1137 { &hf_h235_timeStamp
,
1138 { "timeStamp", "h235.timeStamp",
1139 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_LOCAL
, NULL
, 0,
1141 { &hf_h235_password
,
1142 { "password", "h235.password",
1143 FT_STRING
, BASE_NONE
, NULL
, 0,
1146 { "dhkey", "h235.dhkey_element",
1147 FT_NONE
, BASE_NONE
, NULL
, 0,
1149 { &hf_h235_challenge
,
1150 { "challenge", "h235.challenge",
1151 FT_BYTES
, BASE_NONE
, NULL
, 0,
1152 "ChallengeString", HFILL
}},
1154 { "random", "h235.random",
1155 FT_INT32
, BASE_DEC
, NULL
, 0,
1156 "RandomVal", HFILL
}},
1157 { &hf_h235_certificate
,
1158 { "certificate", "h235.certificate_element",
1159 FT_NONE
, BASE_NONE
, NULL
, 0,
1160 "TypedCertificate", HFILL
}},
1161 { &hf_h235_generalID
,
1162 { "generalID", "h235.generalID",
1163 FT_STRING
, BASE_NONE
, NULL
, 0,
1164 "Identifier", HFILL
}},
1165 { &hf_h235_eckasdhkey
,
1166 { "eckasdhkey", "h235.eckasdhkey",
1167 FT_UINT32
, BASE_DEC
, VALS(h235_ECKASDH_vals
), 0,
1168 "ECKASDH", HFILL
}},
1169 { &hf_h235_sendersID
,
1170 { "sendersID", "h235.sendersID",
1171 FT_STRING
, BASE_NONE
, NULL
, 0,
1172 "Identifier", HFILL
}},
1174 { "h235Key", "h235.h235Key",
1175 FT_UINT32
, BASE_DEC
, VALS(h235_H235Key_vals
), 0,
1177 { &hf_h235_profileInfo
,
1178 { "profileInfo", "h235.profileInfo",
1179 FT_UINT32
, BASE_DEC
, NULL
, 0,
1180 "SEQUENCE_OF_ProfileElement", HFILL
}},
1181 { &hf_h235_profileInfo_item
,
1182 { "ProfileElement", "h235.ProfileElement_element",
1183 FT_NONE
, BASE_NONE
, NULL
, 0,
1185 { &hf_h235_elementID
,
1186 { "elementID", "h235.elementID",
1187 FT_UINT32
, BASE_DEC
, NULL
, 0,
1188 "INTEGER_0_255", HFILL
}},
1190 { "paramS", "h235.paramS_element",
1191 FT_NONE
, BASE_NONE
, NULL
, 0,
1194 { "element", "h235.element",
1195 FT_UINT32
, BASE_DEC
, VALS(h235_Element_vals
), 0,
1198 { "octets", "h235.octets",
1199 FT_BYTES
, BASE_NONE
, NULL
, 0,
1200 "OCTET_STRING", HFILL
}},
1202 { "integer", "h235.integer",
1203 FT_INT32
, BASE_DEC
, NULL
, 0,
1206 { "bits", "h235.bits",
1207 FT_BYTES
, BASE_NONE
, NULL
, 0,
1208 "BIT_STRING", HFILL
}},
1210 { "name", "h235.name",
1211 FT_STRING
, BASE_NONE
, NULL
, 0,
1212 "BMPString", HFILL
}},
1214 { "flag", "h235.flag",
1215 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
1216 "BOOLEAN", HFILL
}},
1217 { &hf_h235_toBeSigned
,
1218 { "toBeSigned", "h235.toBeSigned_element",
1219 FT_NONE
, BASE_NONE
, NULL
, 0,
1221 { &hf_h235_algorithmOID
,
1222 { "algorithmOID", "h235.algorithmOID",
1223 FT_OID
, BASE_NONE
, NULL
, 0,
1224 "OBJECT_IDENTIFIER", HFILL
}},
1225 { &hf_h235_signaturedata
,
1226 { "signature", "h235.signature",
1227 FT_BYTES
, BASE_NONE
, NULL
, 0,
1228 "BIT_STRING", HFILL
}},
1229 { &hf_h235_encryptedData
,
1230 { "encryptedData", "h235.encryptedData",
1231 FT_BYTES
, BASE_NONE
, NULL
, 0,
1232 "OCTET_STRING", HFILL
}},
1234 { "hash", "h235.hash",
1235 FT_BYTES
, BASE_NONE
, NULL
, 0,
1236 "BIT_STRING", HFILL
}},
1238 { "ranInt", "h235.ranInt",
1239 FT_INT32
, BASE_DEC
, NULL
, 0,
1240 "INTEGER", HFILL
}},
1242 { "iv8", "h235.iv8",
1243 FT_BYTES
, BASE_NONE
, NULL
, 0,
1246 { "iv16", "h235.iv16",
1247 FT_BYTES
, BASE_NONE
, NULL
, 0,
1251 FT_BYTES
, BASE_NONE
, NULL
, 0,
1252 "OCTET_STRING", HFILL
}},
1253 { &hf_h235_clearSalt
,
1254 { "clearSalt", "h235.clearSalt",
1255 FT_BYTES
, BASE_NONE
, NULL
, 0,
1256 "OCTET_STRING", HFILL
}},
1257 { &hf_h235_cryptoEncryptedToken
,
1258 { "cryptoEncryptedToken", "h235.cryptoEncryptedToken_element",
1259 FT_NONE
, BASE_NONE
, NULL
, 0,
1261 { &hf_h235_encryptedToken
,
1262 { "token", "h235.token_element",
1263 FT_NONE
, BASE_NONE
, NULL
, 0,
1264 "ENCRYPTED", HFILL
}},
1265 { &hf_h235_cryptoSignedToken
,
1266 { "cryptoSignedToken", "h235.cryptoSignedToken_element",
1267 FT_NONE
, BASE_NONE
, NULL
, 0,
1269 { &hf_h235_signedToken
,
1270 { "token", "h235.token_element",
1271 FT_NONE
, BASE_NONE
, NULL
, 0,
1273 { &hf_h235_cryptoHashedToken
,
1274 { "cryptoHashedToken", "h235.cryptoHashedToken_element",
1275 FT_NONE
, BASE_NONE
, NULL
, 0,
1277 { &hf_h235_hashedVals
,
1278 { "hashedVals", "h235.hashedVals_element",
1279 FT_NONE
, BASE_NONE
, NULL
, 0,
1280 "ClearToken", HFILL
}},
1281 { &hf_h235_hashedToken
,
1282 { "token", "h235.token_element",
1283 FT_NONE
, BASE_NONE
, NULL
, 0,
1285 { &hf_h235_cryptoPwdEncr
,
1286 { "cryptoPwdEncr", "h235.cryptoPwdEncr_element",
1287 FT_NONE
, BASE_NONE
, NULL
, 0,
1288 "ENCRYPTED", HFILL
}},
1289 { &hf_h235_secureChannel
,
1290 { "secureChannel", "h235.secureChannel",
1291 FT_BYTES
, BASE_NONE
, NULL
, 0,
1292 "KeyMaterial", HFILL
}},
1293 { &hf_h235_sharedSecret
,
1294 { "sharedSecret", "h235.sharedSecret_element",
1295 FT_NONE
, BASE_NONE
, NULL
, 0,
1296 "ENCRYPTED", HFILL
}},
1297 { &hf_h235_certProtectedKey
,
1298 { "certProtectedKey", "h235.certProtectedKey_element",
1299 FT_NONE
, BASE_NONE
, NULL
, 0,
1301 { &hf_h235_secureSharedSecret
,
1302 { "secureSharedSecret", "h235.secureSharedSecret_element",
1303 FT_NONE
, BASE_NONE
, NULL
, 0,
1304 "V3KeySyncMaterial", HFILL
}},
1305 { &hf_h235_encryptedSessionKey
,
1306 { "encryptedSessionKey", "h235.encryptedSessionKey",
1307 FT_BYTES
, BASE_NONE
, NULL
, 0,
1308 "OCTET_STRING", HFILL
}},
1309 { &hf_h235_encryptedSaltingKey
,
1310 { "encryptedSaltingKey", "h235.encryptedSaltingKey",
1311 FT_BYTES
, BASE_NONE
, NULL
, 0,
1312 "OCTET_STRING", HFILL
}},
1313 { &hf_h235_clearSaltingKey
,
1314 { "clearSaltingKey", "h235.clearSaltingKey",
1315 FT_BYTES
, BASE_NONE
, NULL
, 0,
1316 "OCTET_STRING", HFILL
}},
1317 { &hf_h235_paramSsalt
,
1318 { "paramSsalt", "h235.paramSsalt_element",
1319 FT_NONE
, BASE_NONE
, NULL
, 0,
1321 { &hf_h235_keyDerivationOID
,
1322 { "keyDerivationOID", "h235.keyDerivationOID",
1323 FT_OID
, BASE_NONE
, NULL
, 0,
1324 "OBJECT_IDENTIFIER", HFILL
}},
1325 { &hf_h235_genericKeyMaterial
,
1326 { "genericKeyMaterial", "h235.genericKeyMaterial",
1327 FT_BYTES
, BASE_NONE
, NULL
, 0,
1328 "OCTET_STRING", HFILL
}},
1329 { &hf_h235_SrtpCryptoCapability_item
,
1330 { "SrtpCryptoInfo", "h235.SrtpCryptoInfo_element",
1331 FT_NONE
, BASE_NONE
, NULL
, 0,
1333 { &hf_h235_cryptoSuite
,
1334 { "cryptoSuite", "h235.cryptoSuite",
1335 FT_OID
, BASE_NONE
, NULL
, 0,
1336 "OBJECT_IDENTIFIER", HFILL
}},
1337 { &hf_h235_sessionParams
,
1338 { "sessionParams", "h235.sessionParams_element",
1339 FT_NONE
, BASE_NONE
, NULL
, 0,
1340 "SrtpSessionParameters", HFILL
}},
1341 { &hf_h235_allowMKI
,
1342 { "allowMKI", "h235.allowMKI",
1343 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
1344 "BOOLEAN", HFILL
}},
1345 { &hf_h235_SrtpKeys_item
,
1346 { "SrtpKeyParameters", "h235.SrtpKeyParameters_element",
1347 FT_NONE
, BASE_NONE
, NULL
, 0,
1349 { &hf_h235_masterKey
,
1350 { "masterKey", "h235.masterKey",
1351 FT_BYTES
, BASE_NONE
, NULL
, 0,
1352 "OCTET_STRING", HFILL
}},
1353 { &hf_h235_masterSalt
,
1354 { "masterSalt", "h235.masterSalt",
1355 FT_BYTES
, BASE_NONE
, NULL
, 0,
1356 "OCTET_STRING", HFILL
}},
1357 { &hf_h235_lifetime
,
1358 { "lifetime", "h235.lifetime",
1359 FT_UINT32
, BASE_DEC
, VALS(h235_T_lifetime_vals
), 0,
1361 { &hf_h235_powerOfTwo
,
1362 { "powerOfTwo", "h235.powerOfTwo",
1363 FT_INT32
, BASE_DEC
, NULL
, 0,
1364 "INTEGER", HFILL
}},
1365 { &hf_h235_specific
,
1366 { "specific", "h235.specific",
1367 FT_INT32
, BASE_DEC
, NULL
, 0,
1368 "INTEGER", HFILL
}},
1370 { "mki", "h235.mki_element",
1371 FT_NONE
, BASE_NONE
, NULL
, 0,
1374 { "length", "h235.length",
1375 FT_UINT32
, BASE_DEC
, NULL
, 0,
1376 "INTEGER_1_128", HFILL
}},
1378 { "value", "h235.value",
1379 FT_BYTES
, BASE_NONE
, NULL
, 0,
1380 "OCTET_STRING", HFILL
}},
1382 { "kdr", "h235.kdr",
1383 FT_UINT32
, BASE_DEC
, NULL
, 0,
1384 "INTEGER_0_24", HFILL
}},
1385 { &hf_h235_unencryptedSrtp
,
1386 { "unencryptedSrtp", "h235.unencryptedSrtp",
1387 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
1388 "BOOLEAN", HFILL
}},
1389 { &hf_h235_unencryptedSrtcp
,
1390 { "unencryptedSrtcp", "h235.unencryptedSrtcp",
1391 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
1392 "BOOLEAN", HFILL
}},
1393 { &hf_h235_unauthenticatedSrtp
,
1394 { "unauthenticatedSrtp", "h235.unauthenticatedSrtp",
1395 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
1396 "BOOLEAN", HFILL
}},
1397 { &hf_h235_fecOrder
,
1398 { "fecOrder", "h235.fecOrder_element",
1399 FT_NONE
, BASE_NONE
, NULL
, 0,
1401 { &hf_h235_windowSizeHint
,
1402 { "windowSizeHint", "h235.windowSizeHint",
1403 FT_UINT32
, BASE_DEC
, NULL
, 0,
1404 "INTEGER_64_65535", HFILL
}},
1405 { &hf_h235_newParameter
,
1406 { "newParameter", "h235.newParameter",
1407 FT_UINT32
, BASE_DEC
, NULL
, 0,
1408 "SEQUENCE_OF_GenericData", HFILL
}},
1409 { &hf_h235_newParameter_item
,
1410 { "GenericData", "h235.GenericData_element",
1411 FT_NONE
, BASE_NONE
, NULL
, 0,
1413 { &hf_h235_fecBeforeSrtp
,
1414 { "fecBeforeSrtp", "h235.fecBeforeSrtp_element",
1415 FT_NONE
, BASE_NONE
, NULL
, 0,
1417 { &hf_h235_fecAfterSrtp
,
1418 { "fecAfterSrtp", "h235.fecAfterSrtp_element",
1419 FT_NONE
, BASE_NONE
, NULL
, 0,
1423 /* List of subtrees */
1424 static int *ett
[] = {
1425 &ett_h235_NonStandardParameter
,
1429 &ett_h235_T_eckasdhp
,
1430 &ett_h235_T_eckasdh2
,
1431 &ett_h235_TypedCertificate
,
1432 &ett_h235_AuthenticationBES
,
1433 &ett_h235_AuthenticationMechanism
,
1434 &ett_h235_ClearToken
,
1435 &ett_h235_SEQUENCE_OF_ProfileElement
,
1436 &ett_h235_ProfileElement
,
1439 &ett_h235_ENCRYPTED
,
1442 &ett_h235_CryptoToken
,
1443 &ett_h235_T_cryptoEncryptedToken
,
1444 &ett_h235_T_cryptoSignedToken
,
1445 &ett_h235_T_cryptoHashedToken
,
1447 &ett_h235_V3KeySyncMaterial
,
1448 &ett_h235_SrtpCryptoCapability
,
1449 &ett_h235_SrtpCryptoInfo
,
1451 &ett_h235_SrtpKeyParameters
,
1452 &ett_h235_T_lifetime
,
1454 &ett_h235_SrtpSessionParameters
,
1455 &ett_h235_SEQUENCE_OF_GenericData
,
1459 /* Register protocol */
1460 proto_h235
= proto_register_protocol(PNAME
, PSNAME
, PFNAME
);
1462 /* Register fields and subtrees */
1463 proto_register_field_array(proto_h235
, hf
, array_length(hf
));
1464 proto_register_subtree_array(ett
, array_length(ett
));
1467 /* H.235.1, Chapter 15, Table 3 */
1469 oid_add_from_string("all fields in RAS/CS","0.0.8.235.0.1.1");
1470 oid_add_from_string("all fields in RAS/CS","0.0.8.235.0.2.1");
1472 oid_add_from_string("ClearToken","0.0.8.235.0.1.5");
1473 oid_add_from_string("ClearToken","0.0.8.235.0.2.5");
1475 oid_add_from_string("HMAC-SHA1-96","0.0.8.235.0.1.6");
1476 oid_add_from_string("HMAC-SHA1-96","0.0.8.235.0.2.6");
1477 /* H.235.7, Chapter 5, Table 1 */
1478 oid_add_from_string("MIKEY", OID_MIKEY
);
1479 oid_add_from_string("MIKEY-PS", OID_MIKEY_PS
);
1480 oid_add_from_string("MIKEY-DHHMAC", OID_MIKEY_DHHMAC
);
1481 oid_add_from_string("MIKEY-PK-SIGN", OID_MIKEY_PK_SIGN
);
1482 oid_add_from_string("MIKEY-DH-SIGN", OID_MIKEY_DH_SIGN
);
1483 /* H.235.7, Chapter 8.5 */
1484 oid_add_from_string("TG",OID_TG
);
1485 /* H.235.7, Chapter 9.5 */
1486 oid_add_from_string("SG",OID_SG
);
1487 /* H.235.8, Chapter 4.2, Table 2 */
1488 oid_add_from_string("AES_CM_128_HMAC_SHA1_80","0.0.8.235.0.4.91");
1489 oid_add_from_string("AES_CM_128_HMAC_SHA1_32","0.0.8.235.0.4.92");
1490 oid_add_from_string("F8_128_HMAC_SHA1_80","0.0.8.235.0.4.93");
1494 /*--- proto_reg_handoff_h235 -------------------------------------------*/
1495 void proto_reg_handoff_h235(void) {
1496 dissector_handle_t mikey_handle
;
1498 mikey_handle
= find_dissector("mikey");
1500 /* H.235.7, Chapter 7.1, MIKEY operation at "session level" */
1501 dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY
"/nonCollapsing/0", mikey_handle
);
1502 dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PS
"/nonCollapsing/0", mikey_handle
);
1503 dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DHHMAC
"/nonCollapsing/0", mikey_handle
);
1504 dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PK_SIGN
"/nonCollapsing/0", mikey_handle
);
1505 dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DH_SIGN
"/nonCollapsing/0", mikey_handle
);
1506 dissector_add_string("h245.gef.content", "EncryptionSync/0", mikey_handle
);
1507 /* H.235.7, Chapter 7.2, MIKEY operation at "media level" */
1508 dissector_add_string("h245.gef.content", "EncryptionSync/76", mikey_handle
);
1509 dissector_add_string("h245.gef.content", "EncryptionSync/72", mikey_handle
);
1510 dissector_add_string("h245.gef.content", "EncryptionSync/73", mikey_handle
);
1511 dissector_add_string("h245.gef.content", "EncryptionSync/74", mikey_handle
);
1512 dissector_add_string("h245.gef.content", "EncryptionSync/75", mikey_handle
);
1513 dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY
"/nonCollapsing/76", mikey_handle
);
1514 dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PS
"/nonCollapsing/72", mikey_handle
);
1515 dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DHHMAC
"/nonCollapsing/73", mikey_handle
);
1516 dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PK_SIGN
"/nonCollapsing/74", mikey_handle
);
1517 dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DH_SIGN
"/nonCollapsing/75", mikey_handle
);
1519 /* H.235.8, Chapter 4.1.2, SrtpCryptoCapability transport */
1520 dissector_add_string("h245.gef.content", "GenericCapability/0.0.8.235.0.4.90/nonCollapsingRaw",
1521 create_dissector_handle(dissect_SrtpCryptoCapability_PDU
, proto_h235
));