summaryrefslogtreecommitdiffstats
path: root/misc/uicDynamicContentData_v1.0.3.asn
blob: 6da92879fad4527c63145752b2a31f11b502bf27 (plain) (blame)
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
-- ##########################################################################################
-- # 
-- # FCB Dynamic Content - Version 1.0.1 (2021-05-12) 
-- #
-- # This file is available on the UIC FCB User Group GitHub: 
-- #             https://github.com/UnionInternationalCheminsdeFer/UIC-barcode
-- # 
-- # Please check this link to see if a more recent version of this file is available.
-- # 
-- # The type UicDynamicContentData defined below is at least intended to generate a data
-- # that, once valued and encoded as PER unaligned [UPER],
-- # is to be stored in UicBarcodeHeader.level2SignedData.level2Data.data, 
-- # and identified as "FDC1" in UicBarcodeHeader.level2SignedData.level2Data.dataFormat.
-- #
-- #  ISO Country codes are used to code countries. 
-- #    As Kosovo does not have an official ISO Country Code the following codes are used:
-- #          926 for Kosovo as numeric ISO Country Code 
-- #          XK  for Kosovo as alphanumeric 2-character ISO Country Code
-- #	
-- #  RICS codes must be used to encode companies (issuer, product owner, ...) where available
-- #    other codes are possible based on bilateral agreements
-- #    the format is kept more flexible to cover upcoming extensions of the RICS code by ERA	
-- # 
-- ##########################################################################################
-- Creator: ASN.1 Editor (http://asneditor.sourceforge.net)
-- Author: ClemensGantert
-- Created: Mon Jun 28 14:14:28 CEST 2021
ASN-Module-DynamicContentData DEFINITIONS AUTOMATIC TAGS ::= BEGIN

-- imports and exports
-- EXPORTS ALL;

   UicDynamicContentData ::= SEQUENCE {

     -- Identification of the mobile application that generated the barcode
     --   and filled in the data of its dynamic part.
     --
     -- The possible values are defined by the security provider
     --   (the security provider being UicBarcodeHeader.level2SignedData.level1Data.securityProviderNum/IA5)
     dynamicContentMobileAppId IA5String OPTIONAL,

     -- Moment of generation of the dynamic content, expressed in UTC
     dynamicContentTimeStamp TimeStampData OPTIONAL,

     -- Coordinates of the place where the dynamic content has been generated
     --   (same GeoCoordinateType type as in UicRailTicketData)
     dynamicContentGeoCoordinate GeoCoordinateType OPTIONAL,
  
     -- ##########################################################################################
     -- #  
     -- # List of predefined values that can be used for the extensionId data element used in
     -- #   UicDynamicContentData.dynamicContentResponseToChallenge.
     -- #
     -- ##########################################################################################
     -- ..........................................................................................
     -- extensionId value    | extensionData content
     -- .....................+....................................................................
     -- "="                  | Exactly the data received from the control device
     -- .....................+....................................................................
     -- "UTF"                | UTF-8 encoded text provided by the train staff to the traveler
     -- .....................+....................................................................
     -- "PHC"                | Hash value of a phone identifier that is available in the ticket
     --                      | control data provided in an annotation according to UIC IRS 90918-4
     --                      | (e.g. via ETCD). 
     -- .....................+....................................................................
     -- "EPC"                | Hash value of an electronic passport that is available in the
     --                      | ticketcontrol data provided in an annotation according to 
     --                      | UIC IRS 90918-4 (e.g. via ETCD). 
     --                      | The control app can read the passport at the time of control.
     -- .....................+....................................................................
     -- "+" + country + addon| Specific data. See the possible values for extensionId and the  
     -- "_" + RICS + addon   | corresponding extensionData content in the comments above the 
     -- "*" + addon          | definition of ExtensionData (below).
     -- ..........................................................................................

	 
     dynamicContentResponseToChallenge SEQUENCE OF ExtensionData OPTIONAL,
  
     -- Proprietary data defined bilaterally (same ExtensionData type as in UicRailTicketData).
     dynamicContentExtension ExtensionData OPTIONAL,
	 
     ...
   }

   -- ##########################################################################################
   -- # Generic type for timestamp, with a precision to the second.
   -- #
   -- # Day is the number of the day in the year (1 = January 1st, 2 = January 2nd...)
   -- # 
   -- # Time is the number of seconds of the day (from 0 = 0:00:00 to 86399 = 23:59:59)
   -- ##########################################################################################
   TimeStampData ::= SEQUENCE {
     day   INTEGER (1..366),
     time  INTEGER (0..86399)
   }

   -- ##########################################################################################
   -- # Generic type for geo coordinates.
   -- ##########################################################################################
   GeoCoordinateType ::= SEQUENCE {
     geoUnit             GeoUnitType             DEFAULT milliDegree,
     coordinateSystem    GeoCoordinateSystemType DEFAULT wgs84, 
     hemisphereLongitude HemisphereLongitudeType DEFAULT north,       -- separate hemisphere flag reduces the data size 
     hemisphereLatitude  HemisphereLatitudeType  DEFAULT east,        -- separate hemisphere flag reduces the data size   
     longitude           INTEGER,
     latitude            INTEGER,
     accuracy            GeoUnitType             OPTIONAL
   }
    
  GeoCoordinateSystemType ::= ENUMERATED { 	
     wgs84 (0), -- WGS 84 standard system
     grs80 (1)  -- (outdated) GRS 80 coordinate system
   }  								
    								
   GeoUnitType ::= ENUMERATED {   	
     microDegree      (0), -- approx. 11 cm on earth surface                                                    
     tenthmilliDegree (1), -- 1 / 10000 degree is approx. 11 meter on earth surface   
     milliDegree      (2), -- approx 110 meter on earth surface 
     centiDegree      (3),   
     deciDegree       (4)
   }
    				
   HemisphereLongitudeType ::= ENUMERATED { 	
     north (0), 
     south (1) 
   }

   HemisphereLatitudeType ::= ENUMERATED { 	
     east (0), 
     west (1)  
   }	

   
   -- ########################################################################################### 
   -- # Generic extension element (same definition as in UicRailTicketData).
   -- #
   -- # The value of 'extensionId' describes how 'extensionData' is encoded:
   -- # "+" + [2-letters ISO 3166 country code] + [addon, chosen by the standardization body of that country]
   -- #    means that 'extensionData' is a content defined by this national standardization body,
   -- #    identified as 'addon' by this body.
   -- # "_" + [4-digit RICS] + [addon, chosen by this company] means that 'extensionData' is a proprietary
   -- #    content of the company identified by the RICS code, identified as 'addon' by this company.
   -- # "*" + [addon] means that 'extensionData' is a content specific to this barcode,
   -- #    identified as 'addon', with no further information on who defined it.
   -- # Others values are reserved for future UIC use and shall not be used.
   -- ###########################################################################################
   ExtensionData	::= SEQUENCE 	{	
	   extensionId   IA5String, 
	   extensionData OCTET STRING
   }						
END