1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler */
4 /* ../../tools/asn2wrs.py -b -p cmp -c cmp.cnf -s packet-cmp-template CMP.asn */
6 /* Input file: packet-cmp-template.c */
8 #line 1 "packet-cmp-template.c"
11 * Routines for RFC2510 Certificate Management Protocol packet dissection
12 * Ronnie Sahlberg 2004
13 * Updated to RFC4210 CMPv2 and associated "Transport Protocols for CMP" draft
18 * Wireshark - Network traffic analyzer
19 * By Gerald Combs <gerald@wireshark.org>
20 * Copyright 1998 Gerald Combs
22 * This program is free software; you can redistribute it and/or
23 * modify it under the terms of the GNU General Public License
24 * as published by the Free Software Foundation; either version 2
25 * of the License, or (at your option) any later version.
27 * This program is distributed in the hope that it will be useful,
28 * but WITHOUT ANY WARRANTY; without even the implied warranty of
29 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30 * GNU General Public License for more details.
32 * You should have received a copy of the GNU General Public License
33 * along with this program; if not, write to the Free Software
34 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
42 #include <epan/packet.h>
43 #include <epan/conversation.h>
48 #include <epan/oids.h>
49 #include <epan/asn1.h>
50 #include "packet-ber.h"
51 #include "packet-cmp.h"
52 #include "packet-crmf.h"
53 #include "packet-pkix1explicit.h"
54 #include "packet-pkix1implicit.h"
55 #include <epan/emem.h>
56 #include "packet-tcp.h"
57 #include "packet-http.h"
58 #include <epan/prefs.h>
59 #include <epan/nstime.h>
61 #define PNAME "Certificate Management Protocol"
65 #define TCP_PORT_CMP 829
67 /* desegmentation of CMP over TCP */
68 static gboolean cmp_desegment = TRUE;
70 static guint cmp_alternate_tcp_port = 0;
71 static guint cmp_alternate_http_port = 0;
72 static guint cmp_alternate_tcp_style_http_port = 0;
74 /* Initialize the protocol and registered fields */
76 static int hf_cmp_type_oid = -1;
77 static int hf_cmp_tcptrans_len = -1;
78 static int hf_cmp_tcptrans_type = -1;
79 static int hf_cmp_tcptrans_poll_ref = -1;
80 static int hf_cmp_tcptrans_next_poll_ref = -1;
81 static int hf_cmp_tcptrans_ttcb = -1;
82 static int hf_cmp_tcptrans10_version = -1;
83 static int hf_cmp_tcptrans10_flags = -1;
85 /*--- Included file: packet-cmp-hf.c ---*/
86 #line 1 "packet-cmp-hf.c"
87 static int hf_cmp_PBMParameter_PDU = -1; /* PBMParameter */
88 static int hf_cmp_DHBMParameter_PDU = -1; /* DHBMParameter */
89 static int hf_cmp_CAProtEncCertValue_PDU = -1; /* CAProtEncCertValue */
90 static int hf_cmp_SignKeyPairTypesValue_PDU = -1; /* SignKeyPairTypesValue */
91 static int hf_cmp_EncKeyPairTypesValue_PDU = -1; /* EncKeyPairTypesValue */
92 static int hf_cmp_PreferredSymmAlgValue_PDU = -1; /* PreferredSymmAlgValue */
93 static int hf_cmp_CAKeyUpdateInfoValue_PDU = -1; /* CAKeyUpdateInfoValue */
94 static int hf_cmp_CurrentCRLValue_PDU = -1; /* CurrentCRLValue */
95 static int hf_cmp_UnsupportedOIDsValue_PDU = -1; /* UnsupportedOIDsValue */
96 static int hf_cmp_KeyPairParamReqValue_PDU = -1; /* KeyPairParamReqValue */
97 static int hf_cmp_KeyPairParamRepValue_PDU = -1; /* KeyPairParamRepValue */
98 static int hf_cmp_RevPassphraseValue_PDU = -1; /* RevPassphraseValue */
99 static int hf_cmp_ImplicitConfirmValue_PDU = -1; /* ImplicitConfirmValue */
100 static int hf_cmp_ConfirmWaitTimeValue_PDU = -1; /* ConfirmWaitTimeValue */
101 static int hf_cmp_OrigPKIMessageValue_PDU = -1; /* OrigPKIMessageValue */
102 static int hf_cmp_SuppLangTagsValue_PDU = -1; /* SuppLangTagsValue */
103 static int hf_cmp_x509v3PKCert = -1; /* Certificate */
104 static int hf_cmp_header = -1; /* PKIHeader */
105 static int hf_cmp_body = -1; /* PKIBody */
106 static int hf_cmp_protection = -1; /* PKIProtection */
107 static int hf_cmp_extraCerts = -1; /* SEQUENCE_SIZE_1_MAX_OF_CMPCertificate */
108 static int hf_cmp_extraCerts_item = -1; /* CMPCertificate */
109 static int hf_cmp_PKIMessages_item = -1; /* PKIMessage */
110 static int hf_cmp_pvno = -1; /* T_pvno */
111 static int hf_cmp_sender = -1; /* GeneralName */
112 static int hf_cmp_recipient = -1; /* GeneralName */
113 static int hf_cmp_messageTime = -1; /* GeneralizedTime */
114 static int hf_cmp_protectionAlg = -1; /* AlgorithmIdentifier */
115 static int hf_cmp_senderKID = -1; /* KeyIdentifier */
116 static int hf_cmp_recipKID = -1; /* KeyIdentifier */
117 static int hf_cmp_transactionID = -1; /* OCTET_STRING */
118 static int hf_cmp_senderNonce = -1; /* OCTET_STRING */
119 static int hf_cmp_recipNonce = -1; /* OCTET_STRING */
120 static int hf_cmp_freeText = -1; /* PKIFreeText */
121 static int hf_cmp_generalInfo = -1; /* SEQUENCE_SIZE_1_MAX_OF_InfoTypeAndValue */
122 static int hf_cmp_generalInfo_item = -1; /* InfoTypeAndValue */
123 static int hf_cmp_PKIFreeText_item = -1; /* UTF8String */
124 static int hf_cmp_ir = -1; /* CertReqMessages */
125 static int hf_cmp_ip = -1; /* CertRepMessage */
126 static int hf_cmp_cr = -1; /* CertReqMessages */
127 static int hf_cmp_cp = -1; /* CertRepMessage */
128 static int hf_cmp_p10cr = -1; /* NULL */
129 static int hf_cmp_popdecc = -1; /* POPODecKeyChallContent */
130 static int hf_cmp_popdecr = -1; /* POPODecKeyRespContent */
131 static int hf_cmp_kur = -1; /* CertReqMessages */
132 static int hf_cmp_kup = -1; /* CertRepMessage */
133 static int hf_cmp_krr = -1; /* CertReqMessages */
134 static int hf_cmp_krp = -1; /* KeyRecRepContent */
135 static int hf_cmp_rr = -1; /* RevReqContent */
136 static int hf_cmp_rp = -1; /* RevRepContent */
137 static int hf_cmp_ccr = -1; /* CertReqMessages */
138 static int hf_cmp_ccp = -1; /* CertRepMessage */
139 static int hf_cmp_ckuann = -1; /* CAKeyUpdAnnContent */
140 static int hf_cmp_cann = -1; /* CertAnnContent */
141 static int hf_cmp_rann = -1; /* RevAnnContent */
142 static int hf_cmp_crlann = -1; /* CRLAnnContent */
143 static int hf_cmp_pkiconf = -1; /* PKIConfirmContent */
144 static int hf_cmp_nested = -1; /* NestedMessageContent */
145 static int hf_cmp_genm = -1; /* GenMsgContent */
146 static int hf_cmp_genp = -1; /* GenRepContent */
147 static int hf_cmp_error = -1; /* ErrorMsgContent */
148 static int hf_cmp_certConf = -1; /* CertConfirmContent */
149 static int hf_cmp_pollReq = -1; /* PollReqContent */
150 static int hf_cmp_pollRep = -1; /* PollRepContent */
151 static int hf_cmp_salt = -1; /* OCTET_STRING */
152 static int hf_cmp_owf = -1; /* AlgorithmIdentifier */
153 static int hf_cmp_iterationCount = -1; /* INTEGER */
154 static int hf_cmp_mac = -1; /* AlgorithmIdentifier */
155 static int hf_cmp_pkistatus = -1; /* PKIStatus */
156 static int hf_cmp_statusString = -1; /* PKIFreeText */
157 static int hf_cmp_failInfo = -1; /* PKIFailureInfo */
158 static int hf_cmp_hashAlg = -1; /* AlgorithmIdentifier */
159 static int hf_cmp_certId = -1; /* CertId */
160 static int hf_cmp_hashVal = -1; /* BIT_STRING */
161 static int hf_cmp_POPODecKeyChallContent_item = -1; /* Challenge */
162 static int hf_cmp_witness = -1; /* OCTET_STRING */
163 static int hf_cmp_challenge = -1; /* OCTET_STRING */
164 static int hf_cmp_POPODecKeyRespContent_item = -1; /* INTEGER */
165 static int hf_cmp_caPubs = -1; /* SEQUENCE_SIZE_1_MAX_OF_CMPCertificate */
166 static int hf_cmp_caPubs_item = -1; /* CMPCertificate */
167 static int hf_cmp_response = -1; /* SEQUENCE_OF_CertResponse */
168 static int hf_cmp_response_item = -1; /* CertResponse */
169 static int hf_cmp_certReqId = -1; /* INTEGER */
170 static int hf_cmp_pkistatusinf = -1; /* PKIStatusInfo */
171 static int hf_cmp_certifiedKeyPair = -1; /* CertifiedKeyPair */
172 static int hf_cmp_rspInfo = -1; /* OCTET_STRING */
173 static int hf_cmp_certOrEncCert = -1; /* CertOrEncCert */
174 static int hf_cmp_privateKey = -1; /* EncryptedValue */
175 static int hf_cmp_publicationInfo = -1; /* PKIPublicationInfo */
176 static int hf_cmp_certificate = -1; /* CMPCertificate */
177 static int hf_cmp_encryptedCert = -1; /* EncryptedValue */
178 static int hf_cmp_newSigCert = -1; /* CMPCertificate */
179 static int hf_cmp_caCerts = -1; /* SEQUENCE_SIZE_1_MAX_OF_CMPCertificate */
180 static int hf_cmp_caCerts_item = -1; /* CMPCertificate */
181 static int hf_cmp_keyPairHist = -1; /* SEQUENCE_SIZE_1_MAX_OF_CertifiedKeyPair */
182 static int hf_cmp_keyPairHist_item = -1; /* CertifiedKeyPair */
183 static int hf_cmp_RevReqContent_item = -1; /* RevDetails */
184 static int hf_cmp_certDetails = -1; /* CertTemplate */
185 static int hf_cmp_crlEntryDetails = -1; /* Extensions */
186 static int hf_cmp_rvrpcnt_status = -1; /* SEQUENCE_SIZE_1_MAX_OF_PKIStatusInfo */
187 static int hf_cmp_rvrpcnt_status_item = -1; /* PKIStatusInfo */
188 static int hf_cmp_revCerts = -1; /* SEQUENCE_SIZE_1_MAX_OF_CertId */
189 static int hf_cmp_revCerts_item = -1; /* CertId */
190 static int hf_cmp_crls = -1; /* SEQUENCE_SIZE_1_MAX_OF_CertificateList */
191 static int hf_cmp_crls_item = -1; /* CertificateList */
192 static int hf_cmp_oldWithNew = -1; /* CMPCertificate */
193 static int hf_cmp_newWithOld = -1; /* CMPCertificate */
194 static int hf_cmp_newWithNew = -1; /* CMPCertificate */
195 static int hf_cmp_willBeRevokedAt = -1; /* GeneralizedTime */
196 static int hf_cmp_badSinceDate = -1; /* GeneralizedTime */
197 static int hf_cmp_crlDetails = -1; /* Extensions */
198 static int hf_cmp_CRLAnnContent_item = -1; /* CertificateList */
199 static int hf_cmp_CertConfirmContent_item = -1; /* CertStatus */
200 static int hf_cmp_certHash = -1; /* OCTET_STRING */
201 static int hf_cmp_statusInfo = -1; /* PKIStatusInfo */
202 static int hf_cmp_infoType = -1; /* T_infoType */
203 static int hf_cmp_infoValue = -1; /* T_infoValue */
204 static int hf_cmp_SignKeyPairTypesValue_item = -1; /* AlgorithmIdentifier */
205 static int hf_cmp_EncKeyPairTypesValue_item = -1; /* AlgorithmIdentifier */
206 static int hf_cmp_UnsupportedOIDsValue_item = -1; /* OBJECT_IDENTIFIER */
207 static int hf_cmp_SuppLangTagsValue_item = -1; /* UTF8String */
208 static int hf_cmp_GenMsgContent_item = -1; /* InfoTypeAndValue */
209 static int hf_cmp_GenRepContent_item = -1; /* InfoTypeAndValue */
210 static int hf_cmp_pKIStatusInfo = -1; /* PKIStatusInfo */
211 static int hf_cmp_errorCode = -1; /* INTEGER */
212 static int hf_cmp_errorDetails = -1; /* PKIFreeText */
213 static int hf_cmp_PollReqContent_item = -1; /* PollReqContent_item */
214 static int hf_cmp_PollRepContent_item = -1; /* PollRepContent_item */
215 static int hf_cmp_checkAfter = -1; /* INTEGER */
216 static int hf_cmp_reason = -1; /* PKIFreeText */
218 static int hf_cmp_PKIFailureInfo_badAlg = -1;
219 static int hf_cmp_PKIFailureInfo_badMessageCheck = -1;
220 static int hf_cmp_PKIFailureInfo_badRequest = -1;
221 static int hf_cmp_PKIFailureInfo_badTime = -1;
222 static int hf_cmp_PKIFailureInfo_badCertId = -1;
223 static int hf_cmp_PKIFailureInfo_badDataFormat = -1;
224 static int hf_cmp_PKIFailureInfo_wrongAuthority = -1;
225 static int hf_cmp_PKIFailureInfo_incorrectData = -1;
226 static int hf_cmp_PKIFailureInfo_missingTimeStamp = -1;
227 static int hf_cmp_PKIFailureInfo_badPOP = -1;
228 static int hf_cmp_PKIFailureInfo_certRevoked = -1;
229 static int hf_cmp_PKIFailureInfo_certConfirmed = -1;
230 static int hf_cmp_PKIFailureInfo_wrongIntegrity = -1;
231 static int hf_cmp_PKIFailureInfo_badRecipientNonce = -1;
232 static int hf_cmp_PKIFailureInfo_timeNotAvailable = -1;
233 static int hf_cmp_PKIFailureInfo_unacceptedPolicy = -1;
234 static int hf_cmp_PKIFailureInfo_unacceptedExtension = -1;
235 static int hf_cmp_PKIFailureInfo_addInfoNotAvailable = -1;
236 static int hf_cmp_PKIFailureInfo_badSenderNonce = -1;
237 static int hf_cmp_PKIFailureInfo_badCertTemplate = -1;
238 static int hf_cmp_PKIFailureInfo_signerNotTrusted = -1;
239 static int hf_cmp_PKIFailureInfo_transactionIdInUse = -1;
240 static int hf_cmp_PKIFailureInfo_unsupportedVersion = -1;
241 static int hf_cmp_PKIFailureInfo_notAuthorized = -1;
242 static int hf_cmp_PKIFailureInfo_systemUnavail = -1;
243 static int hf_cmp_PKIFailureInfo_systemFailure = -1;
244 static int hf_cmp_PKIFailureInfo_duplicateCertReq = -1;
246 /*--- End of included file: packet-cmp-hf.c ---*/
247 #line 77 "packet-cmp-template.c"
249 /* Initialize the subtree pointers */
250 static gint ett_cmp = -1;
252 /*--- Included file: packet-cmp-ett.c ---*/
253 #line 1 "packet-cmp-ett.c"
254 static gint ett_cmp_CMPCertificate = -1;
255 static gint ett_cmp_PKIMessage = -1;
256 static gint ett_cmp_SEQUENCE_SIZE_1_MAX_OF_CMPCertificate = -1;
257 static gint ett_cmp_PKIMessages = -1;
258 static gint ett_cmp_PKIHeader = -1;
259 static gint ett_cmp_SEQUENCE_SIZE_1_MAX_OF_InfoTypeAndValue = -1;
260 static gint ett_cmp_PKIFreeText = -1;
261 static gint ett_cmp_PKIBody = -1;
262 static gint ett_cmp_ProtectedPart = -1;
263 static gint ett_cmp_PBMParameter = -1;
264 static gint ett_cmp_DHBMParameter = -1;
265 static gint ett_cmp_PKIFailureInfo = -1;
266 static gint ett_cmp_PKIStatusInfo = -1;
267 static gint ett_cmp_OOBCertHash = -1;
268 static gint ett_cmp_POPODecKeyChallContent = -1;
269 static gint ett_cmp_Challenge = -1;
270 static gint ett_cmp_POPODecKeyRespContent = -1;
271 static gint ett_cmp_CertRepMessage = -1;
272 static gint ett_cmp_SEQUENCE_OF_CertResponse = -1;
273 static gint ett_cmp_CertResponse = -1;
274 static gint ett_cmp_CertifiedKeyPair = -1;
275 static gint ett_cmp_CertOrEncCert = -1;
276 static gint ett_cmp_KeyRecRepContent = -1;
277 static gint ett_cmp_SEQUENCE_SIZE_1_MAX_OF_CertifiedKeyPair = -1;
278 static gint ett_cmp_RevReqContent = -1;
279 static gint ett_cmp_RevDetails = -1;
280 static gint ett_cmp_RevRepContent = -1;
281 static gint ett_cmp_SEQUENCE_SIZE_1_MAX_OF_PKIStatusInfo = -1;
282 static gint ett_cmp_SEQUENCE_SIZE_1_MAX_OF_CertId = -1;
283 static gint ett_cmp_SEQUENCE_SIZE_1_MAX_OF_CertificateList = -1;
284 static gint ett_cmp_CAKeyUpdAnnContent = -1;
285 static gint ett_cmp_RevAnnContent = -1;
286 static gint ett_cmp_CRLAnnContent = -1;
287 static gint ett_cmp_CertConfirmContent = -1;
288 static gint ett_cmp_CertStatus = -1;
289 static gint ett_cmp_InfoTypeAndValue = -1;
290 static gint ett_cmp_SignKeyPairTypesValue = -1;
291 static gint ett_cmp_EncKeyPairTypesValue = -1;
292 static gint ett_cmp_UnsupportedOIDsValue = -1;
293 static gint ett_cmp_SuppLangTagsValue = -1;
294 static gint ett_cmp_GenMsgContent = -1;
295 static gint ett_cmp_GenRepContent = -1;
296 static gint ett_cmp_ErrorMsgContent = -1;
297 static gint ett_cmp_PollReqContent = -1;
298 static gint ett_cmp_PollReqContent_item = -1;
299 static gint ett_cmp_PollRepContent = -1;
300 static gint ett_cmp_PollRepContent_item = -1;
302 /*--- End of included file: packet-cmp-ett.c ---*/
303 #line 81 "packet-cmp-template.c"
305 static const char *object_identifier_id;
309 /*--- Included file: packet-cmp-fn.c ---*/
310 #line 1 "packet-cmp-fn.c"
311 /*--- Cyclic dependencies ---*/
313 /* PKIMessage -> PKIBody -> NestedMessageContent -> PKIMessages -> PKIMessage */
314 int dissect_cmp_PKIMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
318 const value_string cmp_CMPCertificate_vals[] = {
319 { 0, "x509v3PKCert" },
323 static const ber_choice_t CMPCertificate_choice[] = {
324 { 0, &hf_cmp_x509v3PKCert , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_Certificate },
325 { 0, NULL, 0, 0, 0, NULL }
329 dissect_cmp_CMPCertificate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
330 offset = dissect_ber_choice(actx, tree, tvb, offset,
331 CMPCertificate_choice, hf_index, ett_cmp_CMPCertificate,
338 static const value_string cmp_T_pvno_vals[] = {
346 dissect_cmp_T_pvno(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
347 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
356 dissect_cmp_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
357 offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
365 dissect_cmp_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
366 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
375 dissect_cmp_UTF8String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
376 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String,
377 actx, tree, tvb, offset, hf_index,
384 static const ber_sequence_t PKIFreeText_sequence_of[1] = {
385 { &hf_cmp_PKIFreeText_item, BER_CLASS_UNI, BER_UNI_TAG_UTF8String, BER_FLAGS_NOOWNTAG, dissect_cmp_UTF8String },
389 dissect_cmp_PKIFreeText(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
390 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
391 PKIFreeText_sequence_of, hf_index, ett_cmp_PKIFreeText);
399 dissect_cmp_T_infoType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
400 offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_cmp_type_oid, &object_identifier_id);
408 dissect_cmp_T_infoValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
410 offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
418 static const ber_sequence_t InfoTypeAndValue_sequence[] = {
419 { &hf_cmp_infoType , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_cmp_T_infoType },
420 { &hf_cmp_infoValue , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cmp_T_infoValue },
421 { NULL, 0, 0, 0, NULL }
425 dissect_cmp_InfoTypeAndValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
426 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
427 InfoTypeAndValue_sequence, hf_index, ett_cmp_InfoTypeAndValue);
433 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_InfoTypeAndValue_sequence_of[1] = {
434 { &hf_cmp_generalInfo_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_InfoTypeAndValue },
438 dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_InfoTypeAndValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
439 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
440 SEQUENCE_SIZE_1_MAX_OF_InfoTypeAndValue_sequence_of, hf_index, ett_cmp_SEQUENCE_SIZE_1_MAX_OF_InfoTypeAndValue);
446 static const ber_sequence_t PKIHeader_sequence[] = {
447 { &hf_cmp_pvno , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cmp_T_pvno },
448 { &hf_cmp_sender , BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_pkix1implicit_GeneralName },
449 { &hf_cmp_recipient , BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_pkix1implicit_GeneralName },
450 { &hf_cmp_messageTime , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_cmp_GeneralizedTime },
451 { &hf_cmp_protectionAlg , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_pkix1explicit_AlgorithmIdentifier },
452 { &hf_cmp_senderKID , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_pkix1implicit_KeyIdentifier },
453 { &hf_cmp_recipKID , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_pkix1implicit_KeyIdentifier },
454 { &hf_cmp_transactionID , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_cmp_OCTET_STRING },
455 { &hf_cmp_senderNonce , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_cmp_OCTET_STRING },
456 { &hf_cmp_recipNonce , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_cmp_OCTET_STRING },
457 { &hf_cmp_freeText , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_cmp_PKIFreeText },
458 { &hf_cmp_generalInfo , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_InfoTypeAndValue },
459 { NULL, 0, 0, 0, NULL }
463 dissect_cmp_PKIHeader(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
464 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
465 PKIHeader_sequence, hf_index, ett_cmp_PKIHeader);
471 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_CMPCertificate_sequence_of[1] = {
472 { &hf_cmp_extraCerts_item , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_cmp_CMPCertificate },
476 dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_CMPCertificate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
477 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
478 SEQUENCE_SIZE_1_MAX_OF_CMPCertificate_sequence_of, hf_index, ett_cmp_SEQUENCE_SIZE_1_MAX_OF_CMPCertificate);
486 dissect_cmp_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
487 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
494 const value_string cmp_PKIStatus_vals[] = {
496 { 1, "grantedWithMods" },
499 { 4, "revocationWarning" },
500 { 5, "revocationNotification" },
501 { 6, "keyUpdateWarning" },
507 dissect_cmp_PKIStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
511 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
515 if (check_col(actx->pinfo->cinfo, COL_INFO)) {
516 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " Status=%s", val_to_str(value, cmp_PKIStatus_vals, "unknown"));
525 static const asn_namedbit PKIFailureInfo_bits[] = {
526 { 0, &hf_cmp_PKIFailureInfo_badAlg, -1, -1, "badAlg", NULL },
527 { 1, &hf_cmp_PKIFailureInfo_badMessageCheck, -1, -1, "badMessageCheck", NULL },
528 { 2, &hf_cmp_PKIFailureInfo_badRequest, -1, -1, "badRequest", NULL },
529 { 3, &hf_cmp_PKIFailureInfo_badTime, -1, -1, "badTime", NULL },
530 { 4, &hf_cmp_PKIFailureInfo_badCertId, -1, -1, "badCertId", NULL },
531 { 5, &hf_cmp_PKIFailureInfo_badDataFormat, -1, -1, "badDataFormat", NULL },
532 { 6, &hf_cmp_PKIFailureInfo_wrongAuthority, -1, -1, "wrongAuthority", NULL },
533 { 7, &hf_cmp_PKIFailureInfo_incorrectData, -1, -1, "incorrectData", NULL },
534 { 8, &hf_cmp_PKIFailureInfo_missingTimeStamp, -1, -1, "missingTimeStamp", NULL },
535 { 9, &hf_cmp_PKIFailureInfo_badPOP, -1, -1, "badPOP", NULL },
536 { 10, &hf_cmp_PKIFailureInfo_certRevoked, -1, -1, "certRevoked", NULL },
537 { 11, &hf_cmp_PKIFailureInfo_certConfirmed, -1, -1, "certConfirmed", NULL },
538 { 12, &hf_cmp_PKIFailureInfo_wrongIntegrity, -1, -1, "wrongIntegrity", NULL },
539 { 13, &hf_cmp_PKIFailureInfo_badRecipientNonce, -1, -1, "badRecipientNonce", NULL },
540 { 14, &hf_cmp_PKIFailureInfo_timeNotAvailable, -1, -1, "timeNotAvailable", NULL },
541 { 15, &hf_cmp_PKIFailureInfo_unacceptedPolicy, -1, -1, "unacceptedPolicy", NULL },
542 { 16, &hf_cmp_PKIFailureInfo_unacceptedExtension, -1, -1, "unacceptedExtension", NULL },
543 { 17, &hf_cmp_PKIFailureInfo_addInfoNotAvailable, -1, -1, "addInfoNotAvailable", NULL },
544 { 18, &hf_cmp_PKIFailureInfo_badSenderNonce, -1, -1, "badSenderNonce", NULL },
545 { 19, &hf_cmp_PKIFailureInfo_badCertTemplate, -1, -1, "badCertTemplate", NULL },
546 { 20, &hf_cmp_PKIFailureInfo_signerNotTrusted, -1, -1, "signerNotTrusted", NULL },
547 { 21, &hf_cmp_PKIFailureInfo_transactionIdInUse, -1, -1, "transactionIdInUse", NULL },
548 { 22, &hf_cmp_PKIFailureInfo_unsupportedVersion, -1, -1, "unsupportedVersion", NULL },
549 { 23, &hf_cmp_PKIFailureInfo_notAuthorized, -1, -1, "notAuthorized", NULL },
550 { 24, &hf_cmp_PKIFailureInfo_systemUnavail, -1, -1, "systemUnavail", NULL },
551 { 25, &hf_cmp_PKIFailureInfo_systemFailure, -1, -1, "systemFailure", NULL },
552 { 26, &hf_cmp_PKIFailureInfo_duplicateCertReq, -1, -1, "duplicateCertReq", NULL },
553 { 0, NULL, 0, 0, NULL, NULL }
557 dissect_cmp_PKIFailureInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
558 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
559 PKIFailureInfo_bits, hf_index, ett_cmp_PKIFailureInfo,
566 static const ber_sequence_t PKIStatusInfo_sequence[] = {
567 { &hf_cmp_pkistatus , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cmp_PKIStatus },
568 { &hf_cmp_statusString , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cmp_PKIFreeText },
569 { &hf_cmp_failInfo , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cmp_PKIFailureInfo },
570 { NULL, 0, 0, 0, NULL }
574 dissect_cmp_PKIStatusInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
575 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
576 PKIStatusInfo_sequence, hf_index, ett_cmp_PKIStatusInfo);
582 const value_string cmp_CertOrEncCert_vals[] = {
583 { 0, "certificate" },
584 { 1, "encryptedCert" },
588 static const ber_choice_t CertOrEncCert_choice[] = {
589 { 0, &hf_cmp_certificate , BER_CLASS_CON, 0, 0, dissect_cmp_CMPCertificate },
590 { 1, &hf_cmp_encryptedCert , BER_CLASS_CON, 1, 0, dissect_crmf_EncryptedValue },
591 { 0, NULL, 0, 0, 0, NULL }
595 dissect_cmp_CertOrEncCert(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
596 offset = dissect_ber_choice(actx, tree, tvb, offset,
597 CertOrEncCert_choice, hf_index, ett_cmp_CertOrEncCert,
604 static const ber_sequence_t CertifiedKeyPair_sequence[] = {
605 { &hf_cmp_certOrEncCert , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_cmp_CertOrEncCert },
606 { &hf_cmp_privateKey , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_crmf_EncryptedValue },
607 { &hf_cmp_publicationInfo , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_crmf_PKIPublicationInfo },
608 { NULL, 0, 0, 0, NULL }
612 dissect_cmp_CertifiedKeyPair(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
613 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
614 CertifiedKeyPair_sequence, hf_index, ett_cmp_CertifiedKeyPair);
620 static const ber_sequence_t CertResponse_sequence[] = {
621 { &hf_cmp_certReqId , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cmp_INTEGER },
622 { &hf_cmp_pkistatusinf , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_PKIStatusInfo },
623 { &hf_cmp_certifiedKeyPair, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cmp_CertifiedKeyPair },
624 { &hf_cmp_rspInfo , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cmp_OCTET_STRING },
625 { NULL, 0, 0, 0, NULL }
629 dissect_cmp_CertResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
630 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
631 CertResponse_sequence, hf_index, ett_cmp_CertResponse);
637 static const ber_sequence_t SEQUENCE_OF_CertResponse_sequence_of[1] = {
638 { &hf_cmp_response_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_CertResponse },
642 dissect_cmp_SEQUENCE_OF_CertResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
643 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
644 SEQUENCE_OF_CertResponse_sequence_of, hf_index, ett_cmp_SEQUENCE_OF_CertResponse);
650 static const ber_sequence_t CertRepMessage_sequence[] = {
651 { &hf_cmp_caPubs , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_CMPCertificate },
652 { &hf_cmp_response , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_SEQUENCE_OF_CertResponse },
653 { NULL, 0, 0, 0, NULL }
657 dissect_cmp_CertRepMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
658 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
659 CertRepMessage_sequence, hf_index, ett_cmp_CertRepMessage);
667 dissect_cmp_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
668 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
674 static const ber_sequence_t Challenge_sequence[] = {
675 { &hf_cmp_owf , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_AlgorithmIdentifier },
676 { &hf_cmp_witness , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cmp_OCTET_STRING },
677 { &hf_cmp_challenge , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cmp_OCTET_STRING },
678 { NULL, 0, 0, 0, NULL }
682 dissect_cmp_Challenge(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
683 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
684 Challenge_sequence, hf_index, ett_cmp_Challenge);
690 static const ber_sequence_t POPODecKeyChallContent_sequence_of[1] = {
691 { &hf_cmp_POPODecKeyChallContent_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_Challenge },
695 dissect_cmp_POPODecKeyChallContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
696 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
697 POPODecKeyChallContent_sequence_of, hf_index, ett_cmp_POPODecKeyChallContent);
703 static const ber_sequence_t POPODecKeyRespContent_sequence_of[1] = {
704 { &hf_cmp_POPODecKeyRespContent_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cmp_INTEGER },
708 dissect_cmp_POPODecKeyRespContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
709 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
710 POPODecKeyRespContent_sequence_of, hf_index, ett_cmp_POPODecKeyRespContent);
716 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_CertifiedKeyPair_sequence_of[1] = {
717 { &hf_cmp_keyPairHist_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_CertifiedKeyPair },
721 dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_CertifiedKeyPair(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
722 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
723 SEQUENCE_SIZE_1_MAX_OF_CertifiedKeyPair_sequence_of, hf_index, ett_cmp_SEQUENCE_SIZE_1_MAX_OF_CertifiedKeyPair);
729 static const ber_sequence_t KeyRecRepContent_sequence[] = {
730 { &hf_cmp_pkistatusinf , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_PKIStatusInfo },
731 { &hf_cmp_newSigCert , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_cmp_CMPCertificate },
732 { &hf_cmp_caCerts , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_CMPCertificate },
733 { &hf_cmp_keyPairHist , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_CertifiedKeyPair },
734 { NULL, 0, 0, 0, NULL }
738 dissect_cmp_KeyRecRepContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
739 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
740 KeyRecRepContent_sequence, hf_index, ett_cmp_KeyRecRepContent);
746 static const ber_sequence_t RevDetails_sequence[] = {
747 { &hf_cmp_certDetails , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_crmf_CertTemplate },
748 { &hf_cmp_crlEntryDetails , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_Extensions },
749 { NULL, 0, 0, 0, NULL }
753 dissect_cmp_RevDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
754 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
755 RevDetails_sequence, hf_index, ett_cmp_RevDetails);
761 static const ber_sequence_t RevReqContent_sequence_of[1] = {
762 { &hf_cmp_RevReqContent_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_RevDetails },
766 dissect_cmp_RevReqContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
767 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
768 RevReqContent_sequence_of, hf_index, ett_cmp_RevReqContent);
774 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_PKIStatusInfo_sequence_of[1] = {
775 { &hf_cmp_rvrpcnt_status_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_PKIStatusInfo },
779 dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_PKIStatusInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
780 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
781 SEQUENCE_SIZE_1_MAX_OF_PKIStatusInfo_sequence_of, hf_index, ett_cmp_SEQUENCE_SIZE_1_MAX_OF_PKIStatusInfo);
787 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_CertId_sequence_of[1] = {
788 { &hf_cmp_revCerts_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_crmf_CertId },
792 dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_CertId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
793 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
794 SEQUENCE_SIZE_1_MAX_OF_CertId_sequence_of, hf_index, ett_cmp_SEQUENCE_SIZE_1_MAX_OF_CertId);
800 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_CertificateList_sequence_of[1] = {
801 { &hf_cmp_crls_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_CertificateList },
805 dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_CertificateList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
806 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
807 SEQUENCE_SIZE_1_MAX_OF_CertificateList_sequence_of, hf_index, ett_cmp_SEQUENCE_SIZE_1_MAX_OF_CertificateList);
813 static const ber_sequence_t RevRepContent_sequence[] = {
814 { &hf_cmp_rvrpcnt_status , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_PKIStatusInfo },
815 { &hf_cmp_revCerts , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_CertId },
816 { &hf_cmp_crls , BER_CLASS_CON, 1, 0, dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_CertificateList },
817 { NULL, 0, 0, 0, NULL }
821 dissect_cmp_RevRepContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
822 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
823 RevRepContent_sequence, hf_index, ett_cmp_RevRepContent);
829 static const ber_sequence_t CAKeyUpdAnnContent_sequence[] = {
830 { &hf_cmp_oldWithNew , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_cmp_CMPCertificate },
831 { &hf_cmp_newWithOld , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_cmp_CMPCertificate },
832 { &hf_cmp_newWithNew , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_cmp_CMPCertificate },
833 { NULL, 0, 0, 0, NULL }
837 dissect_cmp_CAKeyUpdAnnContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
838 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
839 CAKeyUpdAnnContent_sequence, hf_index, ett_cmp_CAKeyUpdAnnContent);
847 dissect_cmp_CertAnnContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
848 offset = dissect_cmp_CMPCertificate(implicit_tag, tvb, offset, actx, tree, hf_index);
854 static const ber_sequence_t RevAnnContent_sequence[] = {
855 { &hf_cmp_pkistatus , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cmp_PKIStatus },
856 { &hf_cmp_certId , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_crmf_CertId },
857 { &hf_cmp_willBeRevokedAt , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_cmp_GeneralizedTime },
858 { &hf_cmp_badSinceDate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_cmp_GeneralizedTime },
859 { &hf_cmp_crlDetails , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_Extensions },
860 { NULL, 0, 0, 0, NULL }
864 dissect_cmp_RevAnnContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
865 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
866 RevAnnContent_sequence, hf_index, ett_cmp_RevAnnContent);
872 static const ber_sequence_t CRLAnnContent_sequence_of[1] = {
873 { &hf_cmp_CRLAnnContent_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_CertificateList },
877 dissect_cmp_CRLAnnContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
878 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
879 CRLAnnContent_sequence_of, hf_index, ett_cmp_CRLAnnContent);
887 dissect_cmp_PKIConfirmContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
888 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
894 static const ber_sequence_t PKIMessages_sequence_of[1] = {
895 { &hf_cmp_PKIMessages_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_PKIMessage },
899 dissect_cmp_PKIMessages(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
900 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
901 PKIMessages_sequence_of, hf_index, ett_cmp_PKIMessages);
909 dissect_cmp_NestedMessageContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
910 offset = dissect_cmp_PKIMessages(implicit_tag, tvb, offset, actx, tree, hf_index);
916 static const ber_sequence_t GenMsgContent_sequence_of[1] = {
917 { &hf_cmp_GenMsgContent_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_InfoTypeAndValue },
921 dissect_cmp_GenMsgContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
922 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
923 GenMsgContent_sequence_of, hf_index, ett_cmp_GenMsgContent);
929 static const ber_sequence_t GenRepContent_sequence_of[1] = {
930 { &hf_cmp_GenRepContent_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_InfoTypeAndValue },
934 dissect_cmp_GenRepContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
935 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
936 GenRepContent_sequence_of, hf_index, ett_cmp_GenRepContent);
942 static const ber_sequence_t ErrorMsgContent_sequence[] = {
943 { &hf_cmp_pKIStatusInfo , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_PKIStatusInfo },
944 { &hf_cmp_errorCode , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cmp_INTEGER },
945 { &hf_cmp_errorDetails , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cmp_PKIFreeText },
946 { NULL, 0, 0, 0, NULL }
950 dissect_cmp_ErrorMsgContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
951 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
952 ErrorMsgContent_sequence, hf_index, ett_cmp_ErrorMsgContent);
958 static const ber_sequence_t CertStatus_sequence[] = {
959 { &hf_cmp_certHash , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cmp_OCTET_STRING },
960 { &hf_cmp_certReqId , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cmp_INTEGER },
961 { &hf_cmp_statusInfo , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cmp_PKIStatusInfo },
962 { NULL, 0, 0, 0, NULL }
966 dissect_cmp_CertStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
967 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
968 CertStatus_sequence, hf_index, ett_cmp_CertStatus);
974 static const ber_sequence_t CertConfirmContent_sequence_of[1] = {
975 { &hf_cmp_CertConfirmContent_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_CertStatus },
979 dissect_cmp_CertConfirmContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
980 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
981 CertConfirmContent_sequence_of, hf_index, ett_cmp_CertConfirmContent);
987 static const ber_sequence_t PollReqContent_item_sequence[] = {
988 { &hf_cmp_certReqId , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cmp_INTEGER },
989 { NULL, 0, 0, 0, NULL }
993 dissect_cmp_PollReqContent_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
994 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
995 PollReqContent_item_sequence, hf_index, ett_cmp_PollReqContent_item);
1001 static const ber_sequence_t PollReqContent_sequence_of[1] = {
1002 { &hf_cmp_PollReqContent_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_PollReqContent_item },
1006 dissect_cmp_PollReqContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1007 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1008 PollReqContent_sequence_of, hf_index, ett_cmp_PollReqContent);
1014 static const ber_sequence_t PollRepContent_item_sequence[] = {
1015 { &hf_cmp_certReqId , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cmp_INTEGER },
1016 { &hf_cmp_checkAfter , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cmp_INTEGER },
1017 { &hf_cmp_reason , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cmp_PKIFreeText },
1018 { NULL, 0, 0, 0, NULL }
1022 dissect_cmp_PollRepContent_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1023 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1024 PollRepContent_item_sequence, hf_index, ett_cmp_PollRepContent_item);
1030 static const ber_sequence_t PollRepContent_sequence_of[1] = {
1031 { &hf_cmp_PollRepContent_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_PollRepContent_item },
1035 dissect_cmp_PollRepContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1036 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1037 PollRepContent_sequence_of, hf_index, ett_cmp_PollRepContent);
1043 const value_string cmp_PKIBody_vals[] = {
1074 static const ber_choice_t PKIBody_choice[] = {
1075 { 0, &hf_cmp_ir , BER_CLASS_CON, 0, 0, dissect_crmf_CertReqMessages },
1076 { 1, &hf_cmp_ip , BER_CLASS_CON, 1, 0, dissect_cmp_CertRepMessage },
1077 { 2, &hf_cmp_cr , BER_CLASS_CON, 2, 0, dissect_crmf_CertReqMessages },
1078 { 3, &hf_cmp_cp , BER_CLASS_CON, 3, 0, dissect_cmp_CertRepMessage },
1079 { 4, &hf_cmp_p10cr , BER_CLASS_CON, 4, 0, dissect_cmp_NULL },
1080 { 5, &hf_cmp_popdecc , BER_CLASS_CON, 5, 0, dissect_cmp_POPODecKeyChallContent },
1081 { 6, &hf_cmp_popdecr , BER_CLASS_CON, 6, 0, dissect_cmp_POPODecKeyRespContent },
1082 { 7, &hf_cmp_kur , BER_CLASS_CON, 7, 0, dissect_crmf_CertReqMessages },
1083 { 8, &hf_cmp_kup , BER_CLASS_CON, 8, 0, dissect_cmp_CertRepMessage },
1084 { 9, &hf_cmp_krr , BER_CLASS_CON, 9, 0, dissect_crmf_CertReqMessages },
1085 { 10, &hf_cmp_krp , BER_CLASS_CON, 10, 0, dissect_cmp_KeyRecRepContent },
1086 { 11, &hf_cmp_rr , BER_CLASS_CON, 11, 0, dissect_cmp_RevReqContent },
1087 { 12, &hf_cmp_rp , BER_CLASS_CON, 12, 0, dissect_cmp_RevRepContent },
1088 { 13, &hf_cmp_ccr , BER_CLASS_CON, 13, 0, dissect_crmf_CertReqMessages },
1089 { 14, &hf_cmp_ccp , BER_CLASS_CON, 14, 0, dissect_cmp_CertRepMessage },
1090 { 15, &hf_cmp_ckuann , BER_CLASS_CON, 15, 0, dissect_cmp_CAKeyUpdAnnContent },
1091 { 16, &hf_cmp_cann , BER_CLASS_CON, 16, 0, dissect_cmp_CertAnnContent },
1092 { 17, &hf_cmp_rann , BER_CLASS_CON, 17, 0, dissect_cmp_RevAnnContent },
1093 { 18, &hf_cmp_crlann , BER_CLASS_CON, 18, 0, dissect_cmp_CRLAnnContent },
1094 { 19, &hf_cmp_pkiconf , BER_CLASS_CON, 19, 0, dissect_cmp_PKIConfirmContent },
1095 { 20, &hf_cmp_nested , BER_CLASS_CON, 20, 0, dissect_cmp_NestedMessageContent },
1096 { 21, &hf_cmp_genm , BER_CLASS_CON, 21, 0, dissect_cmp_GenMsgContent },
1097 { 22, &hf_cmp_genp , BER_CLASS_CON, 22, 0, dissect_cmp_GenRepContent },
1098 { 23, &hf_cmp_error , BER_CLASS_CON, 23, 0, dissect_cmp_ErrorMsgContent },
1099 { 24, &hf_cmp_certConf , BER_CLASS_CON, 24, 0, dissect_cmp_CertConfirmContent },
1100 { 25, &hf_cmp_pollReq , BER_CLASS_CON, 25, 0, dissect_cmp_PollReqContent },
1101 { 26, &hf_cmp_pollRep , BER_CLASS_CON, 26, 0, dissect_cmp_PollRepContent },
1102 { 0, NULL, 0, 0, 0, NULL }
1106 dissect_cmp_PKIBody(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1110 offset = dissect_ber_choice(actx, tree, tvb, offset,
1111 PKIBody_choice, hf_index, ett_cmp_PKIBody,
1115 if (check_col(actx->pinfo->cinfo, COL_INFO)) {
1116 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " Body=%s", val_to_str(branch_taken, cmp_PKIBody_vals, "unknown"));
1127 dissect_cmp_PKIProtection(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1128 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
1136 static const ber_sequence_t PKIMessage_sequence[] = {
1137 { &hf_cmp_header , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_PKIHeader },
1138 { &hf_cmp_body , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_cmp_PKIBody },
1139 { &hf_cmp_protection , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_cmp_PKIProtection },
1140 { &hf_cmp_extraCerts , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_cmp_SEQUENCE_SIZE_1_MAX_OF_CMPCertificate },
1141 { NULL, 0, 0, 0, NULL }
1145 dissect_cmp_PKIMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1146 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1147 PKIMessage_sequence, hf_index, ett_cmp_PKIMessage);
1153 static const ber_sequence_t ProtectedPart_sequence[] = {
1154 { &hf_cmp_header , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cmp_PKIHeader },
1155 { &hf_cmp_body , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_cmp_PKIBody },
1156 { NULL, 0, 0, 0, NULL }
1160 dissect_cmp_ProtectedPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1161 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1162 ProtectedPart_sequence, hf_index, ett_cmp_ProtectedPart);
1168 static const ber_sequence_t PBMParameter_sequence[] = {
1169 { &hf_cmp_salt , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cmp_OCTET_STRING },
1170 { &hf_cmp_owf , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_AlgorithmIdentifier },
1171 { &hf_cmp_iterationCount , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cmp_INTEGER },
1172 { &hf_cmp_mac , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_AlgorithmIdentifier },
1173 { NULL, 0, 0, 0, NULL }
1177 dissect_cmp_PBMParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1178 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1179 PBMParameter_sequence, hf_index, ett_cmp_PBMParameter);
1185 static const ber_sequence_t DHBMParameter_sequence[] = {
1186 { &hf_cmp_owf , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_AlgorithmIdentifier },
1187 { &hf_cmp_mac , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_AlgorithmIdentifier },
1188 { NULL, 0, 0, 0, NULL }
1192 dissect_cmp_DHBMParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1193 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1194 DHBMParameter_sequence, hf_index, ett_cmp_DHBMParameter);
1202 dissect_cmp_OOBCert(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1203 offset = dissect_cmp_CMPCertificate(implicit_tag, tvb, offset, actx, tree, hf_index);
1211 dissect_cmp_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1212 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
1220 static const ber_sequence_t OOBCertHash_sequence[] = {
1221 { &hf_cmp_hashAlg , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_pkix1explicit_AlgorithmIdentifier },
1222 { &hf_cmp_certId , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_crmf_CertId },
1223 { &hf_cmp_hashVal , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_cmp_BIT_STRING },
1224 { NULL, 0, 0, 0, NULL }
1228 dissect_cmp_OOBCertHash(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1229 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1230 OOBCertHash_sequence, hf_index, ett_cmp_OOBCertHash);
1238 dissect_cmp_CAProtEncCertValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1239 offset = dissect_cmp_CMPCertificate(implicit_tag, tvb, offset, actx, tree, hf_index);
1245 static const ber_sequence_t SignKeyPairTypesValue_sequence_of[1] = {
1246 { &hf_cmp_SignKeyPairTypesValue_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_AlgorithmIdentifier },
1250 dissect_cmp_SignKeyPairTypesValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1251 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1252 SignKeyPairTypesValue_sequence_of, hf_index, ett_cmp_SignKeyPairTypesValue);
1258 static const ber_sequence_t EncKeyPairTypesValue_sequence_of[1] = {
1259 { &hf_cmp_EncKeyPairTypesValue_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_AlgorithmIdentifier },
1263 dissect_cmp_EncKeyPairTypesValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1264 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1265 EncKeyPairTypesValue_sequence_of, hf_index, ett_cmp_EncKeyPairTypesValue);
1273 dissect_cmp_PreferredSymmAlgValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1274 offset = dissect_pkix1explicit_AlgorithmIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
1282 dissect_cmp_CAKeyUpdateInfoValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1283 offset = dissect_cmp_CAKeyUpdAnnContent(implicit_tag, tvb, offset, actx, tree, hf_index);
1291 dissect_cmp_CurrentCRLValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1292 offset = dissect_pkix1explicit_CertificateList(implicit_tag, tvb, offset, actx, tree, hf_index);
1300 dissect_cmp_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1301 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
1307 static const ber_sequence_t UnsupportedOIDsValue_sequence_of[1] = {
1308 { &hf_cmp_UnsupportedOIDsValue_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_cmp_OBJECT_IDENTIFIER },
1312 dissect_cmp_UnsupportedOIDsValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1313 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1314 UnsupportedOIDsValue_sequence_of, hf_index, ett_cmp_UnsupportedOIDsValue);
1322 dissect_cmp_KeyPairParamReqValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1323 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
1331 dissect_cmp_KeyPairParamRepValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1332 offset = dissect_pkix1explicit_AlgorithmIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
1340 dissect_cmp_RevPassphraseValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1341 offset = dissect_crmf_EncryptedValue(implicit_tag, tvb, offset, actx, tree, hf_index);
1349 dissect_cmp_ImplicitConfirmValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1350 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
1358 dissect_cmp_ConfirmWaitTimeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1359 offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
1367 dissect_cmp_OrigPKIMessageValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1368 offset = dissect_cmp_PKIMessages(implicit_tag, tvb, offset, actx, tree, hf_index);
1374 static const ber_sequence_t SuppLangTagsValue_sequence_of[1] = {
1375 { &hf_cmp_SuppLangTagsValue_item, BER_CLASS_UNI, BER_UNI_TAG_UTF8String, BER_FLAGS_NOOWNTAG, dissect_cmp_UTF8String },
1379 dissect_cmp_SuppLangTagsValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1380 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1381 SuppLangTagsValue_sequence_of, hf_index, ett_cmp_SuppLangTagsValue);
1388 static void dissect_PBMParameter_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1389 asn1_ctx_t asn1_ctx;
1390 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1391 dissect_cmp_PBMParameter(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_PBMParameter_PDU);
1393 static void dissect_DHBMParameter_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1394 asn1_ctx_t asn1_ctx;
1395 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1396 dissect_cmp_DHBMParameter(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_DHBMParameter_PDU);
1398 static void dissect_CAProtEncCertValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1399 asn1_ctx_t asn1_ctx;
1400 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1401 dissect_cmp_CAProtEncCertValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_CAProtEncCertValue_PDU);
1403 static void dissect_SignKeyPairTypesValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1404 asn1_ctx_t asn1_ctx;
1405 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1406 dissect_cmp_SignKeyPairTypesValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_SignKeyPairTypesValue_PDU);
1408 static void dissect_EncKeyPairTypesValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1409 asn1_ctx_t asn1_ctx;
1410 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1411 dissect_cmp_EncKeyPairTypesValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_EncKeyPairTypesValue_PDU);
1413 static void dissect_PreferredSymmAlgValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1414 asn1_ctx_t asn1_ctx;
1415 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1416 dissect_cmp_PreferredSymmAlgValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_PreferredSymmAlgValue_PDU);
1418 static void dissect_CAKeyUpdateInfoValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1419 asn1_ctx_t asn1_ctx;
1420 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1421 dissect_cmp_CAKeyUpdateInfoValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_CAKeyUpdateInfoValue_PDU);
1423 static void dissect_CurrentCRLValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1424 asn1_ctx_t asn1_ctx;
1425 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1426 dissect_cmp_CurrentCRLValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_CurrentCRLValue_PDU);
1428 static void dissect_UnsupportedOIDsValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1429 asn1_ctx_t asn1_ctx;
1430 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1431 dissect_cmp_UnsupportedOIDsValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_UnsupportedOIDsValue_PDU);
1433 static void dissect_KeyPairParamReqValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1434 asn1_ctx_t asn1_ctx;
1435 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1436 dissect_cmp_KeyPairParamReqValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_KeyPairParamReqValue_PDU);
1438 static void dissect_KeyPairParamRepValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1439 asn1_ctx_t asn1_ctx;
1440 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1441 dissect_cmp_KeyPairParamRepValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_KeyPairParamRepValue_PDU);
1443 static void dissect_RevPassphraseValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1444 asn1_ctx_t asn1_ctx;
1445 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1446 dissect_cmp_RevPassphraseValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_RevPassphraseValue_PDU);
1448 static void dissect_ImplicitConfirmValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1449 asn1_ctx_t asn1_ctx;
1450 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1451 dissect_cmp_ImplicitConfirmValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_ImplicitConfirmValue_PDU);
1453 static void dissect_ConfirmWaitTimeValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1454 asn1_ctx_t asn1_ctx;
1455 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1456 dissect_cmp_ConfirmWaitTimeValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_ConfirmWaitTimeValue_PDU);
1458 static void dissect_OrigPKIMessageValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1459 asn1_ctx_t asn1_ctx;
1460 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1461 dissect_cmp_OrigPKIMessageValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_OrigPKIMessageValue_PDU);
1463 static void dissect_SuppLangTagsValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1464 asn1_ctx_t asn1_ctx;
1465 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1466 dissect_cmp_SuppLangTagsValue(FALSE, tvb, 0, &asn1_ctx, tree, hf_cmp_SuppLangTagsValue_PDU);
1470 /*--- End of included file: packet-cmp-fn.c ---*/
1471 #line 86 "packet-cmp-template.c"
1474 dissect_cmp_pdu(tvbuff_t *tvb, proto_tree *tree, asn1_ctx_t *actx)
1476 return dissect_cmp_PKIMessage(FALSE, tvb, 0, actx,tree, -1);
1479 #define CMP_TYPE_PKIMSG 0
1480 #define CMP_TYPE_POLLREP 1
1481 #define CMP_TYPE_POLLREQ 2
1482 #define CMP_TYPE_NEGPOLLREP 3
1483 #define CMP_TYPE_PARTIALMSGREP 4
1484 #define CMP_TYPE_FINALMSGREP 5
1485 #define CMP_TYPE_ERRORMSGREP 6
1486 static const value_string cmp_pdu_types[] = {
1487 { CMP_TYPE_PKIMSG, "pkiMsg" },
1488 { CMP_TYPE_POLLREP, "pollRep" },
1489 { CMP_TYPE_POLLREQ, "pollReq" },
1490 { CMP_TYPE_NEGPOLLREP, "negPollRep" },
1491 { CMP_TYPE_PARTIALMSGREP, "partialMsgRep" },
1492 { CMP_TYPE_FINALMSGREP, "finalMsgRep" },
1493 { CMP_TYPE_ERRORMSGREP, "errorMsgRep" },
1498 static int dissect_cmp_tcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
1504 proto_item *item=NULL;
1505 proto_item *ti=NULL;
1506 proto_tree *tree=NULL;
1507 proto_tree *tcptrans_tree=NULL;
1508 asn1_ctx_t asn1_ctx;
1511 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1513 if (check_col(pinfo->cinfo, COL_PROTOCOL))
1514 col_set_str(pinfo->cinfo, COL_PROTOCOL, "CMP");
1516 if (check_col(pinfo->cinfo, COL_INFO)) {
1517 col_clear(pinfo->cinfo, COL_INFO);
1519 col_set_str(pinfo->cinfo, COL_INFO, "PKIXCMP");
1523 item=proto_tree_add_item(parent_tree, proto_cmp, tvb, 0, -1, FALSE);
1524 tree = proto_item_add_subtree(item, ett_cmp);
1527 pdu_len=tvb_get_ntohl(tvb, 0);
1528 pdu_type=tvb_get_guint8(tvb, 4);
1530 if (pdu_type < 10) {
1531 /* RFC2510 TCP transport */
1532 ti = proto_tree_add_item(tree, proto_cmp, tvb, offset, 5, FALSE);
1533 tcptrans_tree = proto_item_add_subtree(ti, ett_cmp);
1534 proto_tree_add_item(tree, hf_cmp_tcptrans_len, tvb, offset, 4, FALSE);
1536 proto_tree_add_item(tree, hf_cmp_tcptrans_type, tvb, offset++, 1, FALSE);
1538 /* post RFC2510 TCP transport - the former "type" field is now "version" */
1539 ti = proto_tree_add_text(tree, tvb, offset, 7, "TCP transport");
1540 tcptrans_tree = proto_item_add_subtree(ti, ett_cmp);
1541 pdu_type=tvb_get_guint8(tvb, 6);
1542 proto_tree_add_item(tcptrans_tree, hf_cmp_tcptrans_len, tvb, offset, 4, FALSE);
1544 proto_tree_add_item(tcptrans_tree, hf_cmp_tcptrans10_version, tvb, offset++, 1, FALSE);
1545 proto_tree_add_item(tcptrans_tree, hf_cmp_tcptrans10_flags, tvb, offset++, 1, FALSE);
1546 proto_tree_add_item(tcptrans_tree, hf_cmp_tcptrans_type, tvb, offset++, 1, FALSE);
1549 if (check_col (pinfo->cinfo, COL_INFO)) {
1550 col_set_str (pinfo->cinfo, COL_INFO, val_to_str (pdu_type, cmp_pdu_types, "0x%x"));
1554 case CMP_TYPE_PKIMSG:
1555 next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), pdu_len);
1556 dissect_cmp_pdu(next_tvb, tree, &asn1_ctx);
1557 offset += tvb_length_remaining(tvb, offset);
1559 case CMP_TYPE_POLLREP:
1560 proto_tree_add_item(tcptrans_tree, hf_cmp_tcptrans_poll_ref, tvb, offset, 4, FALSE);
1563 ts.secs = tvb_get_ntohl(tvb, 4);
1565 proto_tree_add_time(tcptrans_tree, hf_cmp_tcptrans_ttcb, tvb, offset, 4, &ts);
1568 case CMP_TYPE_POLLREQ:
1569 proto_tree_add_item(tcptrans_tree, hf_cmp_tcptrans_poll_ref, tvb, offset, 4, FALSE);
1572 case CMP_TYPE_NEGPOLLREP:
1574 case CMP_TYPE_PARTIALMSGREP:
1575 proto_tree_add_item(tcptrans_tree, hf_cmp_tcptrans_next_poll_ref, tvb, offset, 4, FALSE);
1578 ts.secs = tvb_get_ntohl(tvb, 4);
1580 proto_tree_add_time(tcptrans_tree, hf_cmp_tcptrans_ttcb, tvb, offset, 4, &ts);
1583 next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), pdu_len);
1584 dissect_cmp_pdu(next_tvb, tree, &asn1_ctx);
1585 offset += tvb_length_remaining(tvb, offset);
1587 case CMP_TYPE_FINALMSGREP:
1588 next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), pdu_len);
1589 dissect_cmp_pdu(next_tvb, tree, &asn1_ctx);
1590 offset += tvb_length_remaining(tvb, offset);
1592 case CMP_TYPE_ERRORMSGREP:
1600 static void dissect_cmp_tcp_pdu_no_return(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
1602 dissect_cmp_tcp_pdu(tvb, pinfo, parent_tree);
1605 static guint get_cmp_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
1610 * Get the length of the CMP-over-TCP packet.
1612 plen = tvb_get_ntohl(tvb, offset);
1618 /* CMP over TCP: RFC2510 section 5.2 and "Transport Protocols for CMP" draft */
1620 dissect_cmp_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
1624 int offset=4; /* RFC2510 TCP transport header length */
1626 /* only attempt to dissect it as CMP over TCP if we have
1629 if (!tvb_bytes_exist(tvb, 0, 5)) {
1633 pdu_len=tvb_get_ntohl(tvb, 0);
1634 pdu_type=tvb_get_guint8(tvb, 4);
1636 if(pdu_type == 10) {
1637 /* post RFC2510 TCP transport */
1638 pdu_type = tvb_get_guint8(tvb, 7);
1639 offset = 7; /* post RFC2510 TCP transport header length */
1640 /* arbitrary limit: assume a CMP over TCP pdu is never >10000 bytes
1642 * It is definitely at least 3 byte for post RFC2510 TCP transport
1644 if((pdu_len<=2)||(pdu_len>10000)){
1648 /* RFC2510 TCP transport */
1649 /* type is between 0 and 6 */
1653 /* arbitrary limit: assume a CMP over TCP pdu is never >10000 bytes
1655 * It is definitely at least 1 byte to accomodate the flags byte
1657 if((pdu_len<=0)||(pdu_len>10000)){
1662 /* type 0 contains a PKI message and must therefore be >= 3 bytes
1663 * long (flags + BER TAG + BER LENGTH
1665 if((pdu_type==0)&&(pdu_len<3)){
1669 tcp_dissect_pdus(tvb, pinfo, parent_tree, cmp_desegment, offset, get_cmp_pdu_len,
1670 dissect_cmp_tcp_pdu_no_return);
1672 return tvb_length(tvb);
1677 dissect_cmp_http(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
1679 proto_item *item=NULL;
1680 proto_tree *tree=NULL;
1681 asn1_ctx_t asn1_ctx;
1683 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1685 if (check_col(pinfo->cinfo, COL_PROTOCOL))
1686 col_set_str(pinfo->cinfo, COL_PROTOCOL, "CMP");
1688 if (check_col(pinfo->cinfo, COL_INFO)) {
1689 col_clear(pinfo->cinfo, COL_INFO);
1690 col_set_str(pinfo->cinfo, COL_INFO, "PKIXCMP");
1694 item=proto_tree_add_item(parent_tree, proto_cmp, tvb, 0, -1, FALSE);
1695 tree = proto_item_add_subtree(item, ett_cmp);
1698 return dissect_cmp_pdu(tvb, tree, &asn1_ctx);
1702 /*--- proto_register_cmp ----------------------------------------------*/
1703 void proto_register_cmp(void) {
1705 /* List of fields */
1706 static hf_register_info hf[] = {
1708 { "InfoType", "cmp.type.oid",
1709 FT_STRING, BASE_NONE, NULL, 0,
1710 "Type of InfoTypeAndValue", HFILL }},
1711 { &hf_cmp_tcptrans_len,
1712 { "Length", "cmp.tcptrans.length",
1713 FT_UINT32, BASE_DEC, NULL, 0,
1714 "TCP transport Length of PDU in bytes", HFILL }},
1715 { &hf_cmp_tcptrans_type,
1716 { "Type", "cmp.tcptrans.type",
1717 FT_UINT8, BASE_DEC, VALS(cmp_pdu_types), 0,
1718 "TCP transport PDU Type", HFILL }},
1719 { &hf_cmp_tcptrans_poll_ref,
1720 { "Polling Reference", "cmp.tcptrans.poll_ref",
1721 FT_UINT32, BASE_HEX, NULL, 0,
1722 "TCP transport Polling Reference", HFILL }},
1723 { &hf_cmp_tcptrans_next_poll_ref,
1724 { "Next Polling Reference", "cmp.tcptrans.next_poll_ref",
1725 FT_UINT32, BASE_HEX, NULL, 0,
1726 "TCP transport Next Polling Reference ", HFILL }},
1727 { &hf_cmp_tcptrans_ttcb,
1728 { "Time to check Back", "cmp.tcptrans.ttcb",
1729 FT_ABSOLUTE_TIME, BASE_NONE, NULL, 0,
1730 "TCP transport Time to check Back", HFILL }},
1731 { &hf_cmp_tcptrans10_version,
1732 { "Version", "cmp.tcptrans10.version",
1733 FT_UINT8, BASE_DEC, NULL, 0,
1734 "TCP transport version", HFILL }},
1735 { &hf_cmp_tcptrans10_flags,
1736 { "Flags", "cmp.tcptrans10.flags",
1737 FT_UINT8, BASE_DEC, NULL, 0,
1738 "TCP transport flags", HFILL }},
1740 /*--- Included file: packet-cmp-hfarr.c ---*/
1741 #line 1 "packet-cmp-hfarr.c"
1742 { &hf_cmp_PBMParameter_PDU,
1743 { "PBMParameter", "cmp.PBMParameter",
1744 FT_NONE, BASE_NONE, NULL, 0,
1745 "cmp.PBMParameter", HFILL }},
1746 { &hf_cmp_DHBMParameter_PDU,
1747 { "DHBMParameter", "cmp.DHBMParameter",
1748 FT_NONE, BASE_NONE, NULL, 0,
1749 "cmp.DHBMParameter", HFILL }},
1750 { &hf_cmp_CAProtEncCertValue_PDU,
1751 { "CAProtEncCertValue", "cmp.CAProtEncCertValue",
1752 FT_UINT32, BASE_DEC, VALS(cmp_CMPCertificate_vals), 0,
1753 "cmp.CAProtEncCertValue", HFILL }},
1754 { &hf_cmp_SignKeyPairTypesValue_PDU,
1755 { "SignKeyPairTypesValue", "cmp.SignKeyPairTypesValue",
1756 FT_UINT32, BASE_DEC, NULL, 0,
1757 "cmp.SignKeyPairTypesValue", HFILL }},
1758 { &hf_cmp_EncKeyPairTypesValue_PDU,
1759 { "EncKeyPairTypesValue", "cmp.EncKeyPairTypesValue",
1760 FT_UINT32, BASE_DEC, NULL, 0,
1761 "cmp.EncKeyPairTypesValue", HFILL }},
1762 { &hf_cmp_PreferredSymmAlgValue_PDU,
1763 { "PreferredSymmAlgValue", "cmp.PreferredSymmAlgValue",
1764 FT_NONE, BASE_NONE, NULL, 0,
1765 "cmp.PreferredSymmAlgValue", HFILL }},
1766 { &hf_cmp_CAKeyUpdateInfoValue_PDU,
1767 { "CAKeyUpdateInfoValue", "cmp.CAKeyUpdateInfoValue",
1768 FT_NONE, BASE_NONE, NULL, 0,
1769 "cmp.CAKeyUpdateInfoValue", HFILL }},
1770 { &hf_cmp_CurrentCRLValue_PDU,
1771 { "CurrentCRLValue", "cmp.CurrentCRLValue",
1772 FT_NONE, BASE_NONE, NULL, 0,
1773 "cmp.CurrentCRLValue", HFILL }},
1774 { &hf_cmp_UnsupportedOIDsValue_PDU,
1775 { "UnsupportedOIDsValue", "cmp.UnsupportedOIDsValue",
1776 FT_UINT32, BASE_DEC, NULL, 0,
1777 "cmp.UnsupportedOIDsValue", HFILL }},
1778 { &hf_cmp_KeyPairParamReqValue_PDU,
1779 { "KeyPairParamReqValue", "cmp.KeyPairParamReqValue",
1780 FT_OID, BASE_NONE, NULL, 0,
1781 "cmp.KeyPairParamReqValue", HFILL }},
1782 { &hf_cmp_KeyPairParamRepValue_PDU,
1783 { "KeyPairParamRepValue", "cmp.KeyPairParamRepValue",
1784 FT_NONE, BASE_NONE, NULL, 0,
1785 "cmp.KeyPairParamRepValue", HFILL }},
1786 { &hf_cmp_RevPassphraseValue_PDU,
1787 { "RevPassphraseValue", "cmp.RevPassphraseValue",
1788 FT_NONE, BASE_NONE, NULL, 0,
1789 "cmp.RevPassphraseValue", HFILL }},
1790 { &hf_cmp_ImplicitConfirmValue_PDU,
1791 { "ImplicitConfirmValue", "cmp.ImplicitConfirmValue",
1792 FT_NONE, BASE_NONE, NULL, 0,
1793 "cmp.ImplicitConfirmValue", HFILL }},
1794 { &hf_cmp_ConfirmWaitTimeValue_PDU,
1795 { "ConfirmWaitTimeValue", "cmp.ConfirmWaitTimeValue",
1796 FT_STRING, BASE_NONE, NULL, 0,
1797 "cmp.ConfirmWaitTimeValue", HFILL }},
1798 { &hf_cmp_OrigPKIMessageValue_PDU,
1799 { "OrigPKIMessageValue", "cmp.OrigPKIMessageValue",
1800 FT_UINT32, BASE_DEC, NULL, 0,
1801 "cmp.OrigPKIMessageValue", HFILL }},
1802 { &hf_cmp_SuppLangTagsValue_PDU,
1803 { "SuppLangTagsValue", "cmp.SuppLangTagsValue",
1804 FT_UINT32, BASE_DEC, NULL, 0,
1805 "cmp.SuppLangTagsValue", HFILL }},
1806 { &hf_cmp_x509v3PKCert,
1807 { "x509v3PKCert", "cmp.x509v3PKCert",
1808 FT_NONE, BASE_NONE, NULL, 0,
1809 "pkix1explicit.Certificate", HFILL }},
1811 { "header", "cmp.header",
1812 FT_NONE, BASE_NONE, NULL, 0,
1813 "cmp.PKIHeader", HFILL }},
1815 { "body", "cmp.body",
1816 FT_UINT32, BASE_DEC, VALS(cmp_PKIBody_vals), 0,
1817 "cmp.PKIBody", HFILL }},
1818 { &hf_cmp_protection,
1819 { "protection", "cmp.protection",
1820 FT_BYTES, BASE_HEX, NULL, 0,
1821 "cmp.PKIProtection", HFILL }},
1822 { &hf_cmp_extraCerts,
1823 { "extraCerts", "cmp.extraCerts",
1824 FT_UINT32, BASE_DEC, NULL, 0,
1825 "cmp.SEQUENCE_SIZE_1_MAX_OF_CMPCertificate", HFILL }},
1826 { &hf_cmp_extraCerts_item,
1827 { "extraCerts", "cmp.extraCerts_item",
1828 FT_UINT32, BASE_DEC, VALS(cmp_CMPCertificate_vals), 0,
1829 "cmp.CMPCertificate", HFILL }},
1830 { &hf_cmp_PKIMessages_item,
1831 { "PKIMessages", "cmp.PKIMessages_item",
1832 FT_NONE, BASE_NONE, NULL, 0,
1833 "cmp.PKIMessage", HFILL }},
1835 { "pvno", "cmp.pvno",
1836 FT_INT32, BASE_DEC, VALS(cmp_T_pvno_vals), 0,
1837 "cmp.T_pvno", HFILL }},
1839 { "sender", "cmp.sender",
1840 FT_UINT32, BASE_DEC, NULL, 0,
1841 "pkix1implicit.GeneralName", HFILL }},
1842 { &hf_cmp_recipient,
1843 { "recipient", "cmp.recipient",
1844 FT_UINT32, BASE_DEC, NULL, 0,
1845 "pkix1implicit.GeneralName", HFILL }},
1846 { &hf_cmp_messageTime,
1847 { "messageTime", "cmp.messageTime",
1848 FT_STRING, BASE_NONE, NULL, 0,
1849 "cmp.GeneralizedTime", HFILL }},
1850 { &hf_cmp_protectionAlg,
1851 { "protectionAlg", "cmp.protectionAlg",
1852 FT_NONE, BASE_NONE, NULL, 0,
1853 "pkix1explicit.AlgorithmIdentifier", HFILL }},
1854 { &hf_cmp_senderKID,
1855 { "senderKID", "cmp.senderKID",
1856 FT_BYTES, BASE_HEX, NULL, 0,
1857 "pkix1implicit.KeyIdentifier", HFILL }},
1859 { "recipKID", "cmp.recipKID",
1860 FT_BYTES, BASE_HEX, NULL, 0,
1861 "pkix1implicit.KeyIdentifier", HFILL }},
1862 { &hf_cmp_transactionID,
1863 { "transactionID", "cmp.transactionID",
1864 FT_BYTES, BASE_HEX, NULL, 0,
1865 "cmp.OCTET_STRING", HFILL }},
1866 { &hf_cmp_senderNonce,
1867 { "senderNonce", "cmp.senderNonce",
1868 FT_BYTES, BASE_HEX, NULL, 0,
1869 "cmp.OCTET_STRING", HFILL }},
1870 { &hf_cmp_recipNonce,
1871 { "recipNonce", "cmp.recipNonce",
1872 FT_BYTES, BASE_HEX, NULL, 0,
1873 "cmp.OCTET_STRING", HFILL }},
1875 { "freeText", "cmp.freeText",
1876 FT_UINT32, BASE_DEC, NULL, 0,
1877 "cmp.PKIFreeText", HFILL }},
1878 { &hf_cmp_generalInfo,
1879 { "generalInfo", "cmp.generalInfo",
1880 FT_UINT32, BASE_DEC, NULL, 0,
1881 "cmp.SEQUENCE_SIZE_1_MAX_OF_InfoTypeAndValue", HFILL }},
1882 { &hf_cmp_generalInfo_item,
1883 { "generalInfo", "cmp.generalInfo_item",
1884 FT_NONE, BASE_NONE, NULL, 0,
1885 "cmp.InfoTypeAndValue", HFILL }},
1886 { &hf_cmp_PKIFreeText_item,
1887 { "PKIFreeText", "cmp.PKIFreeText_item",
1888 FT_STRING, BASE_NONE, NULL, 0,
1889 "cmp.UTF8String", HFILL }},
1892 FT_UINT32, BASE_DEC, NULL, 0,
1893 "crmf.CertReqMessages", HFILL }},
1896 FT_NONE, BASE_NONE, NULL, 0,
1897 "cmp.CertRepMessage", HFILL }},
1900 FT_UINT32, BASE_DEC, NULL, 0,
1901 "crmf.CertReqMessages", HFILL }},
1904 FT_NONE, BASE_NONE, NULL, 0,
1905 "cmp.CertRepMessage", HFILL }},
1907 { "p10cr", "cmp.p10cr",
1908 FT_NONE, BASE_NONE, NULL, 0,
1909 "cmp.NULL", HFILL }},
1911 { "popdecc", "cmp.popdecc",
1912 FT_UINT32, BASE_DEC, NULL, 0,
1913 "cmp.POPODecKeyChallContent", HFILL }},
1915 { "popdecr", "cmp.popdecr",
1916 FT_UINT32, BASE_DEC, NULL, 0,
1917 "cmp.POPODecKeyRespContent", HFILL }},
1920 FT_UINT32, BASE_DEC, NULL, 0,
1921 "crmf.CertReqMessages", HFILL }},
1924 FT_NONE, BASE_NONE, NULL, 0,
1925 "cmp.CertRepMessage", HFILL }},
1928 FT_UINT32, BASE_DEC, NULL, 0,
1929 "crmf.CertReqMessages", HFILL }},
1932 FT_NONE, BASE_NONE, NULL, 0,
1933 "cmp.KeyRecRepContent", HFILL }},
1936 FT_UINT32, BASE_DEC, NULL, 0,
1937 "cmp.RevReqContent", HFILL }},
1940 FT_NONE, BASE_NONE, NULL, 0,
1941 "cmp.RevRepContent", HFILL }},
1944 FT_UINT32, BASE_DEC, NULL, 0,
1945 "crmf.CertReqMessages", HFILL }},
1948 FT_NONE, BASE_NONE, NULL, 0,
1949 "cmp.CertRepMessage", HFILL }},
1951 { "ckuann", "cmp.ckuann",
1952 FT_NONE, BASE_NONE, NULL, 0,
1953 "cmp.CAKeyUpdAnnContent", HFILL }},
1955 { "cann", "cmp.cann",
1956 FT_UINT32, BASE_DEC, VALS(cmp_CMPCertificate_vals), 0,
1957 "cmp.CertAnnContent", HFILL }},
1959 { "rann", "cmp.rann",
1960 FT_NONE, BASE_NONE, NULL, 0,
1961 "cmp.RevAnnContent", HFILL }},
1963 { "crlann", "cmp.crlann",
1964 FT_UINT32, BASE_DEC, NULL, 0,
1965 "cmp.CRLAnnContent", HFILL }},
1967 { "pkiconf", "cmp.pkiconf",
1968 FT_NONE, BASE_NONE, NULL, 0,
1969 "cmp.PKIConfirmContent", HFILL }},
1971 { "nested", "cmp.nested",
1972 FT_UINT32, BASE_DEC, NULL, 0,
1973 "cmp.NestedMessageContent", HFILL }},
1975 { "genm", "cmp.genm",
1976 FT_UINT32, BASE_DEC, NULL, 0,
1977 "cmp.GenMsgContent", HFILL }},
1979 { "genp", "cmp.genp",
1980 FT_UINT32, BASE_DEC, NULL, 0,
1981 "cmp.GenRepContent", HFILL }},
1983 { "error", "cmp.error",
1984 FT_NONE, BASE_NONE, NULL, 0,
1985 "cmp.ErrorMsgContent", HFILL }},
1987 { "certConf", "cmp.certConf",
1988 FT_UINT32, BASE_DEC, NULL, 0,
1989 "cmp.CertConfirmContent", HFILL }},
1991 { "pollReq", "cmp.pollReq",
1992 FT_UINT32, BASE_DEC, NULL, 0,
1993 "cmp.PollReqContent", HFILL }},
1995 { "pollRep", "cmp.pollRep",
1996 FT_UINT32, BASE_DEC, NULL, 0,
1997 "cmp.PollRepContent", HFILL }},
1999 { "salt", "cmp.salt",
2000 FT_BYTES, BASE_HEX, NULL, 0,
2001 "cmp.OCTET_STRING", HFILL }},
2004 FT_NONE, BASE_NONE, NULL, 0,
2005 "pkix1explicit.AlgorithmIdentifier", HFILL }},
2006 { &hf_cmp_iterationCount,
2007 { "iterationCount", "cmp.iterationCount",
2008 FT_INT32, BASE_DEC, NULL, 0,
2009 "cmp.INTEGER", HFILL }},
2012 FT_NONE, BASE_NONE, NULL, 0,
2013 "pkix1explicit.AlgorithmIdentifier", HFILL }},
2014 { &hf_cmp_pkistatus,
2015 { "status", "cmp.status",
2016 FT_INT32, BASE_DEC, VALS(cmp_PKIStatus_vals), 0,
2017 "cmp.PKIStatus", HFILL }},
2018 { &hf_cmp_statusString,
2019 { "statusString", "cmp.statusString",
2020 FT_UINT32, BASE_DEC, NULL, 0,
2021 "cmp.PKIFreeText", HFILL }},
2023 { "failInfo", "cmp.failInfo",
2024 FT_BYTES, BASE_HEX, NULL, 0,
2025 "cmp.PKIFailureInfo", HFILL }},
2027 { "hashAlg", "cmp.hashAlg",
2028 FT_NONE, BASE_NONE, NULL, 0,
2029 "pkix1explicit.AlgorithmIdentifier", HFILL }},
2031 { "certId", "cmp.certId",
2032 FT_NONE, BASE_NONE, NULL, 0,
2033 "crmf.CertId", HFILL }},
2035 { "hashVal", "cmp.hashVal",
2036 FT_BYTES, BASE_HEX, NULL, 0,
2037 "cmp.BIT_STRING", HFILL }},
2038 { &hf_cmp_POPODecKeyChallContent_item,
2039 { "POPODecKeyChallContent", "cmp.POPODecKeyChallContent_item",
2040 FT_NONE, BASE_NONE, NULL, 0,
2041 "cmp.Challenge", HFILL }},
2043 { "witness", "cmp.witness",
2044 FT_BYTES, BASE_HEX, NULL, 0,
2045 "cmp.OCTET_STRING", HFILL }},
2046 { &hf_cmp_challenge,
2047 { "challenge", "cmp.challenge",
2048 FT_BYTES, BASE_HEX, NULL, 0,
2049 "cmp.OCTET_STRING", HFILL }},
2050 { &hf_cmp_POPODecKeyRespContent_item,
2051 { "POPODecKeyRespContent", "cmp.POPODecKeyRespContent_item",
2052 FT_INT32, BASE_DEC, NULL, 0,
2053 "cmp.INTEGER", HFILL }},
2055 { "caPubs", "cmp.caPubs",
2056 FT_UINT32, BASE_DEC, NULL, 0,
2057 "cmp.SEQUENCE_SIZE_1_MAX_OF_CMPCertificate", HFILL }},
2058 { &hf_cmp_caPubs_item,
2059 { "caPubs", "cmp.caPubs_item",
2060 FT_UINT32, BASE_DEC, VALS(cmp_CMPCertificate_vals), 0,
2061 "cmp.CMPCertificate", HFILL }},
2063 { "response", "cmp.response",
2064 FT_UINT32, BASE_DEC, NULL, 0,
2065 "cmp.SEQUENCE_OF_CertResponse", HFILL }},
2066 { &hf_cmp_response_item,
2067 { "response", "cmp.response_item",
2068 FT_NONE, BASE_NONE, NULL, 0,
2069 "cmp.CertResponse", HFILL }},
2070 { &hf_cmp_certReqId,
2071 { "certReqId", "cmp.certReqId",
2072 FT_INT32, BASE_DEC, NULL, 0,
2073 "cmp.INTEGER", HFILL }},
2074 { &hf_cmp_pkistatusinf,
2075 { "status", "cmp.status",
2076 FT_NONE, BASE_NONE, NULL, 0,
2077 "cmp.PKIStatusInfo", HFILL }},
2078 { &hf_cmp_certifiedKeyPair,
2079 { "certifiedKeyPair", "cmp.certifiedKeyPair",
2080 FT_NONE, BASE_NONE, NULL, 0,
2081 "cmp.CertifiedKeyPair", HFILL }},
2083 { "rspInfo", "cmp.rspInfo",
2084 FT_BYTES, BASE_HEX, NULL, 0,
2085 "cmp.OCTET_STRING", HFILL }},
2086 { &hf_cmp_certOrEncCert,
2087 { "certOrEncCert", "cmp.certOrEncCert",
2088 FT_UINT32, BASE_DEC, VALS(cmp_CertOrEncCert_vals), 0,
2089 "cmp.CertOrEncCert", HFILL }},
2090 { &hf_cmp_privateKey,
2091 { "privateKey", "cmp.privateKey",
2092 FT_NONE, BASE_NONE, NULL, 0,
2093 "crmf.EncryptedValue", HFILL }},
2094 { &hf_cmp_publicationInfo,
2095 { "publicationInfo", "cmp.publicationInfo",
2096 FT_NONE, BASE_NONE, NULL, 0,
2097 "crmf.PKIPublicationInfo", HFILL }},
2098 { &hf_cmp_certificate,
2099 { "certificate", "cmp.certificate",
2100 FT_UINT32, BASE_DEC, VALS(cmp_CMPCertificate_vals), 0,
2101 "cmp.CMPCertificate", HFILL }},
2102 { &hf_cmp_encryptedCert,
2103 { "encryptedCert", "cmp.encryptedCert",
2104 FT_NONE, BASE_NONE, NULL, 0,
2105 "crmf.EncryptedValue", HFILL }},
2106 { &hf_cmp_newSigCert,
2107 { "newSigCert", "cmp.newSigCert",
2108 FT_UINT32, BASE_DEC, VALS(cmp_CMPCertificate_vals), 0,
2109 "cmp.CMPCertificate", HFILL }},
2111 { "caCerts", "cmp.caCerts",
2112 FT_UINT32, BASE_DEC, NULL, 0,
2113 "cmp.SEQUENCE_SIZE_1_MAX_OF_CMPCertificate", HFILL }},
2114 { &hf_cmp_caCerts_item,
2115 { "caCerts", "cmp.caCerts_item",
2116 FT_UINT32, BASE_DEC, VALS(cmp_CMPCertificate_vals), 0,
2117 "cmp.CMPCertificate", HFILL }},
2118 { &hf_cmp_keyPairHist,
2119 { "keyPairHist", "cmp.keyPairHist",
2120 FT_UINT32, BASE_DEC, NULL, 0,
2121 "cmp.SEQUENCE_SIZE_1_MAX_OF_CertifiedKeyPair", HFILL }},
2122 { &hf_cmp_keyPairHist_item,
2123 { "keyPairHist", "cmp.keyPairHist_item",
2124 FT_NONE, BASE_NONE, NULL, 0,
2125 "cmp.CertifiedKeyPair", HFILL }},
2126 { &hf_cmp_RevReqContent_item,
2127 { "RevReqContent", "cmp.RevReqContent_item",
2128 FT_NONE, BASE_NONE, NULL, 0,
2129 "cmp.RevDetails", HFILL }},
2130 { &hf_cmp_certDetails,
2131 { "certDetails", "cmp.certDetails",
2132 FT_NONE, BASE_NONE, NULL, 0,
2133 "crmf.CertTemplate", HFILL }},
2134 { &hf_cmp_crlEntryDetails,
2135 { "crlEntryDetails", "cmp.crlEntryDetails",
2136 FT_UINT32, BASE_DEC, NULL, 0,
2137 "pkix1explicit.Extensions", HFILL }},
2138 { &hf_cmp_rvrpcnt_status,
2139 { "status", "cmp.status",
2140 FT_UINT32, BASE_DEC, NULL, 0,
2141 "cmp.SEQUENCE_SIZE_1_MAX_OF_PKIStatusInfo", HFILL }},
2142 { &hf_cmp_rvrpcnt_status_item,
2143 { "status", "cmp.status_item",
2144 FT_NONE, BASE_NONE, NULL, 0,
2145 "cmp.PKIStatusInfo", HFILL }},
2147 { "revCerts", "cmp.revCerts",
2148 FT_UINT32, BASE_DEC, NULL, 0,
2149 "cmp.SEQUENCE_SIZE_1_MAX_OF_CertId", HFILL }},
2150 { &hf_cmp_revCerts_item,
2151 { "revCerts", "cmp.revCerts_item",
2152 FT_NONE, BASE_NONE, NULL, 0,
2153 "crmf.CertId", HFILL }},
2155 { "crls", "cmp.crls",
2156 FT_UINT32, BASE_DEC, NULL, 0,
2157 "cmp.SEQUENCE_SIZE_1_MAX_OF_CertificateList", HFILL }},
2158 { &hf_cmp_crls_item,
2159 { "crls", "cmp.crls_item",
2160 FT_NONE, BASE_NONE, NULL, 0,
2161 "pkix1explicit.CertificateList", HFILL }},
2162 { &hf_cmp_oldWithNew,
2163 { "oldWithNew", "cmp.oldWithNew",
2164 FT_UINT32, BASE_DEC, VALS(cmp_CMPCertificate_vals), 0,
2165 "cmp.CMPCertificate", HFILL }},
2166 { &hf_cmp_newWithOld,
2167 { "newWithOld", "cmp.newWithOld",
2168 FT_UINT32, BASE_DEC, VALS(cmp_CMPCertificate_vals), 0,
2169 "cmp.CMPCertificate", HFILL }},
2170 { &hf_cmp_newWithNew,
2171 { "newWithNew", "cmp.newWithNew",
2172 FT_UINT32, BASE_DEC, VALS(cmp_CMPCertificate_vals), 0,
2173 "cmp.CMPCertificate", HFILL }},
2174 { &hf_cmp_willBeRevokedAt,
2175 { "willBeRevokedAt", "cmp.willBeRevokedAt",
2176 FT_STRING, BASE_NONE, NULL, 0,
2177 "cmp.GeneralizedTime", HFILL }},
2178 { &hf_cmp_badSinceDate,
2179 { "badSinceDate", "cmp.badSinceDate",
2180 FT_STRING, BASE_NONE, NULL, 0,
2181 "cmp.GeneralizedTime", HFILL }},
2182 { &hf_cmp_crlDetails,
2183 { "crlDetails", "cmp.crlDetails",
2184 FT_UINT32, BASE_DEC, NULL, 0,
2185 "pkix1explicit.Extensions", HFILL }},
2186 { &hf_cmp_CRLAnnContent_item,
2187 { "CRLAnnContent", "cmp.CRLAnnContent_item",
2188 FT_NONE, BASE_NONE, NULL, 0,
2189 "pkix1explicit.CertificateList", HFILL }},
2190 { &hf_cmp_CertConfirmContent_item,
2191 { "CertConfirmContent", "cmp.CertConfirmContent_item",
2192 FT_NONE, BASE_NONE, NULL, 0,
2193 "cmp.CertStatus", HFILL }},
2195 { "certHash", "cmp.certHash",
2196 FT_BYTES, BASE_HEX, NULL, 0,
2197 "cmp.OCTET_STRING", HFILL }},
2198 { &hf_cmp_statusInfo,
2199 { "statusInfo", "cmp.statusInfo",
2200 FT_NONE, BASE_NONE, NULL, 0,
2201 "cmp.PKIStatusInfo", HFILL }},
2203 { "infoType", "cmp.infoType",
2204 FT_OID, BASE_NONE, NULL, 0,
2205 "cmp.T_infoType", HFILL }},
2206 { &hf_cmp_infoValue,
2207 { "infoValue", "cmp.infoValue",
2208 FT_NONE, BASE_NONE, NULL, 0,
2209 "cmp.T_infoValue", HFILL }},
2210 { &hf_cmp_SignKeyPairTypesValue_item,
2211 { "SignKeyPairTypesValue", "cmp.SignKeyPairTypesValue_item",
2212 FT_NONE, BASE_NONE, NULL, 0,
2213 "pkix1explicit.AlgorithmIdentifier", HFILL }},
2214 { &hf_cmp_EncKeyPairTypesValue_item,
2215 { "EncKeyPairTypesValue", "cmp.EncKeyPairTypesValue_item",
2216 FT_NONE, BASE_NONE, NULL, 0,
2217 "pkix1explicit.AlgorithmIdentifier", HFILL }},
2218 { &hf_cmp_UnsupportedOIDsValue_item,
2219 { "UnsupportedOIDsValue", "cmp.UnsupportedOIDsValue_item",
2220 FT_OID, BASE_NONE, NULL, 0,
2221 "cmp.OBJECT_IDENTIFIER", HFILL }},
2222 { &hf_cmp_SuppLangTagsValue_item,
2223 { "SuppLangTagsValue", "cmp.SuppLangTagsValue_item",
2224 FT_STRING, BASE_NONE, NULL, 0,
2225 "cmp.UTF8String", HFILL }},
2226 { &hf_cmp_GenMsgContent_item,
2227 { "GenMsgContent", "cmp.GenMsgContent_item",
2228 FT_NONE, BASE_NONE, NULL, 0,
2229 "cmp.InfoTypeAndValue", HFILL }},
2230 { &hf_cmp_GenRepContent_item,
2231 { "GenRepContent", "cmp.GenRepContent_item",
2232 FT_NONE, BASE_NONE, NULL, 0,
2233 "cmp.InfoTypeAndValue", HFILL }},
2234 { &hf_cmp_pKIStatusInfo,
2235 { "pKIStatusInfo", "cmp.pKIStatusInfo",
2236 FT_NONE, BASE_NONE, NULL, 0,
2237 "cmp.PKIStatusInfo", HFILL }},
2238 { &hf_cmp_errorCode,
2239 { "errorCode", "cmp.errorCode",
2240 FT_INT32, BASE_DEC, NULL, 0,
2241 "cmp.INTEGER", HFILL }},
2242 { &hf_cmp_errorDetails,
2243 { "errorDetails", "cmp.errorDetails",
2244 FT_UINT32, BASE_DEC, NULL, 0,
2245 "cmp.PKIFreeText", HFILL }},
2246 { &hf_cmp_PollReqContent_item,
2247 { "PollReqContent", "cmp.PollReqContent_item",
2248 FT_NONE, BASE_NONE, NULL, 0,
2249 "cmp.PollReqContent_item", HFILL }},
2250 { &hf_cmp_PollRepContent_item,
2251 { "PollRepContent", "cmp.PollRepContent_item",
2252 FT_NONE, BASE_NONE, NULL, 0,
2253 "cmp.PollRepContent_item", HFILL }},
2254 { &hf_cmp_checkAfter,
2255 { "checkAfter", "cmp.checkAfter",
2256 FT_INT32, BASE_DEC, NULL, 0,
2257 "cmp.INTEGER", HFILL }},
2259 { "reason", "cmp.reason",
2260 FT_UINT32, BASE_DEC, NULL, 0,
2261 "cmp.PKIFreeText", HFILL }},
2262 { &hf_cmp_PKIFailureInfo_badAlg,
2263 { "badAlg", "cmp.badAlg",
2264 FT_BOOLEAN, 8, NULL, 0x80,
2266 { &hf_cmp_PKIFailureInfo_badMessageCheck,
2267 { "badMessageCheck", "cmp.badMessageCheck",
2268 FT_BOOLEAN, 8, NULL, 0x40,
2270 { &hf_cmp_PKIFailureInfo_badRequest,
2271 { "badRequest", "cmp.badRequest",
2272 FT_BOOLEAN, 8, NULL, 0x20,
2274 { &hf_cmp_PKIFailureInfo_badTime,
2275 { "badTime", "cmp.badTime",
2276 FT_BOOLEAN, 8, NULL, 0x10,
2278 { &hf_cmp_PKIFailureInfo_badCertId,
2279 { "badCertId", "cmp.badCertId",
2280 FT_BOOLEAN, 8, NULL, 0x08,
2282 { &hf_cmp_PKIFailureInfo_badDataFormat,
2283 { "badDataFormat", "cmp.badDataFormat",
2284 FT_BOOLEAN, 8, NULL, 0x04,
2286 { &hf_cmp_PKIFailureInfo_wrongAuthority,
2287 { "wrongAuthority", "cmp.wrongAuthority",
2288 FT_BOOLEAN, 8, NULL, 0x02,
2290 { &hf_cmp_PKIFailureInfo_incorrectData,
2291 { "incorrectData", "cmp.incorrectData",
2292 FT_BOOLEAN, 8, NULL, 0x01,
2294 { &hf_cmp_PKIFailureInfo_missingTimeStamp,
2295 { "missingTimeStamp", "cmp.missingTimeStamp",
2296 FT_BOOLEAN, 8, NULL, 0x80,
2298 { &hf_cmp_PKIFailureInfo_badPOP,
2299 { "badPOP", "cmp.badPOP",
2300 FT_BOOLEAN, 8, NULL, 0x40,
2302 { &hf_cmp_PKIFailureInfo_certRevoked,
2303 { "certRevoked", "cmp.certRevoked",
2304 FT_BOOLEAN, 8, NULL, 0x20,
2306 { &hf_cmp_PKIFailureInfo_certConfirmed,
2307 { "certConfirmed", "cmp.certConfirmed",
2308 FT_BOOLEAN, 8, NULL, 0x10,
2310 { &hf_cmp_PKIFailureInfo_wrongIntegrity,
2311 { "wrongIntegrity", "cmp.wrongIntegrity",
2312 FT_BOOLEAN, 8, NULL, 0x08,
2314 { &hf_cmp_PKIFailureInfo_badRecipientNonce,
2315 { "badRecipientNonce", "cmp.badRecipientNonce",
2316 FT_BOOLEAN, 8, NULL, 0x04,
2318 { &hf_cmp_PKIFailureInfo_timeNotAvailable,
2319 { "timeNotAvailable", "cmp.timeNotAvailable",
2320 FT_BOOLEAN, 8, NULL, 0x02,
2322 { &hf_cmp_PKIFailureInfo_unacceptedPolicy,
2323 { "unacceptedPolicy", "cmp.unacceptedPolicy",
2324 FT_BOOLEAN, 8, NULL, 0x01,
2326 { &hf_cmp_PKIFailureInfo_unacceptedExtension,
2327 { "unacceptedExtension", "cmp.unacceptedExtension",
2328 FT_BOOLEAN, 8, NULL, 0x80,
2330 { &hf_cmp_PKIFailureInfo_addInfoNotAvailable,
2331 { "addInfoNotAvailable", "cmp.addInfoNotAvailable",
2332 FT_BOOLEAN, 8, NULL, 0x40,
2334 { &hf_cmp_PKIFailureInfo_badSenderNonce,
2335 { "badSenderNonce", "cmp.badSenderNonce",
2336 FT_BOOLEAN, 8, NULL, 0x20,
2338 { &hf_cmp_PKIFailureInfo_badCertTemplate,
2339 { "badCertTemplate", "cmp.badCertTemplate",
2340 FT_BOOLEAN, 8, NULL, 0x10,
2342 { &hf_cmp_PKIFailureInfo_signerNotTrusted,
2343 { "signerNotTrusted", "cmp.signerNotTrusted",
2344 FT_BOOLEAN, 8, NULL, 0x08,
2346 { &hf_cmp_PKIFailureInfo_transactionIdInUse,
2347 { "transactionIdInUse", "cmp.transactionIdInUse",
2348 FT_BOOLEAN, 8, NULL, 0x04,
2350 { &hf_cmp_PKIFailureInfo_unsupportedVersion,
2351 { "unsupportedVersion", "cmp.unsupportedVersion",
2352 FT_BOOLEAN, 8, NULL, 0x02,
2354 { &hf_cmp_PKIFailureInfo_notAuthorized,
2355 { "notAuthorized", "cmp.notAuthorized",
2356 FT_BOOLEAN, 8, NULL, 0x01,
2358 { &hf_cmp_PKIFailureInfo_systemUnavail,
2359 { "systemUnavail", "cmp.systemUnavail",
2360 FT_BOOLEAN, 8, NULL, 0x80,
2362 { &hf_cmp_PKIFailureInfo_systemFailure,
2363 { "systemFailure", "cmp.systemFailure",
2364 FT_BOOLEAN, 8, NULL, 0x40,
2366 { &hf_cmp_PKIFailureInfo_duplicateCertReq,
2367 { "duplicateCertReq", "cmp.duplicateCertReq",
2368 FT_BOOLEAN, 8, NULL, 0x20,
2371 /*--- End of included file: packet-cmp-hfarr.c ---*/
2372 #line 354 "packet-cmp-template.c"
2375 /* List of subtrees */
2376 static gint *ett[] = {
2379 /*--- Included file: packet-cmp-ettarr.c ---*/
2380 #line 1 "packet-cmp-ettarr.c"
2381 &ett_cmp_CMPCertificate,
2382 &ett_cmp_PKIMessage,
2383 &ett_cmp_SEQUENCE_SIZE_1_MAX_OF_CMPCertificate,
2384 &ett_cmp_PKIMessages,
2386 &ett_cmp_SEQUENCE_SIZE_1_MAX_OF_InfoTypeAndValue,
2387 &ett_cmp_PKIFreeText,
2389 &ett_cmp_ProtectedPart,
2390 &ett_cmp_PBMParameter,
2391 &ett_cmp_DHBMParameter,
2392 &ett_cmp_PKIFailureInfo,
2393 &ett_cmp_PKIStatusInfo,
2394 &ett_cmp_OOBCertHash,
2395 &ett_cmp_POPODecKeyChallContent,
2397 &ett_cmp_POPODecKeyRespContent,
2398 &ett_cmp_CertRepMessage,
2399 &ett_cmp_SEQUENCE_OF_CertResponse,
2400 &ett_cmp_CertResponse,
2401 &ett_cmp_CertifiedKeyPair,
2402 &ett_cmp_CertOrEncCert,
2403 &ett_cmp_KeyRecRepContent,
2404 &ett_cmp_SEQUENCE_SIZE_1_MAX_OF_CertifiedKeyPair,
2405 &ett_cmp_RevReqContent,
2406 &ett_cmp_RevDetails,
2407 &ett_cmp_RevRepContent,
2408 &ett_cmp_SEQUENCE_SIZE_1_MAX_OF_PKIStatusInfo,
2409 &ett_cmp_SEQUENCE_SIZE_1_MAX_OF_CertId,
2410 &ett_cmp_SEQUENCE_SIZE_1_MAX_OF_CertificateList,
2411 &ett_cmp_CAKeyUpdAnnContent,
2412 &ett_cmp_RevAnnContent,
2413 &ett_cmp_CRLAnnContent,
2414 &ett_cmp_CertConfirmContent,
2415 &ett_cmp_CertStatus,
2416 &ett_cmp_InfoTypeAndValue,
2417 &ett_cmp_SignKeyPairTypesValue,
2418 &ett_cmp_EncKeyPairTypesValue,
2419 &ett_cmp_UnsupportedOIDsValue,
2420 &ett_cmp_SuppLangTagsValue,
2421 &ett_cmp_GenMsgContent,
2422 &ett_cmp_GenRepContent,
2423 &ett_cmp_ErrorMsgContent,
2424 &ett_cmp_PollReqContent,
2425 &ett_cmp_PollReqContent_item,
2426 &ett_cmp_PollRepContent,
2427 &ett_cmp_PollRepContent_item,
2429 /*--- End of included file: packet-cmp-ettarr.c ---*/
2430 #line 360 "packet-cmp-template.c"
2432 module_t *cmp_module;
2434 /* Register protocol */
2435 proto_cmp = proto_register_protocol(PNAME, PSNAME, PFNAME);
2437 /* Register fields and subtrees */
2438 proto_register_field_array(proto_cmp, hf, array_length(hf));
2439 proto_register_subtree_array(ett, array_length(ett));
2441 cmp_module = prefs_register_protocol(proto_cmp, proto_reg_handoff_cmp);
2442 prefs_register_bool_preference(cmp_module, "desegment",
2443 "Reassemble CMP-over-TCP messages spanning multiple TCP segments",
2444 "Whether the CMP-over-TCP dissector should reassemble messages spanning multiple TCP segments. "
2445 "To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
2448 prefs_register_uint_preference(cmp_module, "tcp_alternate_port",
2449 "Alternate TCP port",
2450 "Decode this TCP port\'s traffic as CMP. Set to \"0\" to disable.",
2452 &cmp_alternate_tcp_port);
2454 prefs_register_uint_preference(cmp_module, "http_alternate_port",
2455 "Alternate HTTP port",
2456 "Decode this TCP port\'s traffic as CMP-over-HTTP. Set to \"0\" to disable. "
2457 "Use this if the Content-Type is not set correctly.",
2459 &cmp_alternate_http_port);
2461 prefs_register_uint_preference(cmp_module, "tcp_style_http_alternate_port",
2462 "Alternate TCP-style-HTTP port",
2463 "Decode this TCP port\'s traffic as TCP-transport-style CMP-over-HTTP. Set to \"0\" to disable. "
2464 "Use this if the Content-Type is not set correctly.",
2466 &cmp_alternate_tcp_style_http_port);
2470 /*--- proto_reg_handoff_cmp -------------------------------------------*/
2471 void proto_reg_handoff_cmp(void) {
2472 static gboolean inited = FALSE;
2473 static dissector_handle_t cmp_http_handle;
2474 static dissector_handle_t cmp_tcp_style_http_handle;
2475 static dissector_handle_t cmp_tcp_handle;
2476 static guint cmp_alternate_tcp_port_prev = 0;
2477 static guint cmp_alternate_http_port_prev = 0;
2478 static guint cmp_alternate_tcp_style_http_port_prev = 0;
2481 cmp_http_handle = new_create_dissector_handle(dissect_cmp_http, proto_cmp);
2482 dissector_add_string("media_type", "application/pkixcmp", cmp_http_handle);
2483 dissector_add_string("media_type", "application/x-pkixcmp", cmp_http_handle);
2485 cmp_tcp_style_http_handle = new_create_dissector_handle(dissect_cmp_tcp_pdu, proto_cmp);
2486 dissector_add_string("media_type", "application/pkixcmp-poll", cmp_tcp_style_http_handle);
2487 dissector_add_string("media_type", "application/x-pkixcmp-poll", cmp_tcp_style_http_handle);
2489 cmp_tcp_handle = new_create_dissector_handle(dissect_cmp_tcp, proto_cmp);
2490 dissector_add("tcp.port", TCP_PORT_CMP, cmp_tcp_handle);
2492 oid_add_from_string("Cryptlib-presence-check","1.3.6.1.4.1.3029.3.1.1");
2493 oid_add_from_string("Cryptlib-PKIBoot","1.3.6.1.4.1.3029.3.1.2");
2495 oid_add_from_string("HMAC MD5","1.3.6.1.5.5.8.1.1");
2496 oid_add_from_string("HMAC SHA-1","1.3.6.1.5.5.8.1.2");
2497 oid_add_from_string("HMAC TIGER","1.3.6.1.5.5.8.1.3");
2498 oid_add_from_string("HMAC RIPEMD-160","1.3.6.1.5.5.8.1.4");
2500 oid_add_from_string("sha256WithRSAEncryption","1.2.840.113549.1.1.11");
2503 /*--- Included file: packet-cmp-dis-tab.c ---*/
2504 #line 1 "packet-cmp-dis-tab.c"
2505 register_ber_oid_dissector("1.2.840.113533.7.66.13", dissect_PBMParameter_PDU, proto_cmp, "id-PasswordBasedMac");
2506 register_ber_oid_dissector("1.2.640.113533.7.66.30", dissect_DHBMParameter_PDU, proto_cmp, "id-DHBasedMac");
2507 register_ber_oid_dissector("1.3.6.1.5.5.7.4.1", dissect_CAProtEncCertValue_PDU, proto_cmp, "id-it-caProtEncCert");
2508 register_ber_oid_dissector("1.3.6.1.5.5.7.4.2", dissect_SignKeyPairTypesValue_PDU, proto_cmp, "id-it-signKeyPairTypes");
2509 register_ber_oid_dissector("1.3.6.1.5.5.7.4.3", dissect_EncKeyPairTypesValue_PDU, proto_cmp, "id-it-encKeyPairTypes");
2510 register_ber_oid_dissector("1.3.6.1.5.5.7.4.4", dissect_PreferredSymmAlgValue_PDU, proto_cmp, "id-it-preferredSymmAlg");
2511 register_ber_oid_dissector("1.3.6.1.5.5.7.4.5", dissect_CAKeyUpdateInfoValue_PDU, proto_cmp, "id-it-caKeyUpdateInfo");
2512 register_ber_oid_dissector("1.3.6.1.5.5.7.4.6", dissect_CurrentCRLValue_PDU, proto_cmp, "id-it-currentCRL");
2513 register_ber_oid_dissector("1.3.6.1.5.5.7.4.7", dissect_UnsupportedOIDsValue_PDU, proto_cmp, "id-it-unsupportedOIDs");
2514 register_ber_oid_dissector("1.3.6.1.5.5.7.4.10", dissect_KeyPairParamReqValue_PDU, proto_cmp, "id-it-keyPairParamReq");
2515 register_ber_oid_dissector("1.3.6.1.5.5.7.4.11", dissect_KeyPairParamRepValue_PDU, proto_cmp, "id-it-keyPairParamRep");
2516 register_ber_oid_dissector("1.3.6.1.5.5.7.4.12", dissect_RevPassphraseValue_PDU, proto_cmp, "id-it-revPassphrase");
2517 register_ber_oid_dissector("1.3.6.1.5.5.7.4.13", dissect_ImplicitConfirmValue_PDU, proto_cmp, "id-it-implicitConfirm");
2518 register_ber_oid_dissector("1.3.6.1.5.5.7.4.14", dissect_ConfirmWaitTimeValue_PDU, proto_cmp, "id-it-confirmWaitTime");
2519 register_ber_oid_dissector("1.3.6.1.5.5.7.4.15", dissect_OrigPKIMessageValue_PDU, proto_cmp, "id-it-origPKIMessage");
2520 register_ber_oid_dissector("1.3.6.1.5.5.7.4.16", dissect_SuppLangTagsValue_PDU, proto_cmp, "id-it-suppLangTags");
2523 /*--- End of included file: packet-cmp-dis-tab.c ---*/
2524 #line 432 "packet-cmp-template.c"
2528 /* change alternate TCP port if changed in the preferences */
2529 if (cmp_alternate_tcp_port != cmp_alternate_tcp_port_prev) {
2530 if (cmp_alternate_tcp_port_prev != 0)
2531 dissector_delete("tcp.port", cmp_alternate_tcp_port_prev, cmp_tcp_handle);
2532 if (cmp_alternate_tcp_port != 0)
2533 dissector_add("tcp.port", cmp_alternate_tcp_port, cmp_tcp_handle);
2534 cmp_alternate_tcp_port_prev = cmp_alternate_tcp_port;
2537 /* change alternate HTTP port if changed in the preferences */
2538 if (cmp_alternate_http_port != cmp_alternate_http_port_prev) {
2539 if (cmp_alternate_http_port_prev != 0) {
2540 dissector_delete("tcp.port", cmp_alternate_http_port_prev, NULL);
2541 dissector_delete("http.port", cmp_alternate_http_port_prev, NULL);
2543 if (cmp_alternate_http_port != 0)
2544 http_dissector_add( cmp_alternate_http_port, cmp_http_handle);
2545 cmp_alternate_http_port_prev = cmp_alternate_http_port;
2548 /* change alternate TCP-style-HTTP port if changed in the preferences */
2549 if (cmp_alternate_tcp_style_http_port != cmp_alternate_tcp_style_http_port_prev) {
2550 if (cmp_alternate_tcp_style_http_port_prev != 0) {
2551 dissector_delete("tcp.port", cmp_alternate_tcp_style_http_port_prev, NULL);
2552 dissector_delete("http.port", cmp_alternate_tcp_style_http_port_prev, NULL);
2554 if (cmp_alternate_tcp_style_http_port != 0)
2555 http_dissector_add( cmp_alternate_tcp_style_http_port, cmp_tcp_style_http_handle);
2556 cmp_alternate_tcp_style_http_port_prev = cmp_alternate_tcp_style_http_port;