aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/ieee1609dot2/Ieee1609Dot2CrlBaseTypes.asn
blob: 7ea8e1c79f720477a5ea49eb40ab923ca498c8ba (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
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
-- https://forge.etsi.org/rep/ITS/asn1/ieee1609.2/-/blob/ieee/Ieee1609Dot2CrlBaseTypes.asn
--***************************************************************************--
--                  IEEE Std 1609.2: CRL Base Data Types                     --
--***************************************************************************--

/**
 * @note Section references in this file are to clauses in IEEE Std
 * 1609.2 unless indicated otherwise. Full forms of acronyms and
 * abbreviations used in this file are specified in 3.2.
 */

Ieee1609Dot2CrlBaseTypes {iso(1) identified-organization(3) ieee(111)
  standards-association-numbered-series-standards(2) wave-stds(1609) dot2(2)
  crl(3) base-types(2) major-version-3(3) minor-version-2(2)}

DEFINITIONS AUTOMATIC TAGS ::= BEGIN

IMPORTS
  CrlSeries,
  Duration,
  GeographicRegion,
  HashedId8,
  HashedId10,
  IValue,
  LaId,
  LinkageSeed,
  Opaque,
  Psid,
  SequenceOfLinkageSeed,
  Signature,
  Time32,
  Uint3,
  Uint8,
  Uint16,
  Uint32,
  ValidityPeriod
FROM Ieee1609Dot2BaseTypes {iso(1) identified-organization(3) ieee(111)
  standards-association-numbered-series-standards(2) wave-stds(1609) dot2(2)
  base(1) base-types(2) major-version-2(2) minor-version-4(4)}
WITH SUCCESSORS
;

/**
 * @brief The fields in this structure have the following meaning:
 *
 * @param version: is the version number of the CRL. For this version of this
 * standard it is 1.
 *
 * @param crlSeries: represents the CRL series to which this CRL belongs. This
 * is used to determine whether the revocation information in a CRL is relevant
 * to a particular certificate as specified in 5.1.3.2.
 *
 * @param crlCraca: contains the low-order eight octets of the hash of the
 * certificate of the Certificate Revocation Authorization CA (CRACA) that
 * ultimately authorized the issuance of this CRL. This is used to determine
 * whether the revocation information in a CRL is relevant to a particular
 * certificate as specified in 5.1.3.2. In a valid signed CRL as specified in
 * 7.4 the crlCraca is consistent with the associatedCraca field in the
 * Service Specific Permissions as defined in 7.4.3.3. The HashedId8 is
 * calculated with the whole-certificate hash algorithm, determined as
 * described in 6.4.3, applied to the COER-encoded certificate, canonicalized 
 * as defined in the definition of Certificate.
 *
 * @param issueDate: specifies the time when the CRL was issued.
 *
 * @param nextCrl: contains the time when the next CRL with the same crlSeries
 * and cracaId is expected to be issued. The CRL is invalid unless nextCrl is
 * strictly after issueDate. This field is used to set the expected update time
 * for revocation information associated with the (crlCraca, crlSeries) pair as
 * specified in 5.1.3.6.
 *
 * @param priorityInfo: contains information that assists devices with limited
 * storage space in determining which revocation information to retain and
 * which to discard.
 *
 * @param	typeSpecific: contains the CRL body.
 */
CrlContents ::= SEQUENCE {
  version      Uint8 (1),
  crlSeries    CrlSeries,
  crlCraca     HashedId8,
  issueDate    Time32,   
  nextCrl      Time32,  
  priorityInfo CrlPriorityInfo,
  typeSpecific TypeSpecificCrlContents
}

/**
 * @brief This data structure contains information that assists devices with
 * limited storage space in determining which revocation information to retain
 * and which to discard.
 *
 * @param priority: indicates the priority of the revocation information
 * relative to other CRLs issued for certificates with the same cracaId and
 * crlSeries values. A higher value for this field indicates higher importance
 * of this revocation information.
 *
 * @note This mechanism is for future use; details are not specified in this
 * version of the standard.
 */
CrlPriorityInfo ::= SEQUENCE {  
  priority Uint8 OPTIONAL,
  ...
}

/**
 * @brief This structure contains type-specific CRL contents.
 *
 * @param fullHashCrl: contains a full hash-based CRL, i.e., a listing of the
 * hashes of all certificates that:
 *  - contain the indicated cracaId and crlSeries values, and
 *  - are revoked by hash, and
 *  - have been revoked, and
 *  - have not expired.
 *
 * @param deltaHashCrl: contains a delta hash-based CRL, i.e., a listing of
 * the hashes of all certificates that:
 *  - contain the indicated cracaId and crlSeries values, and
 *  - are revoked by hash, and
 *  - have been revoked since the previous CRL that contained the indicated
 * cracaId and crlSeries values.
 *
 * @param fullLinkedCrl and fullLinkedCrlWithAlg: contain a full linkage
 * ID-based CRL, i.e., a listing of the individual and/or group linkage data
 * for all certificates that:
 *  - contain the indicated cracaId and crlSeries values, and
 *  - are revoked by linkage value, and
 *  - have been revoked, and
 *  - have not expired.
 * The difference between fullLinkedCrl and fullLinkedCrlWithAlg is in how
 * the cryptographic algorithms to be used in the seed evolution function and
 * linkage value generation function of 5.1.3.4 are communicated to the
 * receiver of the CRL. See below in this subclause for details.
 *
 * @param deltaLinkedCrl and deltaLinkedCrlWithAlg: contain a delta linkage
 * ID-based CRL, i.e., a listing of the individual and/or group linkage data
 * for all certificates that:
 *  - contain the specified cracaId and crlSeries values, and
 *  -	are revoked by linkage data, and
 *  -	have been revoked since the previous CRL that contained the indicated
 * cracaId and crlSeries values.
 * The difference between deltaLinkedCrl and deltaLinkedCrlWithAlg is in how
 * the cryptographic algorithms to be used in the seed evolution function
 * and linkage value generation function of 5.1.3.4 are communicated to the
 * receiver of the CRL. See below in this subclause for details.
 *
 * @note It is the intent of this standard that once a certificate is revoked,
 * it remains revoked for the rest of its lifetime. CRL signers are expected 
 * to include a revoked certificate on all CRLs issued between the 
 * certificate's revocation and its expiry.
 *
 * @note Seed evolution function and linkage value generation function
 * identification. In order to derive linkage values per the mechanisms given
 * in 5.1.3.4, a receiver needs to know the seed evolution function and the
 * linkage value generation function.
 *
 * If the contents of this structure is a
 * ToBeSignedLinkageValueCrlWithAlgIdentifier, then the seed evolution function
 * and linkage value generation function are given explicitly as specified in
 * the specification of ToBeSignedLinkageValueCrlWithAlgIdentifier.
 *
 * If the contents of this structure is a ToBeSignedLinkageValueCrl, then the
 * seed evolution function and linkage value generation function are obtained
 * based on the crlCraca field in the CrlContents:
 *  - If crlCraca was obtained with SHA-256 or SHA-384, then
 * seedEvolutionFunctionIdentifier is seedEvoFn1-sha256 and
 * linkageValueGenerationFunctionIdentifier is lvGenFn1-aes128.
 *  - If crlCraca was obtained with SM3, then seedEvolutionFunctionIdentifier
 * is seedEvoFn1-sm3 and linkageValueGenerationFunctionIdentifier is
 * lvGenFn1-sm4.
 */
TypeSpecificCrlContents ::= CHOICE {
  fullHashCrl           ToBeSignedHashIdCrl,            
  deltaHashCrl          ToBeSignedHashIdCrl,            
  fullLinkedCrl         ToBeSignedLinkageValueCrl,
  deltaLinkedCrl        ToBeSignedLinkageValueCrl,
  ...,
  fullLinkedCrlWithAlg  ToBeSignedLinkageValueCrlWithAlgIdentifier,
  deltaLinkedCrlWithAlg ToBeSignedLinkageValueCrlWithAlgIdentifier
}

/**
 * @brief This data structure represents information about a revoked
 * certificate.
 *
 * @param crlSerial: is a counter that increments by 1 every time a new full
 * or delta CRL is issued for the indicated crlCraca and crlSeries values.
 *
 * @param entries: contains the individual revocation information items.
 *
 * @note To indicate that a hash-based CRL contains no individual revocation 
 * information items, the recommended approach is for the SEQUENCE OF in the 
 * SequenceOfHashBasedRevocationInfo in this field to indicate zero entries.
 */
ToBeSignedHashIdCrl ::= SEQUENCE {  
  crlSerial Uint32,
  entries   SequenceOfHashBasedRevocationInfo,
  ...
}

/**
 * @brief This type is used for clarity of definitions.
 */
SequenceOfHashBasedRevocationInfo ::= 
  SEQUENCE OF HashBasedRevocationInfo 

/**
 * @brief In this structure:
 *
 * @param	id: is the HashedId10 identifying the revoked certificate. The 
 * HashedId10 is calculated with the whole-certificate hash algorithm, 
 * determined as described in 6.4.3, applied to the COER-encoded certificate,
 * canonicalized as defined in the definition of Certificate.
 *
 * @param expiry: is the value computed from the validity period's start and
 * duration values in that certificate.
 */
HashBasedRevocationInfo ::= SEQUENCE {
  id     HashedId10,
  expiry Time32,
  ...
}

/**
 * @brief In this structure:
 *
 * @param	iRev: is the value iRev used in the algorithm given in 5.1.3.4. This
 * value applies to all linkage-based revocation information included within
 * either indvidual or groups.
 *
 * @param	indexWithinI: is a counter that is set to 0 for the first CRL issued
 * for the indicated combination of crlCraca, crlSeries, and iRev, and
 * increments by 1 every time a new full or delta CRL is issued for the
 * indicated crlCraca and crlSeries values without changing iRev.
 *
 * @param individual: contains individual linkage data.
 *
 * @note To indicate that a linkage ID-based CRL contains no individual
 * linkage data, the recommended approach is for the SEQUENCE OF in the
 * SequenceOfJMaxGroup in this field to indicate zero entries.
 *
 * @param groups: contains group linkage data.
 *
 * @note To indicate that a linkage ID-based CRL contains no group linkage
 * data, the recommended approach is for the SEQUENCE OF in the
 * SequenceOfGroupCrlEntry in this field to indicate zero entries.
 *
 * @param groupsSingleSeed: contains group linkage data generated with a single 
 * seed.
 */
ToBeSignedLinkageValueCrl ::= SEQUENCE {  
  iRev             IValue,
  indexWithinI     Uint8,
  individual       SequenceOfJMaxGroup OPTIONAL,
  groups           SequenceOfGroupCrlEntry OPTIONAL,
  ...,
  groupsSingleSeed SequenceOfGroupSingleSeedCrlEntry OPTIONAL
} (WITH COMPONENTS {..., individual PRESENT} |
   WITH COMPONENTS {..., groups PRESENT} |
   WITH COMPONENTS {..., groupsSingleSeed PRESENT})

/**
 * @brief This type is used for clarity of definitions.
 */
SequenceOfJMaxGroup ::= SEQUENCE OF JMaxGroup

/**
 * @brief In this structure:
 *
 * @param	jMax: is the value jMax used in the algorithm given in 5.1.3.4. This
 * value applies to all linkage-based revocation information included within
 * contents.
 *
 * @param contents: contains individual linkage data.
 */
JMaxGroup ::= SEQUENCE {
  jmax     Uint8,
  contents SequenceOfLAGroup,
  ...
}

/**
 * @brief This type is used for clarity of definitions.
 */
SequenceOfLAGroup ::= SEQUENCE OF LAGroup

/**
 * @brief In this structure:
 *
 * @param la1Id: is the value LinkageAuthorityIdentifier1 used in the
 * algorithm given in 5.1.3.4. This value applies to all linkage-based
 * revocation information included within contents.
 *
 * @param la2Id: is the value LinkageAuthorityIdentifier2 used in the
 * algorithm given in 5.1.3.4. This value applies to all linkage-based
 * revocation information included within contents.
 *
 * @param contents: contains individual linkage data.
 */
LAGroup ::= SEQUENCE {
  la1Id    LaId,
  la2Id    LaId,
  contents SequenceOfIMaxGroup,
  ...
}

/**
 * @brief This type is used for clarity of definitions.
 */
SequenceOfIMaxGroup ::= SEQUENCE OF IMaxGroup

/**
 * @brief In this structure:
 *
 * @param iMax indicates that for the entries in contents, revocation 
 * information need no longer be calculated once iCert > iMax as the holder 
 * is known to have no more valid certs at that point. iMax is not directly 
 * used in the calculation of the linkage values, it is used to determine 
 * when revocation information can safely be deleted.
 *
 * @param contents contains individual linkage data for certificates that are 
 * revoked using two seeds, per the algorithm given in per the mechanisms 
 * given in 5.1.3.4 and with seedEvolutionFunctionIdentifier and 
 * linkageValueGenerationFunctionIdentifier obtained as specified in 7.3.3.
 *
 * @param singleSeed contains individual linkage data for certificates that 
 * are revoked using a single seed, per the algorithm given in per the 
 * mechanisms given in 5.1.3.4 and with seedEvolutionFunctionIdentifier and 
 * linkageValueGenerationFunctionIdentifier obtained as specified in 7.3.3.
 */
IMaxGroup ::= SEQUENCE {
  iMax       Uint16,
  contents   SequenceOfIndividualRevocation,
  ...,
  singleSeed SequenceOfLinkageSeed OPTIONAL
}

/**
 * @brief This type is used for clarity of definitions.
 */
SequenceOfIndividualRevocation ::= 
  SEQUENCE (SIZE(0..MAX)) OF IndividualRevocation

/**
 * @brief In this structure:
 *
 * @param linkageSeed1 is the value LinkageSeed1 used in the algorithm given 
 * in 5.1.3.4.
 *
 * @param linkageSeed2 is the value LinkageSeed2 used in the algorithm given 
 * in 5.1.3.4.
 */ 
IndividualRevocation ::= SEQUENCE { 
  linkageSeed1 LinkageSeed,
  linkageSeed2 LinkageSeed,
  ...
}

/**
 * @brief This type is used for clarity of definitions.
 */
SequenceOfGroupCrlEntry ::= SEQUENCE OF GroupCrlEntry

/**
 * @brief In this structure:
 *
 * @param iMax: indicates that for these certificates, revocation information 
 * need no longer be calculated once iCert > iMax as the holders are known 
 * to have no more valid certs for that (crlCraca, crlSeries) at that point.
 *
 * @param la1Id: is the value LinkageAuthorityIdentifier1 used in the 
 * algorithm given in 5.1.3.4. This value applies to all linkage-based 
 * revocation information included within contents.
 *
 * @param linkageSeed1: is the value LinkageSeed1 used in the algorithm given 
 * in 5.1.3.4.
 *
 * @param la2Id: is the value LinkageAuthorityIdentifier2 used in the 
 * algorithm given in 5.1.3.4. This value applies to all linkage-based 
 * revocation information included within contents.
 *
 * @param linkageSeed2: is the value LinkageSeed2 used in the algorithm given 
 * in 5.1.3.4.
 */
GroupCrlEntry ::= SEQUENCE {
  iMax         Uint16,
  la1Id        LaId,
  linkageSeed1 LinkageSeed,
  la2Id        LaId,
  linkageSeed2 LinkageSeed,
  ...
}

/**
 * @brief In this structure:
 * 
 * @param iRev is the value iRev used in the algorithm given in 5.1.3.4. This 
 * value applies to all linkage-based revocation information included within 
 * either indvidual or groups.
 * 
 * @param indexWithinI is a counter that is set to 0 for the first CRL issued 
 * for the indicated combination of crlCraca, crlSeries, and iRev, and increments by 1 every time a new full or delta CRL is issued for the indicated crlCraca and crlSeries values without changing iRev.
 * 
 * @param seedEvolution contains an identifier for the seed evolution 
 * function, used as specified in  5.1.3.4.
 * 
 * @param lvGeneration contains an identifier for the linkage value 
 * generation function, used as specified in  5.1.3.4.
 * 
 * @param individual contains individual linkage data.
 * 
 * @param groups contains group linkage data for linkage value generation 
 * with two seeds.
 * 
 * @param groupsSingleSeed contains group linkage data for linkage value 
 * generation with one seed.
 */
ToBeSignedLinkageValueCrlWithAlgIdentifier ::= SEQUENCE {  
  iRev             IValue,
  indexWithinI     Uint8,
  seedEvolution    SeedEvolutionFunctionIdentifier,
  lvGeneration     LvGenerationFunctionIdentifier,
  individual       SequenceOfJMaxGroup OPTIONAL,
  groups           SequenceOfGroupCrlEntry OPTIONAL,
  groupsSingleSeed SequenceOfGroupSingleSeedCrlEntry OPTIONAL,
  ...
} (WITH COMPONENTS {..., individual PRESENT} |
   WITH COMPONENTS {..., groups PRESENT} |
   WITH COMPONENTS {..., groupsSingleSeed PRESENT})

/**
 * @brief This type is used for clarity of definitions.
 */
SequenceOfGroupSingleSeedCrlEntry ::= 
  SEQUENCE OF GroupSingleSeedCrlEntry

/**
 * @brief This structure contains the linkage seed for group revocation with 
 * a single seed. The seed is used as specified in the algorithms in 5.1.3.4.
 */
GroupSingleSeedCrlEntry ::= SEQUENCE {
  iMax        Uint16,
  laId        LaId,
  linkageSeed LinkageSeed
}

/**
 * @brief This structure contains an identifier for the algorithms specified 
 * in 5.1.3.4.
 */
ExpansionAlgorithmIdentifier ::= ENUMERATED {
  sha256ForI-aesForJ,
  sm3ForI-sm4ForJ,
  ...
}

/**
 * @brief This is the identifier for the seed evolution function. See 5.1.3 
 * for details of use.
 */
SeedEvolutionFunctionIdentifier ::= NULL

/**
 * @brief This is the identifier for the linkage value generation function. 
 * See 5.1.3 for details of use.
 */
LvGenerationFunctionIdentifier ::= NULL

END