summaryrefslogtreecommitdiffstats
path: root/misc/headerSpec.asn
blob: 3fe6b1500c0194f08509b706ce9c256dca1478c3 (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
-- Author: ClemensGantert
-- Created: Thu Jun 04 17:19:28 CEST 2020
ASN-Module DEFINITIONS AUTOMATIC TAGS ::= BEGIN

-- imports and exports
-- EXPORTS ALL;

	
-- ##############################################################################################
-- #	                                                                      
-- #   UIC barcode header - first draft 
-- #
-- ##############################################################################################


-- ##############################################################################################
-- #                                                                      
-- #  Naming and encoding conventions
-- #
-- #  Elements included as String and as Numeric values:
-- #    Some elements are included in different formats to reduce the data size. 
-- #    These elements must be included only once.
-- #    These elements are named with the same name and appendix 
-- #                     Num  (numeric values)	
-- #	                 IA5  (String values according to ASN IA5String (7Bit))
-- #	
-- #  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	
-- #          
-- # 
-- # -	A bar code which is only static (printed on a paper), and for which the security is in the system, doesn’t need any of these elements.
-- # -	A bar code which is only static, and includes its own security, needs:
-- #  	  level1Signature
-- #      level1KeyAlg if the associated key does not include the complete certificate in keys.xml but only the public key
-- #	  (but level1SigningAlg is not necessary as it is in keys.xml)
-- # -	A dynamic bar code including static and dynamic signatures needs:
-- #	The same elements as a static bar code above,
-- #	level2SigningAlg, level2keyAlg, level2PublicKey, and level2Signature.
-- #
-- #########################################################################################	
	
	
-- ############################################################################################
	

-- type assignments

    -- #########################################################################################
    -- the basic entry point of the data structure 
    -- ##########################################################################################
    UicBarcodeHeader 	::= SEQUENCE 	{ 	
    	-- barcode format type
    	format		            IA5String,	 		
    	                        -- "U1" = UIC ticket 
                
                   
    	level2SignedData 	    Level2DataType,                

    	-- signature is calculated on the PER unaligned encoding of level2 signature data
    	level2Signature         OCTET STRING OPTIONAL
    	
    	
   }
   
   Level2DataType	::= SEQUENCE {
   
       	  level1Data	         Level1DataType,
       	  
       	  -- signature is calculated on the PER unaligned encoding of level1 signature data
       	  level1Signature        OCTET STRING OPTIONAL,
       	
       	  level2Data             DataType OPTIONAL

   }
   
   
   Level1DataType	::= SEQUENCE {
   
    	-- provider of the level1 signature  (RICS code)
    	securityProviderNum INTEGER (1..32000) OPTIONAL,				
    	securityProviderIA5 IA5String          OPTIONAL,	
    	
    	keyId		        INTEGER(0..99999)  OPTIONAL,
    	
    	dataSequence 	    SEQUENCE OF DataType,


      	-- object identifier of the key algorithms
      	--   e.g. 
      	--    ECC P-256     1.2.840.10045.3.1.7             
      	level1KeyAlg        OBJECT IDENTIFIER OPTIONAL,
      	level2KeyAlg        OBJECT IDENTIFIER OPTIONAL,

      	-- object identifier of the signing algorithm
      	--   e.g. 
      	--    DSA SHA224  2.16.840.1.101.3.4.3.1
      	--    DSA SHA256  2.16.840.1.101.3.4.3.2
      	--    ECDSA-256   1.2.840.10045.4.3.2
      	-- algorithm used for signing
      	level1SigningAlg   OBJECT IDENTIFIER OPTIONAL,
      	level2SigningAlg   OBJECT IDENTIFIER OPTIONAL,
      	
        level2PublicKey    OCTET  STRING     OPTIONAL

   }

   DataType ::= SEQUENCE {
    	-- Content of data format:
    	-- FCBn (FCB1 = FCB version 1, FCB2 = FCB version 2)
    	-- FDCn dynamic content
    	-- or proprietary:
    	--  _RICS company code + addon       	
       	dataFormat	    IA5String,      	
    	data	    	OCTET STRING
   }


END