d1b218f776317c616dc6600b1156b800aa52ac7e
[obnox/wireshark/wip.git] / epan / dissectors / packet-ess.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler    */
3 /* ./packet-ess.c                                                             */
4 /* ../../tools/asn2eth.py -X -b -k -e -p ess -c ess.cnf -s packet-ess-template ExtendedSecurityServices.asn */
5
6 /* Input file: packet-ess-template.c */
7
8 #line 1 "packet-ess-template.c"
9 /* packet-ess.c
10  * Routines for RFC2634 Extended Security Services packet dissection
11  *   Ronnie Sahlberg 2004
12  *
13  * $Id$
14  *
15  * Wireshark - Network traffic analyzer
16  * By Gerald Combs <gerald@wireshark.org>
17  * Copyright 1998 Gerald Combs
18  *
19  * This program is free software; you can redistribute it and/or
20  * modify it under the terms of the GNU General Public License
21  * as published by the Free Software Foundation; either version 2
22  * of the License, or (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program; if not, write to the Free Software
31  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
32  */
33
34 #ifdef HAVE_CONFIG_H
35 # include "config.h"
36 #endif
37
38 #include <glib.h>
39 #include <epan/packet.h>
40
41 #include <stdio.h>
42 #include <string.h>
43
44 #include "packet-ber.h"
45 #include "packet-ess.h"
46 #include "packet-cms.h"
47 #include "packet-x509ce.h"
48 #include "packet-x509af.h"
49
50 #define PNAME  "Extended Security Services"
51 #define PSNAME "ESS"
52 #define PFNAME "ess"
53
54 /* Initialize the protocol and registered fields */
55 static int proto_ess = -1;
56 static int hf_ess_SecurityCategory_type_OID = -1;
57
58 /*--- Included file: packet-ess-hf.c ---*/
59 #line 1 "packet-ess-hf.c"
60 static int hf_ess_ReceiptRequest_PDU = -1;        /* ReceiptRequest */
61 static int hf_ess_ContentIdentifier_PDU = -1;     /* ContentIdentifier */
62 static int hf_ess_Receipt_PDU = -1;               /* Receipt */
63 static int hf_ess_ContentHints_PDU = -1;          /* ContentHints */
64 static int hf_ess_MsgSigDigest_PDU = -1;          /* MsgSigDigest */
65 static int hf_ess_ContentReference_PDU = -1;      /* ContentReference */
66 static int hf_ess_ESSSecurityLabel_PDU = -1;      /* ESSSecurityLabel */
67 static int hf_ess_RestrictiveTag_PDU = -1;        /* RestrictiveTag */
68 static int hf_ess_EnumeratedTag_PDU = -1;         /* EnumeratedTag */
69 static int hf_ess_PermissiveTag_PDU = -1;         /* PermissiveTag */
70 static int hf_ess_InformativeTag_PDU = -1;        /* InformativeTag */
71 static int hf_ess_EquivalentLabels_PDU = -1;      /* EquivalentLabels */
72 static int hf_ess_MLExpansionHistory_PDU = -1;    /* MLExpansionHistory */
73 static int hf_ess_SigningCertificate_PDU = -1;    /* SigningCertificate */
74 static int hf_ess_signedContentIdentifier = -1;   /* ContentIdentifier */
75 static int hf_ess_receiptsFrom = -1;              /* ReceiptsFrom */
76 static int hf_ess_receiptsTo = -1;                /* SEQUENCE_OF_GeneralNames */
77 static int hf_ess_receiptsTo_item = -1;           /* GeneralNames */
78 static int hf_ess_allOrFirstTier = -1;            /* AllOrFirstTier */
79 static int hf_ess_receiptList = -1;               /* SEQUENCE_OF_GeneralNames */
80 static int hf_ess_receiptList_item = -1;          /* GeneralNames */
81 static int hf_ess_version = -1;                   /* ESSVersion */
82 static int hf_ess_contentType = -1;               /* ContentType */
83 static int hf_ess_originatorSignatureValue = -1;  /* OCTET_STRING */
84 static int hf_ess_contentDescription = -1;        /* UTF8String */
85 static int hf_ess_security_policy_identifier = -1;  /* SecurityPolicyIdentifier */
86 static int hf_ess_security_classification = -1;   /* SecurityClassification */
87 static int hf_ess_privacy_mark = -1;              /* ESSPrivacyMark */
88 static int hf_ess_security_categories = -1;       /* SecurityCategories */
89 static int hf_ess_pString = -1;                   /* PrintableString */
90 static int hf_ess_utf8String = -1;                /* UTF8String */
91 static int hf_ess_SecurityCategories_item = -1;   /* SecurityCategory */
92 static int hf_ess_type = -1;                      /* T_type */
93 static int hf_ess_value = -1;                     /* T_value */
94 static int hf_ess_tagName = -1;                   /* OBJECT_IDENTIFIER */
95 static int hf_ess_attributeFlags = -1;            /* BIT_STRING */
96 static int hf_ess_attributeList = -1;             /* SET_OF_SecurityAttribute */
97 static int hf_ess_attributeList_item = -1;        /* SecurityAttribute */
98 static int hf_ess_attributes = -1;                /* FreeFormField */
99 static int hf_ess_bitSetAttributes = -1;          /* BIT_STRING */
100 static int hf_ess_securityAttributes = -1;        /* SET_OF_SecurityAttribute */
101 static int hf_ess_securityAttributes_item = -1;   /* SecurityAttribute */
102 static int hf_ess_EquivalentLabels_item = -1;     /* ESSSecurityLabel */
103 static int hf_ess_MLExpansionHistory_item = -1;   /* MLData */
104 static int hf_ess_mailListIdentifier = -1;        /* EntityIdentifier */
105 static int hf_ess_expansionTime = -1;             /* GeneralizedTime */
106 static int hf_ess_mlReceiptPolicy = -1;           /* MLReceiptPolicy */
107 static int hf_ess_issuerAndSerialNumber = -1;     /* IssuerAndSerialNumber */
108 static int hf_ess_subjectKeyIdentifier = -1;      /* SubjectKeyIdentifier */
109 static int hf_ess_none = -1;                      /* NULL */
110 static int hf_ess_insteadOf = -1;                 /* SEQUENCE_OF_GeneralNames */
111 static int hf_ess_insteadOf_item = -1;            /* GeneralNames */
112 static int hf_ess_inAdditionTo = -1;              /* SEQUENCE_OF_GeneralNames */
113 static int hf_ess_inAdditionTo_item = -1;         /* GeneralNames */
114 static int hf_ess_certs = -1;                     /* SEQUENCE_OF_ESSCertID */
115 static int hf_ess_certs_item = -1;                /* ESSCertID */
116 static int hf_ess_policies = -1;                  /* SEQUENCE_OF_PolicyInformation */
117 static int hf_ess_policies_item = -1;             /* PolicyInformation */
118 static int hf_ess_certHash = -1;                  /* Hash */
119 static int hf_ess_issuerSerial = -1;              /* IssuerSerial */
120 static int hf_ess_issuer = -1;                    /* GeneralNames */
121 static int hf_ess_serialNumber = -1;              /* CertificateSerialNumber */
122
123 /*--- End of included file: packet-ess-hf.c ---*/
124 #line 50 "packet-ess-template.c"
125
126 /* Initialize the subtree pointers */
127
128 /*--- Included file: packet-ess-ett.c ---*/
129 #line 1 "packet-ess-ett.c"
130 static gint ett_ess_ReceiptRequest = -1;
131 static gint ett_ess_SEQUENCE_OF_GeneralNames = -1;
132 static gint ett_ess_ReceiptsFrom = -1;
133 static gint ett_ess_Receipt = -1;
134 static gint ett_ess_ContentHints = -1;
135 static gint ett_ess_ContentReference = -1;
136 static gint ett_ess_ESSSecurityLabel = -1;
137 static gint ett_ess_ESSPrivacyMark = -1;
138 static gint ett_ess_SecurityCategories = -1;
139 static gint ett_ess_SecurityCategory = -1;
140 static gint ett_ess_RestrictiveTag = -1;
141 static gint ett_ess_EnumeratedTag = -1;
142 static gint ett_ess_SET_OF_SecurityAttribute = -1;
143 static gint ett_ess_PermissiveTag = -1;
144 static gint ett_ess_InformativeTag = -1;
145 static gint ett_ess_FreeFormField = -1;
146 static gint ett_ess_EquivalentLabels = -1;
147 static gint ett_ess_MLExpansionHistory = -1;
148 static gint ett_ess_MLData = -1;
149 static gint ett_ess_EntityIdentifier = -1;
150 static gint ett_ess_MLReceiptPolicy = -1;
151 static gint ett_ess_SigningCertificate = -1;
152 static gint ett_ess_SEQUENCE_OF_ESSCertID = -1;
153 static gint ett_ess_SEQUENCE_OF_PolicyInformation = -1;
154 static gint ett_ess_ESSCertID = -1;
155 static gint ett_ess_IssuerSerial = -1;
156
157 /*--- End of included file: packet-ess-ett.c ---*/
158 #line 53 "packet-ess-template.c"
159
160 static const char *object_identifier_id;
161
162
163 /*--- Included file: packet-ess-fn.c ---*/
164 #line 1 "packet-ess-fn.c"
165 /*--- Fields for imported types ---*/
166
167 static int dissect_receiptsTo_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
168   return dissect_x509ce_GeneralNames(FALSE, tvb, offset, pinfo, tree, hf_ess_receiptsTo_item);
169 }
170 static int dissect_receiptList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
171   return dissect_x509ce_GeneralNames(FALSE, tvb, offset, pinfo, tree, hf_ess_receiptList_item);
172 }
173 static int dissect_contentType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
174   return dissect_cms_ContentType(FALSE, tvb, offset, pinfo, tree, hf_ess_contentType);
175 }
176 static int dissect_issuerAndSerialNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
177   return dissect_cms_IssuerAndSerialNumber(FALSE, tvb, offset, pinfo, tree, hf_ess_issuerAndSerialNumber);
178 }
179 static int dissect_subjectKeyIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
180   return dissect_x509ce_SubjectKeyIdentifier(FALSE, tvb, offset, pinfo, tree, hf_ess_subjectKeyIdentifier);
181 }
182 static int dissect_insteadOf_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
183   return dissect_x509ce_GeneralNames(FALSE, tvb, offset, pinfo, tree, hf_ess_insteadOf_item);
184 }
185 static int dissect_inAdditionTo_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
186   return dissect_x509ce_GeneralNames(FALSE, tvb, offset, pinfo, tree, hf_ess_inAdditionTo_item);
187 }
188 static int dissect_policies_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
189   return dissect_x509ce_PolicyInformation(FALSE, tvb, offset, pinfo, tree, hf_ess_policies_item);
190 }
191 static int dissect_issuer(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
192   return dissect_x509ce_GeneralNames(FALSE, tvb, offset, pinfo, tree, hf_ess_issuer);
193 }
194 static int dissect_serialNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
195   return dissect_x509af_CertificateSerialNumber(FALSE, tvb, offset, pinfo, tree, hf_ess_serialNumber);
196 }
197
198
199
200 static int
201 dissect_ess_ContentIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
202   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
203                                        NULL);
204
205   return offset;
206 }
207 static int dissect_signedContentIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
208   return dissect_ess_ContentIdentifier(FALSE, tvb, offset, pinfo, tree, hf_ess_signedContentIdentifier);
209 }
210
211
212 static const value_string ess_AllOrFirstTier_vals[] = {
213   {   0, "allReceipts" },
214   {   1, "firstTierRecipients" },
215   { 0, NULL }
216 };
217
218
219 static int
220 dissect_ess_AllOrFirstTier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
221   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
222                                   NULL);
223
224   return offset;
225 }
226 static int dissect_allOrFirstTier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
227   return dissect_ess_AllOrFirstTier(TRUE, tvb, offset, pinfo, tree, hf_ess_allOrFirstTier);
228 }
229
230
231 static const ber_sequence_t SEQUENCE_OF_GeneralNames_sequence_of[1] = {
232   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_receiptsTo_item },
233 };
234
235 static int
236 dissect_ess_SEQUENCE_OF_GeneralNames(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
237   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
238                                       SEQUENCE_OF_GeneralNames_sequence_of, hf_index, ett_ess_SEQUENCE_OF_GeneralNames);
239
240   return offset;
241 }
242 static int dissect_receiptsTo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
243   return dissect_ess_SEQUENCE_OF_GeneralNames(FALSE, tvb, offset, pinfo, tree, hf_ess_receiptsTo);
244 }
245 static int dissect_receiptList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
246   return dissect_ess_SEQUENCE_OF_GeneralNames(TRUE, tvb, offset, pinfo, tree, hf_ess_receiptList);
247 }
248 static int dissect_insteadOf_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
249   return dissect_ess_SEQUENCE_OF_GeneralNames(TRUE, tvb, offset, pinfo, tree, hf_ess_insteadOf);
250 }
251 static int dissect_inAdditionTo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
252   return dissect_ess_SEQUENCE_OF_GeneralNames(TRUE, tvb, offset, pinfo, tree, hf_ess_inAdditionTo);
253 }
254
255
256 static const value_string ess_ReceiptsFrom_vals[] = {
257   {   0, "allOrFirstTier" },
258   {   1, "receiptList" },
259   { 0, NULL }
260 };
261
262 static const ber_choice_t ReceiptsFrom_choice[] = {
263   {   0, BER_CLASS_CON, 0, 0, dissect_allOrFirstTier_impl },
264   {   1, BER_CLASS_CON, 1, 0, dissect_receiptList_impl },
265   { 0, 0, 0, 0, NULL }
266 };
267
268 static int
269 dissect_ess_ReceiptsFrom(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
270   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
271                                  ReceiptsFrom_choice, hf_index, ett_ess_ReceiptsFrom,
272                                  NULL);
273
274   return offset;
275 }
276 static int dissect_receiptsFrom(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
277   return dissect_ess_ReceiptsFrom(FALSE, tvb, offset, pinfo, tree, hf_ess_receiptsFrom);
278 }
279
280
281 static const ber_sequence_t ReceiptRequest_sequence[] = {
282   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signedContentIdentifier },
283   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_receiptsFrom },
284   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_receiptsTo },
285   { 0, 0, 0, NULL }
286 };
287
288 static int
289 dissect_ess_ReceiptRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
290   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
291                                    ReceiptRequest_sequence, hf_index, ett_ess_ReceiptRequest);
292
293   return offset;
294 }
295
296
297 static const value_string ess_ESSVersion_vals[] = {
298   {   1, "v1" },
299   { 0, NULL }
300 };
301
302
303 static int
304 dissect_ess_ESSVersion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
305   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
306                                   NULL);
307
308   return offset;
309 }
310 static int dissect_version(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
311   return dissect_ess_ESSVersion(FALSE, tvb, offset, pinfo, tree, hf_ess_version);
312 }
313
314
315
316 static int
317 dissect_ess_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
318   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
319                                        NULL);
320
321   return offset;
322 }
323 static int dissect_originatorSignatureValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
324   return dissect_ess_OCTET_STRING(FALSE, tvb, offset, pinfo, tree, hf_ess_originatorSignatureValue);
325 }
326
327
328 static const ber_sequence_t Receipt_sequence[] = {
329   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_version },
330   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_contentType },
331   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signedContentIdentifier },
332   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_originatorSignatureValue },
333   { 0, 0, 0, NULL }
334 };
335
336 static int
337 dissect_ess_Receipt(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
338   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
339                                    Receipt_sequence, hf_index, ett_ess_Receipt);
340
341   return offset;
342 }
343
344
345
346 static int
347 dissect_ess_UTF8String(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
348   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String,
349                                             pinfo, tree, tvb, offset, hf_index,
350                                             NULL);
351
352   return offset;
353 }
354 static int dissect_contentDescription(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
355   return dissect_ess_UTF8String(FALSE, tvb, offset, pinfo, tree, hf_ess_contentDescription);
356 }
357 static int dissect_utf8String(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
358   return dissect_ess_UTF8String(FALSE, tvb, offset, pinfo, tree, hf_ess_utf8String);
359 }
360
361
362 static const ber_sequence_t ContentHints_sequence[] = {
363   { BER_CLASS_UNI, BER_UNI_TAG_UTF8String, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_contentDescription },
364   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_contentType },
365   { 0, 0, 0, NULL }
366 };
367
368 static int
369 dissect_ess_ContentHints(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
370   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
371                                    ContentHints_sequence, hf_index, ett_ess_ContentHints);
372
373   return offset;
374 }
375
376
377
378 static int
379 dissect_ess_MsgSigDigest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
380   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
381                                        NULL);
382
383   return offset;
384 }
385
386
387 static const ber_sequence_t ContentReference_sequence[] = {
388   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_contentType },
389   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signedContentIdentifier },
390   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_originatorSignatureValue },
391   { 0, 0, 0, NULL }
392 };
393
394 static int
395 dissect_ess_ContentReference(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
396   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
397                                    ContentReference_sequence, hf_index, ett_ess_ContentReference);
398
399   return offset;
400 }
401
402
403
404 static int
405 dissect_ess_SecurityPolicyIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
406   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
407
408   return offset;
409 }
410 static int dissect_security_policy_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
411   return dissect_ess_SecurityPolicyIdentifier(FALSE, tvb, offset, pinfo, tree, hf_ess_security_policy_identifier);
412 }
413
414
415 static const value_string ess_SecurityClassification_vals[] = {
416   {   0, "unmarked" },
417   {   1, "unclassified" },
418   {   2, "restricted" },
419   {   3, "confidential" },
420   {   4, "secret" },
421   {   5, "top-secret" },
422   { 0, NULL }
423 };
424
425
426 static int
427 dissect_ess_SecurityClassification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
428   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
429                                   NULL);
430
431   return offset;
432 }
433 static int dissect_security_classification(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
434   return dissect_ess_SecurityClassification(FALSE, tvb, offset, pinfo, tree, hf_ess_security_classification);
435 }
436
437
438
439 static int
440 dissect_ess_PrintableString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
441   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
442                                             pinfo, tree, tvb, offset, hf_index,
443                                             NULL);
444
445   return offset;
446 }
447 static int dissect_pString(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
448   return dissect_ess_PrintableString(FALSE, tvb, offset, pinfo, tree, hf_ess_pString);
449 }
450
451
452 static const value_string ess_ESSPrivacyMark_vals[] = {
453   {   0, "pString" },
454   {   1, "utf8String" },
455   { 0, NULL }
456 };
457
458 static const ber_choice_t ESSPrivacyMark_choice[] = {
459   {   0, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_pString },
460   {   1, BER_CLASS_UNI, BER_UNI_TAG_UTF8String, BER_FLAGS_NOOWNTAG, dissect_utf8String },
461   { 0, 0, 0, 0, NULL }
462 };
463
464 static int
465 dissect_ess_ESSPrivacyMark(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
466   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
467                                  ESSPrivacyMark_choice, hf_index, ett_ess_ESSPrivacyMark,
468                                  NULL);
469
470   return offset;
471 }
472 static int dissect_privacy_mark(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
473   return dissect_ess_ESSPrivacyMark(FALSE, tvb, offset, pinfo, tree, hf_ess_privacy_mark);
474 }
475
476
477
478 static int
479 dissect_ess_T_type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
480   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_ess_SecurityCategory_type_OID, &object_identifier_id);
481
482   return offset;
483 }
484 static int dissect_type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
485   return dissect_ess_T_type(TRUE, tvb, offset, pinfo, tree, hf_ess_type);
486 }
487
488
489
490 static int
491 dissect_ess_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
492 #line 47 "ess.cnf"
493   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
494
495
496
497   return offset;
498 }
499 static int dissect_value(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
500   return dissect_ess_T_value(FALSE, tvb, offset, pinfo, tree, hf_ess_value);
501 }
502
503
504 static const ber_sequence_t SecurityCategory_sequence[] = {
505   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_type_impl },
506   { BER_CLASS_CON, 1, 0, dissect_value },
507   { 0, 0, 0, NULL }
508 };
509
510 static int
511 dissect_ess_SecurityCategory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
512   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
513                                    SecurityCategory_sequence, hf_index, ett_ess_SecurityCategory);
514
515   return offset;
516 }
517 static int dissect_SecurityCategories_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
518   return dissect_ess_SecurityCategory(FALSE, tvb, offset, pinfo, tree, hf_ess_SecurityCategories_item);
519 }
520
521
522 static const ber_sequence_t SecurityCategories_set_of[1] = {
523   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_SecurityCategories_item },
524 };
525
526 static int
527 dissect_ess_SecurityCategories(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
528   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
529                                  SecurityCategories_set_of, hf_index, ett_ess_SecurityCategories);
530
531   return offset;
532 }
533 static int dissect_security_categories(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
534   return dissect_ess_SecurityCategories(FALSE, tvb, offset, pinfo, tree, hf_ess_security_categories);
535 }
536
537
538 static const ber_sequence_t ESSSecurityLabel_set[] = {
539   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_security_policy_identifier },
540   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_security_classification },
541   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_privacy_mark },
542   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_security_categories },
543   { 0, 0, 0, NULL }
544 };
545
546 static int
547 dissect_ess_ESSSecurityLabel(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
548   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
549                               ESSSecurityLabel_set, hf_index, ett_ess_ESSSecurityLabel);
550
551   return offset;
552 }
553 static int dissect_EquivalentLabels_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
554   return dissect_ess_ESSSecurityLabel(FALSE, tvb, offset, pinfo, tree, hf_ess_EquivalentLabels_item);
555 }
556
557
558
559 static int
560 dissect_ess_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
561   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
562
563   return offset;
564 }
565 static int dissect_tagName(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
566   return dissect_ess_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_ess_tagName);
567 }
568
569
570
571 static int
572 dissect_ess_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
573   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
574                                     NULL, hf_index, -1,
575                                     NULL);
576
577   return offset;
578 }
579 static int dissect_attributeFlags(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
580   return dissect_ess_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_ess_attributeFlags);
581 }
582 static int dissect_bitSetAttributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
583   return dissect_ess_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_ess_bitSetAttributes);
584 }
585
586
587 static const ber_sequence_t RestrictiveTag_sequence[] = {
588   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_tagName },
589   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_attributeFlags },
590   { 0, 0, 0, NULL }
591 };
592
593 static int
594 dissect_ess_RestrictiveTag(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
595   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
596                                    RestrictiveTag_sequence, hf_index, ett_ess_RestrictiveTag);
597
598   return offset;
599 }
600
601
602
603 static int
604 dissect_ess_SecurityAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
605   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
606                                   NULL);
607
608   return offset;
609 }
610 static int dissect_attributeList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
611   return dissect_ess_SecurityAttribute(FALSE, tvb, offset, pinfo, tree, hf_ess_attributeList_item);
612 }
613 static int dissect_securityAttributes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
614   return dissect_ess_SecurityAttribute(FALSE, tvb, offset, pinfo, tree, hf_ess_securityAttributes_item);
615 }
616
617
618 static const ber_sequence_t SET_OF_SecurityAttribute_set_of[1] = {
619   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_attributeList_item },
620 };
621
622 static int
623 dissect_ess_SET_OF_SecurityAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
624   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
625                                  SET_OF_SecurityAttribute_set_of, hf_index, ett_ess_SET_OF_SecurityAttribute);
626
627   return offset;
628 }
629 static int dissect_attributeList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
630   return dissect_ess_SET_OF_SecurityAttribute(FALSE, tvb, offset, pinfo, tree, hf_ess_attributeList);
631 }
632 static int dissect_securityAttributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
633   return dissect_ess_SET_OF_SecurityAttribute(FALSE, tvb, offset, pinfo, tree, hf_ess_securityAttributes);
634 }
635
636
637 static const ber_sequence_t EnumeratedTag_sequence[] = {
638   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_tagName },
639   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_attributeList },
640   { 0, 0, 0, NULL }
641 };
642
643 static int
644 dissect_ess_EnumeratedTag(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
645   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
646                                    EnumeratedTag_sequence, hf_index, ett_ess_EnumeratedTag);
647
648   return offset;
649 }
650
651
652 static const ber_sequence_t PermissiveTag_sequence[] = {
653   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_tagName },
654   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_attributeFlags },
655   { 0, 0, 0, NULL }
656 };
657
658 static int
659 dissect_ess_PermissiveTag(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
660   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
661                                    PermissiveTag_sequence, hf_index, ett_ess_PermissiveTag);
662
663   return offset;
664 }
665
666
667 static const value_string ess_FreeFormField_vals[] = {
668   {   0, "bitSetAttributes" },
669   {   1, "securityAttributes" },
670   { 0, NULL }
671 };
672
673 static const ber_choice_t FreeFormField_choice[] = {
674   {   0, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_bitSetAttributes },
675   {   1, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_securityAttributes },
676   { 0, 0, 0, 0, NULL }
677 };
678
679 static int
680 dissect_ess_FreeFormField(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
681   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
682                                  FreeFormField_choice, hf_index, ett_ess_FreeFormField,
683                                  NULL);
684
685   return offset;
686 }
687 static int dissect_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
688   return dissect_ess_FreeFormField(FALSE, tvb, offset, pinfo, tree, hf_ess_attributes);
689 }
690
691
692 static const ber_sequence_t InformativeTag_sequence[] = {
693   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_tagName },
694   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_attributes },
695   { 0, 0, 0, NULL }
696 };
697
698 static int
699 dissect_ess_InformativeTag(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
700   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
701                                    InformativeTag_sequence, hf_index, ett_ess_InformativeTag);
702
703   return offset;
704 }
705
706
707 static const ber_sequence_t EquivalentLabels_sequence_of[1] = {
708   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_EquivalentLabels_item },
709 };
710
711 static int
712 dissect_ess_EquivalentLabels(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
713   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
714                                       EquivalentLabels_sequence_of, hf_index, ett_ess_EquivalentLabels);
715
716   return offset;
717 }
718
719
720 static const value_string ess_EntityIdentifier_vals[] = {
721   {   0, "issuerAndSerialNumber" },
722   {   1, "subjectKeyIdentifier" },
723   { 0, NULL }
724 };
725
726 static const ber_choice_t EntityIdentifier_choice[] = {
727   {   0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_issuerAndSerialNumber },
728   {   1, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_subjectKeyIdentifier },
729   { 0, 0, 0, 0, NULL }
730 };
731
732 static int
733 dissect_ess_EntityIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
734   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
735                                  EntityIdentifier_choice, hf_index, ett_ess_EntityIdentifier,
736                                  NULL);
737
738   return offset;
739 }
740 static int dissect_mailListIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
741   return dissect_ess_EntityIdentifier(FALSE, tvb, offset, pinfo, tree, hf_ess_mailListIdentifier);
742 }
743
744
745
746 static int
747 dissect_ess_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
748   offset = dissect_ber_GeneralizedTime(implicit_tag, pinfo, tree, tvb, offset, hf_index);
749
750   return offset;
751 }
752 static int dissect_expansionTime(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
753   return dissect_ess_GeneralizedTime(FALSE, tvb, offset, pinfo, tree, hf_ess_expansionTime);
754 }
755
756
757
758 static int
759 dissect_ess_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
760   offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
761
762   return offset;
763 }
764 static int dissect_none_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
765   return dissect_ess_NULL(TRUE, tvb, offset, pinfo, tree, hf_ess_none);
766 }
767
768
769 static const value_string ess_MLReceiptPolicy_vals[] = {
770   {   0, "none" },
771   {   1, "insteadOf" },
772   {   2, "inAdditionTo" },
773   { 0, NULL }
774 };
775
776 static const ber_choice_t MLReceiptPolicy_choice[] = {
777   {   0, BER_CLASS_CON, 0, 0, dissect_none_impl },
778   {   1, BER_CLASS_CON, 1, 0, dissect_insteadOf_impl },
779   {   2, BER_CLASS_CON, 2, 0, dissect_inAdditionTo_impl },
780   { 0, 0, 0, 0, NULL }
781 };
782
783 static int
784 dissect_ess_MLReceiptPolicy(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
785   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
786                                  MLReceiptPolicy_choice, hf_index, ett_ess_MLReceiptPolicy,
787                                  NULL);
788
789   return offset;
790 }
791 static int dissect_mlReceiptPolicy(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
792   return dissect_ess_MLReceiptPolicy(FALSE, tvb, offset, pinfo, tree, hf_ess_mlReceiptPolicy);
793 }
794
795
796 static const ber_sequence_t MLData_sequence[] = {
797   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mailListIdentifier },
798   { BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_expansionTime },
799   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mlReceiptPolicy },
800   { 0, 0, 0, NULL }
801 };
802
803 static int
804 dissect_ess_MLData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
805   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
806                                    MLData_sequence, hf_index, ett_ess_MLData);
807
808   return offset;
809 }
810 static int dissect_MLExpansionHistory_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
811   return dissect_ess_MLData(FALSE, tvb, offset, pinfo, tree, hf_ess_MLExpansionHistory_item);
812 }
813
814
815 static const ber_sequence_t MLExpansionHistory_sequence_of[1] = {
816   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_MLExpansionHistory_item },
817 };
818
819 static int
820 dissect_ess_MLExpansionHistory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
821   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
822                                       MLExpansionHistory_sequence_of, hf_index, ett_ess_MLExpansionHistory);
823
824   return offset;
825 }
826
827
828
829 static int
830 dissect_ess_Hash(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
831   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
832                                        NULL);
833
834   return offset;
835 }
836 static int dissect_certHash(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
837   return dissect_ess_Hash(FALSE, tvb, offset, pinfo, tree, hf_ess_certHash);
838 }
839
840
841 static const ber_sequence_t IssuerSerial_sequence[] = {
842   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_issuer },
843   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serialNumber },
844   { 0, 0, 0, NULL }
845 };
846
847 static int
848 dissect_ess_IssuerSerial(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
849   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
850                                    IssuerSerial_sequence, hf_index, ett_ess_IssuerSerial);
851
852   return offset;
853 }
854 static int dissect_issuerSerial(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
855   return dissect_ess_IssuerSerial(FALSE, tvb, offset, pinfo, tree, hf_ess_issuerSerial);
856 }
857
858
859 static const ber_sequence_t ESSCertID_sequence[] = {
860   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_certHash },
861   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_issuerSerial },
862   { 0, 0, 0, NULL }
863 };
864
865 static int
866 dissect_ess_ESSCertID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
867   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
868                                    ESSCertID_sequence, hf_index, ett_ess_ESSCertID);
869
870   return offset;
871 }
872 static int dissect_certs_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
873   return dissect_ess_ESSCertID(FALSE, tvb, offset, pinfo, tree, hf_ess_certs_item);
874 }
875
876
877 static const ber_sequence_t SEQUENCE_OF_ESSCertID_sequence_of[1] = {
878   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_certs_item },
879 };
880
881 static int
882 dissect_ess_SEQUENCE_OF_ESSCertID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
883   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
884                                       SEQUENCE_OF_ESSCertID_sequence_of, hf_index, ett_ess_SEQUENCE_OF_ESSCertID);
885
886   return offset;
887 }
888 static int dissect_certs(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
889   return dissect_ess_SEQUENCE_OF_ESSCertID(FALSE, tvb, offset, pinfo, tree, hf_ess_certs);
890 }
891
892
893 static const ber_sequence_t SEQUENCE_OF_PolicyInformation_sequence_of[1] = {
894   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_policies_item },
895 };
896
897 static int
898 dissect_ess_SEQUENCE_OF_PolicyInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
899   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
900                                       SEQUENCE_OF_PolicyInformation_sequence_of, hf_index, ett_ess_SEQUENCE_OF_PolicyInformation);
901
902   return offset;
903 }
904 static int dissect_policies(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
905   return dissect_ess_SEQUENCE_OF_PolicyInformation(FALSE, tvb, offset, pinfo, tree, hf_ess_policies);
906 }
907
908
909 static const ber_sequence_t SigningCertificate_sequence[] = {
910   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_certs },
911   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_policies },
912   { 0, 0, 0, NULL }
913 };
914
915 static int
916 dissect_ess_SigningCertificate(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
917   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
918                                    SigningCertificate_sequence, hf_index, ett_ess_SigningCertificate);
919
920   return offset;
921 }
922
923 /*--- PDUs ---*/
924
925 static void dissect_ReceiptRequest_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
926   dissect_ess_ReceiptRequest(FALSE, tvb, 0, pinfo, tree, hf_ess_ReceiptRequest_PDU);
927 }
928 static void dissect_ContentIdentifier_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
929   dissect_ess_ContentIdentifier(FALSE, tvb, 0, pinfo, tree, hf_ess_ContentIdentifier_PDU);
930 }
931 static void dissect_Receipt_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
932   dissect_ess_Receipt(FALSE, tvb, 0, pinfo, tree, hf_ess_Receipt_PDU);
933 }
934 static void dissect_ContentHints_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
935   dissect_ess_ContentHints(FALSE, tvb, 0, pinfo, tree, hf_ess_ContentHints_PDU);
936 }
937 static void dissect_MsgSigDigest_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
938   dissect_ess_MsgSigDigest(FALSE, tvb, 0, pinfo, tree, hf_ess_MsgSigDigest_PDU);
939 }
940 static void dissect_ContentReference_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
941   dissect_ess_ContentReference(FALSE, tvb, 0, pinfo, tree, hf_ess_ContentReference_PDU);
942 }
943 static void dissect_ESSSecurityLabel_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
944   dissect_ess_ESSSecurityLabel(FALSE, tvb, 0, pinfo, tree, hf_ess_ESSSecurityLabel_PDU);
945 }
946 static void dissect_RestrictiveTag_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
947   dissect_ess_RestrictiveTag(FALSE, tvb, 0, pinfo, tree, hf_ess_RestrictiveTag_PDU);
948 }
949 static void dissect_EnumeratedTag_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
950   dissect_ess_EnumeratedTag(FALSE, tvb, 0, pinfo, tree, hf_ess_EnumeratedTag_PDU);
951 }
952 static void dissect_PermissiveTag_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
953   dissect_ess_PermissiveTag(FALSE, tvb, 0, pinfo, tree, hf_ess_PermissiveTag_PDU);
954 }
955 static void dissect_InformativeTag_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
956   dissect_ess_InformativeTag(FALSE, tvb, 0, pinfo, tree, hf_ess_InformativeTag_PDU);
957 }
958 static void dissect_EquivalentLabels_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
959   dissect_ess_EquivalentLabels(FALSE, tvb, 0, pinfo, tree, hf_ess_EquivalentLabels_PDU);
960 }
961 static void dissect_MLExpansionHistory_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
962   dissect_ess_MLExpansionHistory(FALSE, tvb, 0, pinfo, tree, hf_ess_MLExpansionHistory_PDU);
963 }
964 static void dissect_SigningCertificate_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
965   dissect_ess_SigningCertificate(FALSE, tvb, 0, pinfo, tree, hf_ess_SigningCertificate_PDU);
966 }
967
968
969 /*--- End of included file: packet-ess-fn.c ---*/
970 #line 57 "packet-ess-template.c"
971
972
973 /*--- proto_register_ess ----------------------------------------------*/
974 void proto_register_ess(void) {
975
976   /* List of fields */
977   static hf_register_info hf[] = {
978     { &hf_ess_SecurityCategory_type_OID, 
979       { "type", "ess.type_OID", FT_STRING, BASE_NONE, NULL, 0,
980         "Type of Security Category", HFILL }},
981
982 /*--- Included file: packet-ess-hfarr.c ---*/
983 #line 1 "packet-ess-hfarr.c"
984     { &hf_ess_ReceiptRequest_PDU,
985       { "ReceiptRequest", "ess.ReceiptRequest",
986         FT_NONE, BASE_NONE, NULL, 0,
987         "ReceiptRequest", HFILL }},
988     { &hf_ess_ContentIdentifier_PDU,
989       { "ContentIdentifier", "ess.ContentIdentifier",
990         FT_BYTES, BASE_HEX, NULL, 0,
991         "ContentIdentifier", HFILL }},
992     { &hf_ess_Receipt_PDU,
993       { "Receipt", "ess.Receipt",
994         FT_NONE, BASE_NONE, NULL, 0,
995         "Receipt", HFILL }},
996     { &hf_ess_ContentHints_PDU,
997       { "ContentHints", "ess.ContentHints",
998         FT_NONE, BASE_NONE, NULL, 0,
999         "ContentHints", HFILL }},
1000     { &hf_ess_MsgSigDigest_PDU,
1001       { "MsgSigDigest", "ess.MsgSigDigest",
1002         FT_BYTES, BASE_HEX, NULL, 0,
1003         "MsgSigDigest", HFILL }},
1004     { &hf_ess_ContentReference_PDU,
1005       { "ContentReference", "ess.ContentReference",
1006         FT_NONE, BASE_NONE, NULL, 0,
1007         "ContentReference", HFILL }},
1008     { &hf_ess_ESSSecurityLabel_PDU,
1009       { "ESSSecurityLabel", "ess.ESSSecurityLabel",
1010         FT_NONE, BASE_NONE, NULL, 0,
1011         "ESSSecurityLabel", HFILL }},
1012     { &hf_ess_RestrictiveTag_PDU,
1013       { "RestrictiveTag", "ess.RestrictiveTag",
1014         FT_NONE, BASE_NONE, NULL, 0,
1015         "RestrictiveTag", HFILL }},
1016     { &hf_ess_EnumeratedTag_PDU,
1017       { "EnumeratedTag", "ess.EnumeratedTag",
1018         FT_NONE, BASE_NONE, NULL, 0,
1019         "EnumeratedTag", HFILL }},
1020     { &hf_ess_PermissiveTag_PDU,
1021       { "PermissiveTag", "ess.PermissiveTag",
1022         FT_NONE, BASE_NONE, NULL, 0,
1023         "PermissiveTag", HFILL }},
1024     { &hf_ess_InformativeTag_PDU,
1025       { "InformativeTag", "ess.InformativeTag",
1026         FT_NONE, BASE_NONE, NULL, 0,
1027         "InformativeTag", HFILL }},
1028     { &hf_ess_EquivalentLabels_PDU,
1029       { "EquivalentLabels", "ess.EquivalentLabels",
1030         FT_UINT32, BASE_DEC, NULL, 0,
1031         "EquivalentLabels", HFILL }},
1032     { &hf_ess_MLExpansionHistory_PDU,
1033       { "MLExpansionHistory", "ess.MLExpansionHistory",
1034         FT_UINT32, BASE_DEC, NULL, 0,
1035         "MLExpansionHistory", HFILL }},
1036     { &hf_ess_SigningCertificate_PDU,
1037       { "SigningCertificate", "ess.SigningCertificate",
1038         FT_NONE, BASE_NONE, NULL, 0,
1039         "SigningCertificate", HFILL }},
1040     { &hf_ess_signedContentIdentifier,
1041       { "signedContentIdentifier", "ess.signedContentIdentifier",
1042         FT_BYTES, BASE_HEX, NULL, 0,
1043         "", HFILL }},
1044     { &hf_ess_receiptsFrom,
1045       { "receiptsFrom", "ess.receiptsFrom",
1046         FT_UINT32, BASE_DEC, VALS(ess_ReceiptsFrom_vals), 0,
1047         "ReceiptRequest/receiptsFrom", HFILL }},
1048     { &hf_ess_receiptsTo,
1049       { "receiptsTo", "ess.receiptsTo",
1050         FT_UINT32, BASE_DEC, NULL, 0,
1051         "ReceiptRequest/receiptsTo", HFILL }},
1052     { &hf_ess_receiptsTo_item,
1053       { "Item", "ess.receiptsTo_item",
1054         FT_UINT32, BASE_DEC, NULL, 0,
1055         "ReceiptRequest/receiptsTo/_item", HFILL }},
1056     { &hf_ess_allOrFirstTier,
1057       { "allOrFirstTier", "ess.allOrFirstTier",
1058         FT_INT32, BASE_DEC, VALS(ess_AllOrFirstTier_vals), 0,
1059         "ReceiptsFrom/allOrFirstTier", HFILL }},
1060     { &hf_ess_receiptList,
1061       { "receiptList", "ess.receiptList",
1062         FT_UINT32, BASE_DEC, NULL, 0,
1063         "ReceiptsFrom/receiptList", HFILL }},
1064     { &hf_ess_receiptList_item,
1065       { "Item", "ess.receiptList_item",
1066         FT_UINT32, BASE_DEC, NULL, 0,
1067         "ReceiptsFrom/receiptList/_item", HFILL }},
1068     { &hf_ess_version,
1069       { "version", "ess.version",
1070         FT_INT32, BASE_DEC, VALS(ess_ESSVersion_vals), 0,
1071         "Receipt/version", HFILL }},
1072     { &hf_ess_contentType,
1073       { "contentType", "ess.contentType",
1074         FT_OID, BASE_NONE, NULL, 0,
1075         "", HFILL }},
1076     { &hf_ess_originatorSignatureValue,
1077       { "originatorSignatureValue", "ess.originatorSignatureValue",
1078         FT_BYTES, BASE_HEX, NULL, 0,
1079         "", HFILL }},
1080     { &hf_ess_contentDescription,
1081       { "contentDescription", "ess.contentDescription",
1082         FT_STRING, BASE_NONE, NULL, 0,
1083         "ContentHints/contentDescription", HFILL }},
1084     { &hf_ess_security_policy_identifier,
1085       { "security-policy-identifier", "ess.security_policy_identifier",
1086         FT_OID, BASE_NONE, NULL, 0,
1087         "ESSSecurityLabel/security-policy-identifier", HFILL }},
1088     { &hf_ess_security_classification,
1089       { "security-classification", "ess.security_classification",
1090         FT_INT32, BASE_DEC, VALS(ess_SecurityClassification_vals), 0,
1091         "ESSSecurityLabel/security-classification", HFILL }},
1092     { &hf_ess_privacy_mark,
1093       { "privacy-mark", "ess.privacy_mark",
1094         FT_UINT32, BASE_DEC, VALS(ess_ESSPrivacyMark_vals), 0,
1095         "ESSSecurityLabel/privacy-mark", HFILL }},
1096     { &hf_ess_security_categories,
1097       { "security-categories", "ess.security_categories",
1098         FT_UINT32, BASE_DEC, NULL, 0,
1099         "ESSSecurityLabel/security-categories", HFILL }},
1100     { &hf_ess_pString,
1101       { "pString", "ess.pString",
1102         FT_STRING, BASE_NONE, NULL, 0,
1103         "ESSPrivacyMark/pString", HFILL }},
1104     { &hf_ess_utf8String,
1105       { "utf8String", "ess.utf8String",
1106         FT_STRING, BASE_NONE, NULL, 0,
1107         "ESSPrivacyMark/utf8String", HFILL }},
1108     { &hf_ess_SecurityCategories_item,
1109       { "Item", "ess.SecurityCategories_item",
1110         FT_NONE, BASE_NONE, NULL, 0,
1111         "SecurityCategories/_item", HFILL }},
1112     { &hf_ess_type,
1113       { "type", "ess.type",
1114         FT_OID, BASE_NONE, NULL, 0,
1115         "SecurityCategory/type", HFILL }},
1116     { &hf_ess_value,
1117       { "value", "ess.value",
1118         FT_NONE, BASE_NONE, NULL, 0,
1119         "SecurityCategory/value", HFILL }},
1120     { &hf_ess_tagName,
1121       { "tagName", "ess.tagName",
1122         FT_OID, BASE_NONE, NULL, 0,
1123         "", HFILL }},
1124     { &hf_ess_attributeFlags,
1125       { "attributeFlags", "ess.attributeFlags",
1126         FT_BYTES, BASE_HEX, NULL, 0,
1127         "", HFILL }},
1128     { &hf_ess_attributeList,
1129       { "attributeList", "ess.attributeList",
1130         FT_UINT32, BASE_DEC, NULL, 0,
1131         "EnumeratedTag/attributeList", HFILL }},
1132     { &hf_ess_attributeList_item,
1133       { "Item", "ess.attributeList_item",
1134         FT_INT32, BASE_DEC, NULL, 0,
1135         "EnumeratedTag/attributeList/_item", HFILL }},
1136     { &hf_ess_attributes,
1137       { "attributes", "ess.attributes",
1138         FT_UINT32, BASE_DEC, VALS(ess_FreeFormField_vals), 0,
1139         "InformativeTag/attributes", HFILL }},
1140     { &hf_ess_bitSetAttributes,
1141       { "bitSetAttributes", "ess.bitSetAttributes",
1142         FT_BYTES, BASE_HEX, NULL, 0,
1143         "FreeFormField/bitSetAttributes", HFILL }},
1144     { &hf_ess_securityAttributes,
1145       { "securityAttributes", "ess.securityAttributes",
1146         FT_UINT32, BASE_DEC, NULL, 0,
1147         "FreeFormField/securityAttributes", HFILL }},
1148     { &hf_ess_securityAttributes_item,
1149       { "Item", "ess.securityAttributes_item",
1150         FT_INT32, BASE_DEC, NULL, 0,
1151         "FreeFormField/securityAttributes/_item", HFILL }},
1152     { &hf_ess_EquivalentLabels_item,
1153       { "Item", "ess.EquivalentLabels_item",
1154         FT_NONE, BASE_NONE, NULL, 0,
1155         "EquivalentLabels/_item", HFILL }},
1156     { &hf_ess_MLExpansionHistory_item,
1157       { "Item", "ess.MLExpansionHistory_item",
1158         FT_NONE, BASE_NONE, NULL, 0,
1159         "MLExpansionHistory/_item", HFILL }},
1160     { &hf_ess_mailListIdentifier,
1161       { "mailListIdentifier", "ess.mailListIdentifier",
1162         FT_UINT32, BASE_DEC, VALS(ess_EntityIdentifier_vals), 0,
1163         "MLData/mailListIdentifier", HFILL }},
1164     { &hf_ess_expansionTime,
1165       { "expansionTime", "ess.expansionTime",
1166         FT_STRING, BASE_NONE, NULL, 0,
1167         "MLData/expansionTime", HFILL }},
1168     { &hf_ess_mlReceiptPolicy,
1169       { "mlReceiptPolicy", "ess.mlReceiptPolicy",
1170         FT_UINT32, BASE_DEC, VALS(ess_MLReceiptPolicy_vals), 0,
1171         "MLData/mlReceiptPolicy", HFILL }},
1172     { &hf_ess_issuerAndSerialNumber,
1173       { "issuerAndSerialNumber", "ess.issuerAndSerialNumber",
1174         FT_NONE, BASE_NONE, NULL, 0,
1175         "EntityIdentifier/issuerAndSerialNumber", HFILL }},
1176     { &hf_ess_subjectKeyIdentifier,
1177       { "subjectKeyIdentifier", "ess.subjectKeyIdentifier",
1178         FT_BYTES, BASE_HEX, NULL, 0,
1179         "EntityIdentifier/subjectKeyIdentifier", HFILL }},
1180     { &hf_ess_none,
1181       { "none", "ess.none",
1182         FT_NONE, BASE_NONE, NULL, 0,
1183         "MLReceiptPolicy/none", HFILL }},
1184     { &hf_ess_insteadOf,
1185       { "insteadOf", "ess.insteadOf",
1186         FT_UINT32, BASE_DEC, NULL, 0,
1187         "MLReceiptPolicy/insteadOf", HFILL }},
1188     { &hf_ess_insteadOf_item,
1189       { "Item", "ess.insteadOf_item",
1190         FT_UINT32, BASE_DEC, NULL, 0,
1191         "MLReceiptPolicy/insteadOf/_item", HFILL }},
1192     { &hf_ess_inAdditionTo,
1193       { "inAdditionTo", "ess.inAdditionTo",
1194         FT_UINT32, BASE_DEC, NULL, 0,
1195         "MLReceiptPolicy/inAdditionTo", HFILL }},
1196     { &hf_ess_inAdditionTo_item,
1197       { "Item", "ess.inAdditionTo_item",
1198         FT_UINT32, BASE_DEC, NULL, 0,
1199         "MLReceiptPolicy/inAdditionTo/_item", HFILL }},
1200     { &hf_ess_certs,
1201       { "certs", "ess.certs",
1202         FT_UINT32, BASE_DEC, NULL, 0,
1203         "SigningCertificate/certs", HFILL }},
1204     { &hf_ess_certs_item,
1205       { "Item", "ess.certs_item",
1206         FT_NONE, BASE_NONE, NULL, 0,
1207         "SigningCertificate/certs/_item", HFILL }},
1208     { &hf_ess_policies,
1209       { "policies", "ess.policies",
1210         FT_UINT32, BASE_DEC, NULL, 0,
1211         "SigningCertificate/policies", HFILL }},
1212     { &hf_ess_policies_item,
1213       { "Item", "ess.policies_item",
1214         FT_NONE, BASE_NONE, NULL, 0,
1215         "SigningCertificate/policies/_item", HFILL }},
1216     { &hf_ess_certHash,
1217       { "certHash", "ess.certHash",
1218         FT_BYTES, BASE_HEX, NULL, 0,
1219         "ESSCertID/certHash", HFILL }},
1220     { &hf_ess_issuerSerial,
1221       { "issuerSerial", "ess.issuerSerial",
1222         FT_NONE, BASE_NONE, NULL, 0,
1223         "ESSCertID/issuerSerial", HFILL }},
1224     { &hf_ess_issuer,
1225       { "issuer", "ess.issuer",
1226         FT_UINT32, BASE_DEC, NULL, 0,
1227         "IssuerSerial/issuer", HFILL }},
1228     { &hf_ess_serialNumber,
1229       { "serialNumber", "ess.serialNumber",
1230         FT_INT32, BASE_DEC, NULL, 0,
1231         "IssuerSerial/serialNumber", HFILL }},
1232
1233 /*--- End of included file: packet-ess-hfarr.c ---*/
1234 #line 68 "packet-ess-template.c"
1235   };
1236
1237   /* List of subtrees */
1238   static gint *ett[] = {
1239
1240 /*--- Included file: packet-ess-ettarr.c ---*/
1241 #line 1 "packet-ess-ettarr.c"
1242     &ett_ess_ReceiptRequest,
1243     &ett_ess_SEQUENCE_OF_GeneralNames,
1244     &ett_ess_ReceiptsFrom,
1245     &ett_ess_Receipt,
1246     &ett_ess_ContentHints,
1247     &ett_ess_ContentReference,
1248     &ett_ess_ESSSecurityLabel,
1249     &ett_ess_ESSPrivacyMark,
1250     &ett_ess_SecurityCategories,
1251     &ett_ess_SecurityCategory,
1252     &ett_ess_RestrictiveTag,
1253     &ett_ess_EnumeratedTag,
1254     &ett_ess_SET_OF_SecurityAttribute,
1255     &ett_ess_PermissiveTag,
1256     &ett_ess_InformativeTag,
1257     &ett_ess_FreeFormField,
1258     &ett_ess_EquivalentLabels,
1259     &ett_ess_MLExpansionHistory,
1260     &ett_ess_MLData,
1261     &ett_ess_EntityIdentifier,
1262     &ett_ess_MLReceiptPolicy,
1263     &ett_ess_SigningCertificate,
1264     &ett_ess_SEQUENCE_OF_ESSCertID,
1265     &ett_ess_SEQUENCE_OF_PolicyInformation,
1266     &ett_ess_ESSCertID,
1267     &ett_ess_IssuerSerial,
1268
1269 /*--- End of included file: packet-ess-ettarr.c ---*/
1270 #line 73 "packet-ess-template.c"
1271   };
1272
1273   /* Register protocol */
1274   proto_ess = proto_register_protocol(PNAME, PSNAME, PFNAME);
1275
1276   /* Register fields and subtrees */
1277   proto_register_field_array(proto_ess, hf, array_length(hf));
1278   proto_register_subtree_array(ett, array_length(ett));
1279
1280 }
1281
1282
1283 /*--- proto_reg_handoff_ess -------------------------------------------*/
1284 void proto_reg_handoff_ess(void) {
1285
1286 /*--- Included file: packet-ess-dis-tab.c ---*/
1287 #line 1 "packet-ess-dis-tab.c"
1288   register_ber_oid_dissector("1.2.840.113549.1.9.16.2.1", dissect_ReceiptRequest_PDU, proto_ess, "id-aa-receiptRequest");
1289   register_ber_oid_dissector("1.2.840.113549.1.9.16.2.7", dissect_ContentIdentifier_PDU, proto_ess, "id-aa-contentIdentifier");
1290   register_ber_oid_dissector("1.2.840.113549.1.9.16.1.1", dissect_Receipt_PDU, proto_ess, "id-ct-receipt");
1291   register_ber_oid_dissector("1.2.840.113549.1.9.16.2.4", dissect_ContentHints_PDU, proto_ess, "id-aa-contentHint");
1292   register_ber_oid_dissector("1.2.840.113549.1.9.16.2.5", dissect_MsgSigDigest_PDU, proto_ess, "id-aa-msgSigDigest");
1293   register_ber_oid_dissector("1.2.840.113549.1.9.16.2.10", dissect_ContentReference_PDU, proto_ess, "id-aa-contentReference");
1294   register_ber_oid_dissector("1.2.840.113549.1.9.16.2.2", dissect_ESSSecurityLabel_PDU, proto_ess, "id-aa-securityLabel");
1295   register_ber_oid_dissector("1.2.840.113549.1.9.16.2.9", dissect_EquivalentLabels_PDU, proto_ess, "id-aa-equivalentLabels");
1296   register_ber_oid_dissector("1.2.840.113549.1.9.16.2.3", dissect_MLExpansionHistory_PDU, proto_ess, "id-aa-mlExpandHistory");
1297   register_ber_oid_dissector("1.2.840.113549.1.9.16.2.12", dissect_SigningCertificate_PDU, proto_ess, "id-aa-signingCertificate");
1298   register_ber_oid_dissector("2.16.840.1.101.2.1.8.3.0", dissect_RestrictiveTag_PDU, proto_ess, "id-restrictiveAttributes");
1299   register_ber_oid_dissector("2.16.840.1.101.2.1.8.3.1", dissect_EnumeratedTag_PDU, proto_ess, "id-enumeratedPermissiveAttributes");
1300   register_ber_oid_dissector("2.16.840.1.101.2.1.8.3.2", dissect_PermissiveTag_PDU, proto_ess, "id-restrictiveAttributes");
1301   register_ber_oid_dissector("2.16.840.1.101.2.1.8.3.3", dissect_InformativeTag_PDU, proto_ess, "id-informativeAttributes");
1302   register_ber_oid_dissector("2.16.840.1.101.2.1.8.3.4", dissect_EnumeratedTag_PDU, proto_ess, "id-enumeratedRestrictiveAttributes");
1303
1304
1305 /*--- End of included file: packet-ess-dis-tab.c ---*/
1306 #line 88 "packet-ess-template.c"
1307 }
1308