1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.asn1.ber.primitives ;
18
19
20 import org.apache.asn1.ber.TagEnum ;
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 public class UniversalTag extends TagEnum
73 {
74
75 private static final int RESERVED0_VAL = 0x00000000 ;
76
77 private static final int BOOLEAN_VAL = 0x01000000 ;
78
79 private static final int INTEGER_VAL = 0x02000000 ;
80
81 private static final int BIT_STRING_VAL = 0x03000000 ;
82
83 private static final int OCTET_STRING_VAL = 0x04000000 ;
84
85 private static final int NULL_VAL = 0x05000000 ;
86
87 private static final int OBJECT_IDENTIFIER_VAL = 0x06000000 ;
88
89 private static final int OBJECT_DESCRIPTOR_VAL = 0x07000000 ;
90
91 private static final int EXTERNAL_INSTANCE_OF_VAL = 0x08000000 ;
92
93 private static final int REAL_VAL = 0x09000000 ;
94
95 private static final int ENUMERATED_VAL = 0x0a000000 ;
96
97 private static final int EMBEDDED_PDV_VAL = 0x0b000000 ;
98
99 private static final int UTF8_STRING_VAL = 0x0c000000 ;
100
101 private static final int RELATIVE_OID_VAL = 0x0d000000 ;
102
103 private static final int RESERVED14_VAL = 0x0e000000 ;
104
105 private static final int RESERVED15_VAL = 0x0f000000 ;
106
107 private static final int SEQUENCE_SEQUENCE_OF_VAL = 0x10000000 ;
108
109 private static final int SET_SET_OF_VAL = 0x11000000 ;
110
111 private static final int NUMERIC_STRING_VAL = 0x12000000 ;
112
113 private static final int PRINTABLE_STRING_VAL = 0x13000000 ;
114
115 private static final int TELETEX_STRING_VAL = 0x14000000 ;
116
117 private static final int VIDEOTEX_STRING_VAL = 0x15000000 ;
118
119 private static final int IA5_STRING_VAL = 0x16000000 ;
120
121 private static final int UTC_TIME_VAL = 0x17000000 ;
122
123 private static final int GENERALIZED_TIME_VAL = 0x18000000 ;
124
125 private static final int GRAPHIC_STRING_VAL = 0x19000000 ;
126
127 private static final int VISIBLE_STRING_VAL = 0x1a000000 ;
128
129 private static final int GENERAL_STRING_VAL = 0x1b000000 ;
130
131 private static final int UNIVERSAL_STRING_VAL = 0x1c000000 ;
132
133 private static final int CHARACTER_STRING_VAL = 0x1d000000 ;
134
135 private static final int BMP_STRING_VAL = 0x1e000000 ;
136
137 private static final int RESERVED31_VAL = 0x1f000000 ;
138
139
140 private static final int RESERVED0_ID = 0 ;
141
142 private static final int BOOLEAN_ID = 1 ;
143
144 private static final int INTEGER_ID = 2 ;
145
146 private static final int BIT_STRING_ID = 3 ;
147
148 private static final int OCTET_STRING_ID = 4 ;
149
150 private static final int NULL_ID = 5 ;
151
152 private static final int OBJECT_IDENTIFIER_ID = 6 ;
153
154 private static final int OBJECT_DESCRIPTOR_ID = 7 ;
155
156 private static final int EXTERNAL_INSTANCE_OF_ID = 8 ;
157
158 private static final int REAL_ID = 9 ;
159
160 private static final int ENUMERATED_ID = 10 ;
161
162 private static final int EMBEDDED_PDV_ID = 11 ;
163
164 private static final int UTF8_STRING_ID = 12 ;
165
166 private static final int RELATIVE_OID_ID = 13 ;
167
168 private static final int RESERVED14_ID = 14 ;
169
170 private static final int RESERVED15_ID = 15 ;
171
172 private static final int SEQUENCE_SEQUENCE_OF_ID = 16 ;
173
174 private static final int SET_SET_OF_ID = 17 ;
175
176 private static final int NUMERIC_STRING_ID = 18 ;
177
178 private static final int PRINTABLE_STRING_ID = 19 ;
179
180 private static final int TELETEX_STRING_ID = 20 ;
181
182 private static final int VIDEOTEX_STRING_ID = 21 ;
183
184 private static final int IA5_STRING_ID = 22 ;
185
186 private static final int UTC_TIME_ID = 23 ;
187
188 private static final int GENERALIZED_TIME_ID = 24 ;
189
190 private static final int GRAPHIC_STRING_ID = 25 ;
191
192 private static final int VISIBLE_STRING_ID = 26 ;
193
194 private static final int GENERAL_STRING_ID = 27 ;
195
196 private static final int UNIVERSAL_STRING_ID = 28 ;
197
198 private static final int CHARACTER_STRING_ID = 29 ;
199
200 private static final int BMP_STRING_ID = 30 ;
201
202 private static final int RESERVED31_ID = 31 ;
203
204
205 public static final UniversalTag BOOLEAN =
206 new UniversalTag( "BOOLEAN", BOOLEAN_VAL, BOOLEAN_ID ) ;
207
208 public static final UniversalTag RESERVED0 =
209 new UniversalTag( "RESERVED0", RESERVED0_VAL, RESERVED0_ID ) ;
210
211 public static final UniversalTag INTEGER =
212 new UniversalTag( "INTEGER", INTEGER_VAL, INTEGER_ID ) ;
213
214 public static final UniversalTag BIT_STRING =
215 new UniversalTag( "BIT_STRING", BIT_STRING_VAL, BIT_STRING_ID ) ;
216
217 public static final UniversalTag OCTET_STRING =
218 new UniversalTag( "OCTET_STRING", OCTET_STRING_VAL, OCTET_STRING_ID ) ;
219
220 public static final UniversalTag NULL =
221 new UniversalTag( "NULL", NULL_VAL, NULL_ID ) ;
222
223 public static final UniversalTag OBJECT_IDENTIFIER =
224 new UniversalTag( "OBJECT_IDENTIFIER", OBJECT_IDENTIFIER_VAL,
225 OBJECT_IDENTIFIER_ID ) ;
226
227 public static final UniversalTag OBJECT_DESCRIPTOR =
228 new UniversalTag( "OBJECT_DESCRIPTOR", OBJECT_DESCRIPTOR_VAL,
229 OBJECT_DESCRIPTOR_ID ) ;
230
231 public static final UniversalTag EXTERNAL_INSTANCE_OF =
232 new UniversalTag( "EXTERNAL_INSTANCE_OF", EXTERNAL_INSTANCE_OF_VAL,
233 EXTERNAL_INSTANCE_OF_ID ) ;
234
235 public static final UniversalTag REAL =
236 new UniversalTag( "REAL", REAL_VAL, REAL_ID ) ;
237
238 public static final UniversalTag ENUMERATED =
239 new UniversalTag( "ENUMERATED", ENUMERATED_VAL, ENUMERATED_ID ) ;
240
241 public static final UniversalTag EMBEDDED_PDV =
242 new UniversalTag( "EMBEDDED_PDV", EMBEDDED_PDV_VAL, EMBEDDED_PDV_ID ) ;
243
244 public static final UniversalTag UTF8_STRING =
245 new UniversalTag( "UTF8_STRING", UTF8_STRING_VAL, UTF8_STRING_ID ) ;
246
247 public static final UniversalTag RELATIVE_OID =
248 new UniversalTag( "RELATIVE_OID", RELATIVE_OID_VAL, RELATIVE_OID_ID ) ;
249
250 public static final UniversalTag RESERVED14 =
251 new UniversalTag( "RESERVED14", RESERVED14_VAL, RESERVED14_ID ) ;
252
253 public static final UniversalTag RESERVED15 =
254 new UniversalTag( "RESERVED15", RESERVED15_VAL, RESERVED15_ID ) ;
255
256 public static final UniversalTag SEQUENCE_SEQUENCE_OF =
257 new UniversalTag( "SEQUENCE_SEQUENCE_OF", SEQUENCE_SEQUENCE_OF_VAL,
258 SEQUENCE_SEQUENCE_OF_ID ) ;
259
260 public static final UniversalTag SET_SET_OF =
261 new UniversalTag( "SET_SET_OF", SET_SET_OF_VAL, SET_SET_OF_ID ) ;
262
263 public static final UniversalTag NUMERIC_STRING =
264 new UniversalTag( "NUMERIC_STRING", NUMERIC_STRING_VAL,
265 NUMERIC_STRING_ID ) ;
266
267 public static final UniversalTag PRINTABLE_STRING =
268 new UniversalTag( "PRINTABLE_STRING", PRINTABLE_STRING_VAL,
269 PRINTABLE_STRING_ID ) ;
270
271 public static final UniversalTag TELETEX_STRING =
272 new UniversalTag( "TELETEX_STRING", TELETEX_STRING_VAL,
273 TELETEX_STRING_ID ) ;
274
275 public static final UniversalTag VIDEOTEX_STRING =
276 new UniversalTag( "VIDEOTEX_STRING", VIDEOTEX_STRING_VAL,
277 VIDEOTEX_STRING_ID ) ;
278
279 public static final UniversalTag IA5_STRING =
280 new UniversalTag( "IA5_STRING", IA5_STRING_VAL, IA5_STRING_ID ) ;
281
282 public static final UniversalTag UTC_TIME =
283 new UniversalTag( "UTC_TIME", UTC_TIME_VAL, UTC_TIME_ID ) ;
284
285 public static final UniversalTag GENERALIZED_TIME =
286 new UniversalTag( "GENERALIZED_TIME", GENERALIZED_TIME_VAL,
287 GENERALIZED_TIME_ID ) ;
288
289 public static final UniversalTag GRAPHIC_STRING =
290 new UniversalTag( "GRAPHIC_STRING", GRAPHIC_STRING_VAL,
291 GRAPHIC_STRING_ID ) ;
292
293 public static final UniversalTag VISIBLE_STRING =
294 new UniversalTag( "VISIBLE_STRING", VISIBLE_STRING_VAL,
295 VISIBLE_STRING_ID ) ;
296
297 public static final UniversalTag GENERAL_STRING =
298 new UniversalTag( "GENERAL_STRING", GENERAL_STRING_VAL,
299 GENERAL_STRING_ID ) ;
300
301 public static final UniversalTag UNIVERSAL_STRING =
302 new UniversalTag( "UNIVERSAL_STRING", UNIVERSAL_STRING_VAL,
303 UNIVERSAL_STRING_ID ) ;
304
305 public static final UniversalTag CHARACTER_STRING =
306 new UniversalTag( "CHARACTER_STRING", CHARACTER_STRING_VAL,
307 CHARACTER_STRING_ID ) ;
308
309 public static final UniversalTag BMP_STRING =
310 new UniversalTag( "BMP_STRING", BMP_STRING_VAL, BMP_STRING_ID ) ;
311
312 public static final UniversalTag RESERVED31 =
313 new UniversalTag( "RESERVED31", RESERVED31_VAL, RESERVED31_ID ) ;
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328 private UniversalTag( final String name, final int value, final int id )
329 {
330 super( name, value, id ) ;
331 }
332
333
334
335
336
337
338
339
340
341
342
343
344
345 public static UniversalTag getUniversalTag( int value )
346 {
347 UniversalTag type = null ;
348 value &= 0xdfffffff ;
349
350 switch ( value )
351 {
352 case( RESERVED0_VAL ):
353 type = RESERVED0 ;
354 break ;
355 case( BOOLEAN_VAL ):
356 type = BOOLEAN ;
357 break ;
358 case( INTEGER_VAL ):
359 type = INTEGER ;
360 break ;
361 case( BIT_STRING_VAL ):
362 type = BIT_STRING ;
363 break ;
364 case( OCTET_STRING_VAL ):
365 type = OCTET_STRING ;
366 break ;
367 case( NULL_VAL ):
368 type = NULL ;
369 break ;
370 case( OBJECT_IDENTIFIER_VAL ):
371 type = OBJECT_IDENTIFIER ;
372 break ;
373 case( OBJECT_DESCRIPTOR_VAL ):
374 type = OBJECT_DESCRIPTOR ;
375 break ;
376 case( EXTERNAL_INSTANCE_OF_VAL ):
377 type = EXTERNAL_INSTANCE_OF ;
378 break ;
379 case( REAL_VAL ):
380 type = REAL ;
381 break ;
382 case( ENUMERATED_VAL ):
383 type = ENUMERATED ;
384 break ;
385 case( EMBEDDED_PDV_VAL ):
386 type = EMBEDDED_PDV ;
387 break ;
388 case( UTF8_STRING_VAL ):
389 type = UTF8_STRING ;
390 break ;
391 case( RELATIVE_OID_VAL ):
392 type = RELATIVE_OID ;
393 break ;
394 case( RESERVED14_VAL ):
395 type = RESERVED14 ;
396 break ;
397 case( RESERVED15_VAL ):
398 type = RESERVED15 ;
399 break ;
400 case( SEQUENCE_SEQUENCE_OF_VAL ):
401 type = SEQUENCE_SEQUENCE_OF ;
402 break ;
403 case( SET_SET_OF_VAL ):
404 type = SET_SET_OF ;
405 break ;
406 case( NUMERIC_STRING_VAL ):
407 type = NUMERIC_STRING ;
408 break ;
409 case( PRINTABLE_STRING_VAL ):
410 type = PRINTABLE_STRING ;
411 break ;
412 case( TELETEX_STRING_VAL ):
413 type = TELETEX_STRING ;
414 break ;
415 case( VIDEOTEX_STRING_VAL ):
416 type = VIDEOTEX_STRING ;
417 break ;
418 case( IA5_STRING_VAL ):
419 type = IA5_STRING ;
420 break ;
421 case( UTC_TIME_VAL ):
422 type = UTC_TIME ;
423 break ;
424 case( GENERALIZED_TIME_VAL ):
425 type = GENERALIZED_TIME ;
426 break ;
427 case( GRAPHIC_STRING_VAL ):
428 type = GRAPHIC_STRING ;
429 break ;
430 case( VISIBLE_STRING_VAL ):
431 type = VISIBLE_STRING ;
432 break ;
433 case( GENERAL_STRING_VAL ):
434 type = GENERAL_STRING ;
435 break ;
436 case( UNIVERSAL_STRING_VAL ):
437 type = UNIVERSAL_STRING ;
438 break ;
439 case( CHARACTER_STRING_VAL ):
440 type = CHARACTER_STRING ;
441 break ;
442 case( BMP_STRING_VAL ):
443 type = BMP_STRING ;
444 break ;
445 case( RESERVED31_VAL ):
446 type = RESERVED31 ;
447 break ;
448 default:
449 String msg ;
450 if ( value < 31 && value > -1 )
451 {
452 msg = "Looks like you're using an id instead of a tag" ;
453 }
454 else
455 {
456 msg = "Tag value of " + value + " not recognized" ;
457 }
458
459 throw new IllegalArgumentException( msg ) ;
460 }
461
462 return type ;
463 }
464
465
466
467
468
469
470
471
472 public static UniversalTag getUniversalTagById( int id )
473 {
474 UniversalTag type = null ;
475
476 switch ( id )
477 {
478 case( RESERVED0_ID ):
479 type = RESERVED0 ;
480 break ;
481 case( BOOLEAN_ID ):
482 type = BOOLEAN ;
483 break ;
484 case( INTEGER_ID ):
485 type = INTEGER ;
486 break ;
487 case( BIT_STRING_ID ):
488 type = BIT_STRING ;
489 break ;
490 case( OCTET_STRING_ID ):
491 type = OCTET_STRING ;
492 break ;
493 case( NULL_ID ):
494 type = NULL ;
495 break ;
496 case( OBJECT_IDENTIFIER_ID ):
497 type = OBJECT_IDENTIFIER ;
498 break ;
499 case( OBJECT_DESCRIPTOR_ID ):
500 type = OBJECT_DESCRIPTOR ;
501 break ;
502 case( EXTERNAL_INSTANCE_OF_ID ):
503 type = EXTERNAL_INSTANCE_OF ;
504 break ;
505 case( REAL_ID ):
506 type = REAL ;
507 break ;
508 case( ENUMERATED_ID ):
509 type = ENUMERATED ;
510 break ;
511 case( EMBEDDED_PDV_ID ):
512 type = EMBEDDED_PDV ;
513 break ;
514 case( UTF8_STRING_ID ):
515 type = UTF8_STRING ;
516 break ;
517 case( RELATIVE_OID_ID ):
518 type = RELATIVE_OID ;
519 break ;
520 case( RESERVED14_ID ):
521 type = RESERVED14 ;
522 break ;
523 case( RESERVED15_ID ):
524 type = RESERVED15 ;
525 break ;
526 case( SEQUENCE_SEQUENCE_OF_ID ):
527 type = SEQUENCE_SEQUENCE_OF ;
528 break ;
529 case( SET_SET_OF_ID ):
530 type = SET_SET_OF ;
531 break ;
532 case( NUMERIC_STRING_ID ):
533 type = NUMERIC_STRING ;
534 break ;
535 case( PRINTABLE_STRING_ID ):
536 type = PRINTABLE_STRING ;
537 break ;
538 case( TELETEX_STRING_ID ):
539 type = TELETEX_STRING ;
540 break ;
541 case( VIDEOTEX_STRING_ID ):
542 type = VIDEOTEX_STRING ;
543 break ;
544 case( IA5_STRING_ID ):
545 type = IA5_STRING ;
546 break ;
547 case( UTC_TIME_ID ):
548 type = UTC_TIME ;
549 break ;
550 case( GENERALIZED_TIME_ID ):
551 type = GENERALIZED_TIME ;
552 break ;
553 case( GRAPHIC_STRING_ID ):
554 type = GRAPHIC_STRING ;
555 break ;
556 case( VISIBLE_STRING_ID ):
557 type = VISIBLE_STRING ;
558 break ;
559 case( GENERAL_STRING_ID ):
560 type = GENERAL_STRING ;
561 break ;
562 case( UNIVERSAL_STRING_ID ):
563 type = UNIVERSAL_STRING ;
564 break ;
565 case( CHARACTER_STRING_ID ):
566 type = CHARACTER_STRING ;
567 break ;
568 case( BMP_STRING_ID ):
569 type = BMP_STRING ;
570 break ;
571 case( RESERVED31_ID ):
572 type = RESERVED31 ;
573 break ;
574 default:
575 String msg ;
576 if ( id > 31 || id < 0 )
577 {
578 msg = "Looks like you're using a tag instead of an id" ;
579 }
580 else
581 {
582 msg = "Id of " + id + " not recognized as a universal id" ;
583 }
584
585 throw new IllegalArgumentException( msg ) ;
586 }
587
588 return type ;
589 }
590 }