summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/ieee1609dot2/ieee1609dot2.cnf
blob: 0c7c49a63d5267d048d0b44764ca58290232734a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
# IEEE1609dot2.cnf
# IEEE1609dot2 conformation file

#.OPT
OER
#.END

#.MODULE
Ieee1609Dot2BaseTypes   ieee1609dot2
#.MODULE_IMPORT

#.EXPORTS ONLY_VALS WS_DLL
Psid

#.MAKE_ENUM
Psid

#.REGISTER

#.PDU
Ieee1609Dot2Data
SecuredCrl
#.NO_EMIT

#.NO_EMIT ONLY_VALS
NinetyDegreeInt
OneEightyDegreeInt

#.OMIT_ASSIGNMENT
# Get rid of unused code warnings
TestCertificate
Countersignature
ExplicitCertificate
ImplicitCertificate
KnownLatitude
KnownLongitude
SequenceOfPsid
Uint3
UnknownLatitude
UnknownLongitude
OperatingOrganizationId
Ieee1609HeaderInfoExtensionId
Ieee1609ContributedHeaderInfoExtension
Aes128CcmCiphertext
CrlPsid
ExpansionAlgorithmIdentifier
Extension
CountryOnly

#.TYPE_RENAME

#.FIELD_RENAME
EccP384CurvePoint/uncompressedP384/x eccp384cpX
EccP384CurvePoint/uncompressedP384/y eccp384cpY
EccP384CurvePoint/x-only             eccp384cpXOnly
EccP384CurvePoint/compressed-y-0     eccp384cpCompressed-y-0
EccP384CurvePoint/compressed-y-1     eccp384cpCompressed-y-1

EcdsaP384Signature/rSig              ecdsap384RSig
EcdsaP384Signature/sSig              ecdsap384SSig

PsidSsp/psid                         psPsid
HeaderInfo/psid                      hiPsid

IssuerIdentifier/self                iiSelf
SignerIdentifier/self                siSelf

SspRange/opaque                      srRange
RegionAndSubregions/region           rasRegion

ToBeSignedCertificate/encryptionKey  tbscEncryptionKey

SymmRecipientInfo/encKey             sriEncKey

EncryptedDataEncryptionKey/eciesNistP256 edeEciesNistP256

EncryptedDataEncryptionKey/eciesBrainpoolP256r1 edekEciesBrainpoolP256r1

#.TYPE_ATTR
NinetyDegreeInt     DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_NinetyDegreeInt_fmt)
OneEightyDegreeInt  DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_OneEightyDegreeInt_fmt)
Time32              DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_Time32_fmt)
Time64              DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_Time64_fmt)

#.FIELD_ATTR
SspRange/opaque                      ABBREV=srRange.opaque

#.FN_HDR Ieee1609Dot2Data
  actx->private_data = (void*)wmem_new0(actx->pinfo->pool, ieee1609_private_data_t);
#.END

#.FN_BODY Ieee1609Dot2Content/unsecuredData
  ieee1609_private_data_t *my_private_data = (ieee1609_private_data_t*)actx->private_data;

  offset = dissect_oer_octet_string(tvb, offset, actx, tree, hf_index,
                                       NO_BOUND, NO_BOUND, false, &my_private_data->unsecured_data);

  if (my_private_data->unsecured_data) {
    // psid may also be provided in HeaderInfo
    uint32_t psid = GPOINTER_TO_UINT(p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_ieee1609dot2, 0));
    if (psid) {
      /* Call next dissector here */
      dissector_try_uint(unsecured_data_subdissector_table, psid, my_private_data->unsecured_data, actx->pinfo, tree);
      my_private_data->unsecured_data = NULL;
    }
    // else: wait for the HeaderInfo for a second chance to dissect the content
  }

#.END

#.FN_BODY HeaderInfo/psid
  uint64_t psid;
  ieee1609_private_data_t *my_private_data = (ieee1609_private_data_t*)actx->private_data;

  offset = dissect_oer_constrained_integer_64b_no_ub(tvb, offset, actx, tree, hf_index,
                                                            0U, NO_BOUND, &psid, false);
  if ((my_private_data != NULL) && (my_private_data->unsecured_data != NULL)) {
    /* Call next dissector here */
    ieee1609dot2_set_next_default_psid(actx->pinfo, (uint32_t)psid);
    dissector_try_uint(unsecured_data_subdissector_table, (uint32_t) psid, my_private_data->unsecured_data, actx->pinfo, tree);
    my_private_data->unsecured_data = NULL;
  }

#.END

#.FN_BODY PsidSsp/psid
  offset = dissect_oer_constrained_integer_64b_no_ub(tvb, offset, actx, tree, hf_index,
                                               0U, NO_BOUND, &((ieee1609_private_data_t*)actx->private_data)->psidssp, false);

#.FN_BODY ServiceSpecificPermissions/opaque
  tvbuff_t *ssp;
  ieee1609_private_data_t *my_private_data = (ieee1609_private_data_t*)actx->private_data;

  offset = dissect_oer_octet_string(tvb, offset, actx, tree, hf_index,
                                       0, NO_BOUND, false, &ssp);
  if (ssp) {
    // Create subtree
    proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_ieee1609dot2_ssp);
    /* Call next dissector here */
    dissector_try_uint(ssp_subdissector_table, (uint32_t) my_private_data->psidssp, ssp, actx->pinfo, subtree);
  }
#.END

#.ASSIGN_VALUE_TO_TYPE
psid-system                                                         Psid
psid-electronic-fee-collection                                      Psid
psid-freight-fleet-management                                       Psid
psid-public-transport                                               Psid
psid-traffic-traveller-information                                  Psid
psid-traffic-control                                                Psid
psid-parking-management                                             Psid
psid-geographic-road-database                                       Psid
psid-medium-range-preinformation                                    Psid
psid-man-machine-interface                                          Psid
psid-intersystem-interface                                          Psid
psid-automatic-vehicle-identification                               Psid
psid-emergency-warning                                              Psid
psid-private                                                        Psid
psid-multi-purpose-payment                                          Psid
psid-dsrc-resource-manager                                          Psid
psid-after-theft-systems                                            Psid
psid-cruise-assist-highway-system                                   Psid
psid-multi-purpose-information-system                               Psid
psid-multi-mobile-information-system                                Psid
psid-efc-compliance-check-communication-applications                Psid
psid-efc-localisation-augmentation-communication-applications       Psid
psid-vehicle-to-vehicle-safety-and-awarenesss                       Psid
psid-limited-sensor-vehicle-to-vehicle-safety-and-awarenesss        Psid
psid-tracked-vehicle-safety-and-awarenesss                          Psid
psid-wave-security-managements                                      Psid
psid-ca-basic-services                                              Psid
psid-den-basic-services                                             Psid
psid-misbehavior-reporting-for-common-applications                  Psid
psid-vulnerable-road-users-safety-applications                      Psid
psid-testings                                                       Psid
psid-differential-gps-corrections-uncompressed                      Psid
psid-differential-gps-corrections-compressed                        Psid
psid-intersection-safety-and-awareness                              Psid
psid-traveller-information-and-roadside-signage                     Psid
psid-mobile-probe-exchanges                                         Psid
psid-emergency-and-erratic-vehicles-present-in-roadway              Psid
psid-remote-management-protocol-execution                           Psid
psid-wave-service-advertisement                                     Psid
psid-peer-to-peer-distribution-of-security-management-information   Psid
psid-traffic-light-manoeuver-service                                Psid
psid-road-and-lane-topology-service                                 Psid
psid-infrastructure-to-vehicle-information-service                  Psid
psid-traffic-light-control-requests-service                         Psid
psid-geonetworking-management-communications                        Psid
psid-certificate-revocation-list-application                        Psid
psid-collective-perception-service                                  Psid
psid-vehicle-initiated-distress-notivication                        Psid
psid-fast-service-advertisement-protocol                            Psid
psid-its-station-internal-management-communications-protocol        Psid
psid-veniam-delay-tolerant-networking                               Psid
psid-transcore-software-update                                      Psid
psid-ipv6-routing                                                   Psid
#.END