1IEEE1609dot2BaseTypes {iso(1) identified-organization(3) ieee(111)
2standards-association-numbered-series-standards(2) wave-stds(1609)
3dot2(2) base(1) base-types(2) major-version-2(2)}
4
5-- Minor version: 1
6
7--
8--********************************************************************
9--  IEEE P1609.2 Base Data Types
10--
11--********************************************************************
12
13DEFINITIONS AUTOMATIC TAGS ::= BEGIN
14
15EXPORTS ALL;
16
17
18-- ------------------------------------------------------------------
19--
20-- Integers
21--
22-- ------------------------------------------------------------------
23
24
25Uint3  ::= INTEGER (0..7)                    -- (hex)                      07
26Uint8  ::= INTEGER (0..255)                  -- (hex)                      ff
27Uint16 ::= INTEGER (0..65535)                -- (hex)                   ff ff
28Uint32 ::= INTEGER (0..4294967295)--<LONGLONG>-- -- (hex)             ff ff ff ff
29Uint64 ::= INTEGER (0..18446744073709551615) -- (hex) ff ff ff ff ff ff ff ff
30
31SequenceOfUint8  ::= SEQUENCE OF Uint8
32SequenceOfUint16 ::= SEQUENCE OF Uint16
33
34-- ------------------------------------------------------------------
35--
36-- OCTET STRING types
37--
38-- ------------------------------------------------------------------
39
40
41Opaque ::= OCTET STRING
42
43
44HashedId10 ::= OCTET STRING (SIZE(10))
45HashedId8  ::= OCTET STRING (SIZE(8))
46HashedId3  ::= OCTET STRING (SIZE(3))
47SequenceOfHashedId3 ::= SEQUENCE OF HashedId3
48
49
50-- ------------------------------------------------------------------
51--
52-- Time
53--
54-- ------------------------------------------------------------------
55
56Time32 ::= Uint32
57Time64 ::= Uint64
58
59ValidityPeriod ::= SEQUENCE  {
60    start          Time32,
61    duration       Duration
62}
63
64Duration ::= CHOICE  {
65    microseconds     Uint16,
66    milliseconds     Uint16,
67    seconds          Uint16,
68    minutes          Uint16,
69    hours            Uint16,
70    sixtyHours       Uint16,
71    years            Uint16
72}
73
74-- ------------------------------------------------------------------
75--
76-- Location
77--
78-- ------------------------------------------------------------------
79
80
81GeographicRegion ::= CHOICE  {
82    circularRegion      CircularRegion,
83    rectangularRegion   SequenceOfRectangularRegion,
84    polygonalRegion     PolygonalRegion,
85    identifiedRegion    SequenceOfIdentifiedRegion,
86    ...
87}
88
89CircularRegion ::= SEQUENCE  {
90    center          TwoDLocation,
91    radius          Uint16
92}
93
94RectangularRegion ::= SEQUENCE  {
95    northWest       TwoDLocation,
96    southEast       TwoDLocation
97}
98
99SequenceOfRectangularRegion ::= SEQUENCE OF RectangularRegion
100
101PolygonalRegion ::= SEQUENCE SIZE(3..MAX) OF TwoDLocation
102
103TwoDLocation ::= SEQUENCE  {
104    latitude      Latitude,
105    longitude     Longitude
106}
107
108IdentifiedRegion ::= CHOICE  {
109    countryOnly           CountryOnly,
110    countryAndRegions     CountryAndRegions,
111    countryAndSubregions   CountryAndSubregions,
112    ...
113}
114
115SequenceOfIdentifiedRegion ::= SEQUENCE OF IdentifiedRegion
116
117CountryOnly ::= Uint16
118
119CountryAndRegions ::= SEQUENCE  {
120    countryOnly    CountryOnly,
121    regions        SequenceOfUint8
122}
123
124CountryAndSubregions ::= SEQUENCE  {
125    country             CountryOnly,
126    regionAndSubregions  SequenceOfRegionAndSubregions
127}
128
129RegionAndSubregions ::= SEQUENCE  {
130    region             Uint8,
131    subregions         SequenceOfUint16
132}
133
134SequenceOfRegionAndSubregions ::= SEQUENCE OF RegionAndSubregions
135
136ThreeDLocation ::= SEQUENCE  {
137    latitude        Latitude,
138    longitude       Longitude,
139    elevation       Elevation
140}
141
142Latitude ::= NinetyDegreeInt
143Longitude ::= OneEightyDegreeInt
144Elevation ::= ElevInt
145
146NinetyDegreeInt ::= INTEGER  {
147    min 		(-900000000),
148    max 		(900000000),
149    unknown 	(900000001)
150} (-900000000..900000001)
151
152KnownLatitude ::= NinetyDegreeInt (min..max) -- Minus 90deg to +90deg in microdegree intervals
153UnknownLatitude ::= NinetyDegreeInt (unknown)
154
155OneEightyDegreeInt ::= INTEGER  {
156    min      	(-1799999999),
157    max      	(1800000000),
158    unknown  	(1800000001)
159} (-1799999999..1800000001)
160
161KnownLongitude ::= OneEightyDegreeInt (min..max)
162UnknownLongitude ::= OneEightyDegreeInt (unknown)
163
164ElevInt ::= Uint16 -- Range is from -4096 to 61439 in units of one-tenth of a meter
165
166-- ------------------------------------------------------------------
167--
168-- Crypto
169--
170-- ------------------------------------------------------------------
171
172Signature ::= CHOICE  {
173    ecdsaNistP256Signature        EcdsaP256Signature,
174    ecdsaBrainpoolP256r1Signature EcdsaP256Signature,
175    ...,
176    ecdsaBrainpoolP384r1Signature EcdsaP384Signature
177}
178
179EcdsaP256Signature ::= SEQUENCE  {
180    rSig     EccP256CurvePoint,
181    sSig     OCTET STRING (SIZE (32))
182}
183
184EcdsaP384Signature ::= SEQUENCE  {
185    rSig     EccP384CurvePoint,
186    sSig     OCTET STRING (SIZE (48))
187}
188
189EccP256CurvePoint ::= CHOICE  {
190    x-only           OCTET STRING (SIZE (32)),
191    fill             NULL,  -- consistency with 1363 / X9.62
192    compressed-y-0   OCTET STRING (SIZE (32)),
193    compressed-y-1   OCTET STRING (SIZE (32)),
194    uncompressedP256 SEQUENCE  {
195        x OCTET STRING (SIZE (32)),
196        y OCTET STRING (SIZE (32))
197    }
198}
199
200EccP384CurvePoint::= CHOICE  {
201    x-only           OCTET STRING (SIZE (48)),
202    fill             NULL, -- consistency w 1363 / X9.62
203    compressed-y-0   OCTET STRING (SIZE (48)),
204    compressed-y-1   OCTET STRING (SIZE (48)),
205    uncompressedP384 SEQUENCE  {
206        x OCTET STRING (SIZE (48)),
207        y OCTET STRING (SIZE (48))
208    }
209}
210
211
212SymmAlgorithm ::= ENUMERATED  {
213    aes128Ccm,
214    ...
215}
216
217HashAlgorithm ::= ENUMERATED  {
218    sha256,
219    ...,
220    sha384
221}
222
223EciesP256EncryptedKey ::= SEQUENCE  {
224    v               EccP256CurvePoint,
225    c               OCTET STRING (SIZE (16)),
226    t               OCTET STRING (SIZE (16))
227}
228
229EncryptionKey ::= CHOICE  {
230    public               PublicEncryptionKey,
231    symmetric            SymmetricEncryptionKey
232}
233
234PublicEncryptionKey ::= SEQUENCE  {
235    supportedSymmAlg      SymmAlgorithm,
236    publicKey             BasePublicEncryptionKey
237}
238
239BasePublicEncryptionKey ::= CHOICE  {
240    eciesNistP256             EccP256CurvePoint,
241    eciesBrainpoolP256r1      EccP256CurvePoint,
242    ...
243}
244
245PublicVerificationKey ::= CHOICE  {
246    ecdsaNistP256             EccP256CurvePoint,
247    ecdsaBrainpoolP256r1      EccP256CurvePoint,
248    ...,
249    ecdsaBrainpoolP384r1      EccP384CurvePoint
250}
251
252SymmetricEncryptionKey ::= CHOICE  {
253    aes128Ccm     OCTET STRING(SIZE(16)),
254    ...
255}
256
257-- ------------------------------------------------------------------
258--
259-- PSID / ITS-AID
260--
261-- ------------------------------------------------------------------
262
263
264PsidSsp ::= SEQUENCE  {
265    psid                  Psid,
266    ssp                   ServiceSpecificPermissions OPTIONAL
267}
268
269SequenceOfPsidSsp ::= SEQUENCE OF PsidSsp
270
271Psid ::= INTEGER (0..MAX)
272
273SequenceOfPsid ::= SEQUENCE OF Psid
274
275ServiceSpecificPermissions ::= CHOICE  {
276    opaque              OCTET STRING (SIZE(0..MAX)),
277    ...,
278    bitmapSsp           BitmapSsp
279}
280
281BitmapSsp ::= OCTET STRING (SIZE(0..31))
282
283PsidSspRange ::= SEQUENCE  {
284    psid                Psid,
285    sspRange            SspRange OPTIONAL
286}
287
288SequenceOfPsidSspRange ::= SEQUENCE OF PsidSspRange
289
290SspRange ::= CHOICE  {
291    opaque              SequenceOfOctetString,
292    all                 NULL,
293    ... ,
294    bitmapSspRange      BitmapSspRange
295}
296
297BitmapSspRange ::= SEQUENCE  {
298    sspValue            OCTET STRING (SIZE(1..32)),
299    sspBitmask          OCTET STRING (SIZE(1..32))
300}
301
302SequenceOfOctetString ::= SEQUENCE (SIZE (0..MAX)) OF
303    OCTET STRING (SIZE(0..MAX))
304
305
306-- ------------------------------------------------------------------
307--
308-- Goes in certs
309--
310-- ------------------------------------------------------------------
311
312SubjectAssurance ::= OCTET STRING (SIZE(1))
313
314CrlSeries ::= Uint16
315
316
317-- ------------------------------------------------------------------
318--
319-- Pseudonym Linkage
320--
321-- ------------------------------------------------------------------
322
323IValue ::= Uint16
324Hostname ::= UTF8String (SIZE(0..255))
325LinkageValue ::= OCTET STRING (SIZE(9))
326GroupLinkageValue ::= SEQUENCE  {
327    jValue  OCTET STRING (SIZE(4)),
328    value   OCTET STRING (SIZE(9))
329}
330
331LaId ::= OCTET STRING (SIZE(2))
332LinkageSeed ::= OCTET STRING (SIZE(16))
333
334END
335
336