dosipas-ts 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![npm version](https://img.shields.io/npm/v/dosipas-ts)](https://www.npmjs.com/package/dosipas-ts)
2
+
1
3
  # dosipas-ts
2
4
 
3
5
  > **[Try the online playground](https://sysdevrun.github.io/dosipas-ts/)** — decode, encode, sign, verify, and control UIC barcode tickets in your browser.
@@ -86,48 +88,57 @@ l2.decoded // UicDynamicContentData (FDC1) or IntercodeDynamicData (Intercod
86
88
 
87
89
  ## Encoding
88
90
 
91
+ `encodeTicket` accepts the same `UicBarcodeTicket` type returned by `decodeTicket`, so round-tripping works directly:
92
+
89
93
  ```ts
90
- import { encodeTicket, encodeTicketToBytes } from 'dosipas-ts';
91
-
92
- const hex = encodeTicket({
93
- headerVersion: 2,
94
- fcbVersion: 2,
95
- securityProviderNum: 3703,
96
- keyId: 1,
97
- level1KeyAlg: '1.2.840.10045.3.1.7',
98
- level2KeyAlg: '1.2.840.10045.3.1.7',
99
- level1SigningAlg: '1.2.840.10045.4.3.2',
100
- level2SigningAlg: '1.2.840.10045.4.3.2',
101
- level2PublicKey: publicKeyBytes,
102
- level1Signature: level1SigBytes,
103
- level2Signature: level2SigBytes,
104
- railTicket: {
105
- issuingDetail: {
94
+ import { decodeTicket, encodeTicket, encodeTicketToBytes } from 'dosipas-ts';
95
+ import type { UicBarcodeTicket } from 'dosipas-ts';
96
+
97
+ // Round-trip: decode → encode
98
+ const hex = encodeTicket(decodeTicket(originalHex));
99
+
100
+ // Build a ticket from scratch
101
+ const ticket: UicBarcodeTicket = {
102
+ format: 'U2',
103
+ level2SignedData: {
104
+ level1Data: {
106
105
  securityProviderNum: 3703,
107
- issuerNum: 3703,
108
- issuingYear: 2025,
109
- issuingDay: 44,
110
- activated: true,
111
- currency: 'EUR',
112
- currencyFract: 2,
113
- intercodeIssuing: {
114
- networkId: new Uint8Array([0x11, 0x87]),
115
- productRetailer: { retailChannel: 'mobileApplication' },
116
- },
106
+ keyId: 1,
107
+ level1KeyAlg: '1.2.840.10045.3.1.7',
108
+ level1SigningAlg: '1.2.840.10045.4.3.2',
109
+ level2KeyAlg: '1.2.840.10045.3.1.7',
110
+ level2SigningAlg: '1.2.840.10045.4.3.2',
111
+ level2PublicKey: publicKeyBytes,
112
+ dataSequence: [{
113
+ dataFormat: 'FCB3',
114
+ decoded: {
115
+ issuingDetail: {
116
+ issuerNum: 3703,
117
+ issuingYear: 2025,
118
+ issuingDay: 44,
119
+ activated: true,
120
+ specimen: false,
121
+ securePaperTicket: false,
122
+ },
123
+ transportDocument: [
124
+ { ticket: { key: 'openTicket', value: { returnIncluded: false } } },
125
+ ],
126
+ },
127
+ }],
128
+ },
129
+ level1Signature: level1SigBytes,
130
+ level2Data: {
131
+ dataFormat: 'FDC1',
132
+ decoded: { dynamicContentDay: 0, dynamicContentTime: 720 },
117
133
  },
118
- transportDocument: [
119
- { ticketType: 'openTicket', ticket: { /* ... */ } },
120
- ],
121
- },
122
- dynamicData: {
123
- rics: 3703,
124
- dynamicContentDay: 0,
125
- dynamicContentTime: 720,
126
134
  },
127
- });
135
+ level2Signature: level2SigBytes,
136
+ };
137
+
138
+ const encoded = encodeTicket(ticket);
128
139
 
129
140
  // Or get bytes directly
130
- const bytes = encodeTicketToBytes({ /* same input */ });
141
+ const bytes = encodeTicketToBytes(ticket);
131
142
  ```
132
143
 
133
144
  ## Signing
@@ -136,28 +147,39 @@ Sign tickets with ECDSA using the two-pass signing flow (Level 1, then Level 2):
136
147
 
137
148
  ```ts
138
149
  import { signAndEncodeTicket, generateKeyPair } from 'dosipas-ts';
150
+ import type { UicBarcodeTicket } from 'dosipas-ts';
139
151
 
140
152
  const level1Key = generateKeyPair('P-256');
141
153
  const level2Key = generateKeyPair('P-256');
142
154
 
143
- const ticketBytes = signAndEncodeTicket(
144
- {
145
- headerVersion: 2,
146
- fcbVersion: 2,
147
- securityProviderNum: 3703,
148
- keyId: 1,
149
- railTicket: {
150
- issuingDetail: {
151
- issuerNum: 3703,
152
- issuingYear: 2025,
153
- issuingDay: 44,
154
- activated: true,
155
- },
156
- transportDocument: [
157
- { ticketType: 'openTicket', ticket: { /* ... */ } },
158
- ],
155
+ const ticket: UicBarcodeTicket = {
156
+ format: 'U2',
157
+ level2SignedData: {
158
+ level1Data: {
159
+ securityProviderNum: 3703,
160
+ keyId: 1,
161
+ dataSequence: [{
162
+ dataFormat: 'FCB3',
163
+ decoded: {
164
+ issuingDetail: {
165
+ issuerNum: 3703,
166
+ issuingYear: 2025,
167
+ issuingDay: 44,
168
+ activated: true,
169
+ specimen: false,
170
+ securePaperTicket: false,
171
+ },
172
+ transportDocument: [
173
+ { ticket: { key: 'openTicket', value: { returnIncluded: false } } },
174
+ ],
175
+ },
176
+ }],
159
177
  },
160
178
  },
179
+ };
180
+
181
+ const ticketBytes = signAndEncodeTicket(
182
+ ticket,
161
183
  level1Key,
162
184
  level2Key, // omit for static barcodes (Level 1 only)
163
185
  );
@@ -168,14 +190,16 @@ For finer control, sign each level independently:
168
190
  ```ts
169
191
  import { signLevel1, signLevel2 } from 'dosipas-ts';
170
192
 
171
- const level1Sig = signLevel1(input, privateKey, 'P-256');
193
+ const level1Sig = signLevel1(ticket, privateKey, 'P-256');
172
194
  const level2Sig = signLevel2(
173
- { ...input, level1Signature: level1Sig },
195
+ { ...ticket, level2SignedData: { ...ticket.level2SignedData, level1Signature: level1Sig } },
174
196
  level2PrivateKey,
175
197
  'P-256',
176
198
  );
177
199
  ```
178
200
 
201
+ For a fully composable encoding flow using the low-level primitives (`encodeLevel1Data`, `encodeLevel2SignedData`, `encodeUicBarcode`), see [`examples/encoder.ts`](examples/encoder.ts).
202
+
179
203
  ## Signature verification
180
204
 
181
205
  UIC barcodes use a two-level signature scheme:
package/dist/encoder.d.ts CHANGED
@@ -1,40 +1,45 @@
1
1
  import type { RawBytes } from 'asn1-per-ts';
2
- import type { UicBarcodeTicketInput, Level1DataInput, Level2SignedDataInput, UicBarcodeInput, IntercodeDynamicDataInput, UicDynamicContentDataInput } from './types';
2
+ import type { UicBarcodeTicket, Level1Data, Level2Data } from './types';
3
3
  /**
4
4
  * Encode a UIC barcode ticket to a hex string.
5
5
  *
6
- * @param input - The ticket data to encode.
6
+ * @param ticket - The decoded ticket structure to encode.
7
7
  * @returns Hex string of the encoded barcode payload.
8
8
  */
9
- export declare function encodeTicket(input: UicBarcodeTicketInput): string;
9
+ export declare function encodeTicket(ticket: UicBarcodeTicket): string;
10
10
  /**
11
11
  * Encode a UIC barcode ticket to bytes.
12
12
  *
13
- * @param input - The ticket data to encode.
13
+ * @param ticket - The decoded ticket structure to encode.
14
14
  * @returns Uint8Array of the encoded barcode payload.
15
15
  */
16
- export declare function encodeTicketToBytes(input: UicBarcodeTicketInput): Uint8Array;
16
+ export declare function encodeTicketToBytes(ticket: UicBarcodeTicket): Uint8Array;
17
17
  /**
18
- * Encode a Level 2 data block (FDC1 or Intercode dynamic data).
18
+ * Encode a Level 2 data block from a {@link Level2Data} structure.
19
19
  *
20
- * Uses a type discriminant (`'rics' in input`) to distinguish Intercode
21
- * dynamic data from UIC FDC1 dynamic content data.
20
+ * If the `data` field is present, it is used as-is. Otherwise the `decoded`
21
+ * field is PER-encoded based on the `dataFormat`.
22
22
  *
23
- * @param input - FDC1 or Intercode dynamic data to encode.
24
- * @returns Object with `dataFormat` string and encoded `data` bytes.
23
+ * Returns a {@link RawBytes} with the exact PER-encoded bits. The `.data`
24
+ * property gives the `Uint8Array` suitable for signing; the `RawBytes` itself
25
+ * is passed to {@link encodeLevel2SignedData} for bit-precise embedding.
26
+ *
27
+ * @param l2Data - Level 2 data with either raw `data` or `decoded` content.
28
+ * @param format - Header format string (e.g. "U1" or "U2").
29
+ * @returns RawBytes containing the PER-encoded level2Data SEQUENCE.
25
30
  */
26
- export declare function encodeLevel2Data(input: UicDynamicContentDataInput | IntercodeDynamicDataInput): {
27
- dataFormat: string;
28
- data: Uint8Array;
29
- };
31
+ export declare function encodeLevel2Data(l2Data: Level2Data, format: string): RawBytes;
30
32
  /**
31
33
  * Encode the `level1Data` SEQUENCE in isolation.
32
34
  *
33
35
  * Returns a {@link RawBytes} with the exact PER-encoded bits. The `.data`
34
36
  * property gives the `Uint8Array` suitable for signing; the `RawBytes` itself
35
37
  * is passed to {@link encodeLevel2SignedData} for bit-precise embedding.
38
+ *
39
+ * @param level1Data - The Level 1 data to encode.
40
+ * @param format - Header format string (e.g. "U1" or "U2").
36
41
  */
37
- export declare function encodeLevel1Data(input: Level1DataInput): RawBytes;
42
+ export declare function encodeLevel1Data(level1Data: Level1Data, format: string): RawBytes;
38
43
  /**
39
44
  * Encode the `level2SignedData` SEQUENCE.
40
45
  *
@@ -42,12 +47,21 @@ export declare function encodeLevel1Data(input: Level1DataInput): RawBytes;
42
47
  * passthrough. Returns a `RawBytes` for signing and embedding into
43
48
  * {@link encodeUicBarcode}.
44
49
  */
45
- export declare function encodeLevel2SignedData(input: Level2SignedDataInput): RawBytes;
50
+ export declare function encodeLevel2SignedData(input: {
51
+ headerVersion?: number;
52
+ level1Data: RawBytes;
53
+ level1Signature: Uint8Array;
54
+ level2Data?: RawBytes;
55
+ }): RawBytes;
46
56
  /**
47
57
  * Encode the outermost `UicBarcodeHeader` SEQUENCE.
48
58
  *
49
59
  * Embeds pre-encoded `level2SignedData` bytes verbatim via {@link RawBytes}
50
60
  * passthrough. Returns the final barcode payload bytes.
51
61
  */
52
- export declare function encodeUicBarcode(input: UicBarcodeInput): Uint8Array;
62
+ export declare function encodeUicBarcode(input: {
63
+ format: string;
64
+ level2SignedData: RawBytes;
65
+ level2Signature?: Uint8Array;
66
+ }): Uint8Array;
53
67
  //# sourceMappingURL=encoder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAS,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EACV,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,eAAe,EAGf,yBAAyB,EACzB,0BAA0B,EAE3B,MAAM,SAAS,CAAC;AAiFjB;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CA+CjE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,UAAU,CAG5E;AAMD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,0BAA0B,GAAG,yBAAyB,GAC5D;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAkB1C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,QAAQ,CA0BjE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,QAAQ,CAW7E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAenE"}
1
+ {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAS,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EACV,UAAU,EAIX,MAAM,SAAS,CAAC;AA0GjB;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAiD7D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAGxE;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,GACb,QAAQ,CAQV;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAgCjF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,QAAQ,CAAC;IACrB,eAAe,EAAE,UAAU,CAAC;IAC5B,UAAU,CAAC,EAAE,QAAQ,CAAC;CACvB,GAAG,QAAQ,CAWX;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,eAAe,CAAC,EAAE,UAAU,CAAC;CAC9B,GAAG,UAAU,CAWb"}
package/dist/encoder.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Encoder for UIC barcode tickets with Intercode 6 extensions.
3
3
  *
4
- * Encodes a {@link UicBarcodeTicketInput} object into a hex string suitable
4
+ * Encodes a {@link UicBarcodeTicket} object into a hex string suitable
5
5
  * for embedding in an Aztec barcode.
6
6
  */
7
7
  import { SchemaCodec, SchemaBuilder, BitBuffer, } from 'asn1-per-ts';
@@ -12,6 +12,7 @@ import { HEADER_SCHEMAS, RAIL_TICKET_SCHEMAS, INTERCODE_SCHEMAS, DYNAMIC_CONTENT
12
12
  const headerCodecCache = new Map();
13
13
  const level1DataCodecCache = new Map();
14
14
  const level2DataCodecCache = new Map();
15
+ const level2ContentCodecCache = new Map();
15
16
  const ticketCodecCache = new Map();
16
17
  let intercodeIssuingCodec;
17
18
  let intercodeDynamicCodec;
@@ -49,6 +50,19 @@ function getLevel2DataCodec(version) {
49
50
  level2DataCodecCache.set(version, codec);
50
51
  return codec;
51
52
  }
53
+ function getLevel2ContentCodec(version) {
54
+ let codec = level2ContentCodecCache.get(version);
55
+ if (codec)
56
+ return codec;
57
+ const schemas = HEADER_SCHEMAS[version];
58
+ if (!schemas)
59
+ throw new Error(`No schema for header v${version}`);
60
+ const l2Type = schemas.Level2DataType;
61
+ const l2ContentField = l2Type.fields.find((f) => f.name === 'level2Data');
62
+ codec = new SchemaCodec(l2ContentField.schema);
63
+ level2ContentCodecCache.set(version, codec);
64
+ return codec;
65
+ }
52
66
  function getTicketCodecs(version) {
53
67
  let codecs = ticketCodecCache.get(version);
54
68
  if (codecs)
@@ -79,8 +93,20 @@ function getFdc1Codec() {
79
93
  fdc1Codec = new SchemaCodec(DYNAMIC_CONTENT_SCHEMAS.UicDynamicContentData);
80
94
  return fdc1Codec;
81
95
  }
82
- function toHex(bytes) {
83
- return Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('');
96
+ // ---------------------------------------------------------------------------
97
+ // Internal helpers
98
+ // ---------------------------------------------------------------------------
99
+ function parseHeaderVersion(format) {
100
+ const match = format.match(/^U(\d+)$/);
101
+ if (!match)
102
+ throw new Error(`Invalid format "${format}", expected "U1" or "U2"`);
103
+ return parseInt(match[1], 10);
104
+ }
105
+ function parseFcbVersion(dataFormat) {
106
+ const match = dataFormat.match(/^FCB(\d+)$/);
107
+ if (!match)
108
+ throw new Error(`Unsupported dataFormat "${dataFormat}"`);
109
+ return parseInt(match[1], 10);
84
110
  }
85
111
  // ---------------------------------------------------------------------------
86
112
  // Public API
@@ -88,94 +114,93 @@ function toHex(bytes) {
88
114
  /**
89
115
  * Encode a UIC barcode ticket to a hex string.
90
116
  *
91
- * @param input - The ticket data to encode.
117
+ * @param ticket - The decoded ticket structure to encode.
92
118
  * @returns Hex string of the encoded barcode payload.
93
119
  */
94
- export function encodeTicket(input) {
95
- const headerVersion = input.headerVersion ?? 2;
96
- const fcbVersion = input.fcbVersion ?? 2;
97
- // Step 1: Encode the rail ticket data
98
- const railTicketBytes = encodeRailTicket(fcbVersion, input);
99
- // Step 2: Build the data sequence
100
- const dataSequence = [
101
- { dataFormat: `FCB${fcbVersion}`, data: railTicketBytes },
102
- ];
103
- // Step 3: Build Level 2 data (Intercode dynamic or FDC1)
120
+ export function encodeTicket(ticket) {
121
+ const headerVersion = parseHeaderVersion(ticket.format);
122
+ const l1 = ticket.level2SignedData.level1Data;
123
+ // Encode each data sequence entry
124
+ const dataSequence = l1.dataSequence.map(entry => {
125
+ if (entry.data)
126
+ return { dataFormat: entry.dataFormat, data: entry.data };
127
+ if (!entry.decoded)
128
+ throw new Error('DataSequenceEntry must have data or decoded');
129
+ const fcbVersion = parseFcbVersion(entry.dataFormat);
130
+ return {
131
+ dataFormat: entry.dataFormat,
132
+ data: encodeRailTicket(fcbVersion, entry.decoded, l1.securityProviderNum),
133
+ };
134
+ });
135
+ // Encode level2Data if present
104
136
  let level2Data;
105
- if (input.dynamicContentData) {
106
- level2Data = encodeLevel2Data(input.dynamicContentData);
107
- }
108
- else if (input.dynamicData) {
109
- level2Data = encodeLevel2Data(input.dynamicData);
137
+ const l2 = ticket.level2SignedData.level2Data;
138
+ if (l2) {
139
+ level2Data = encodeLevel2Data(l2, ticket.format);
110
140
  }
111
- // Step 4: Build the full header structure
141
+ // Build the full header structure
112
142
  const headerData = {
113
- format: `U${headerVersion}`,
143
+ format: ticket.format,
114
144
  level2SignedData: {
115
145
  level1Data: {
116
- securityProviderNum: input.securityProviderNum,
117
- keyId: input.keyId,
146
+ securityProviderNum: l1.securityProviderNum,
147
+ securityProviderIA5: l1.securityProviderIA5,
148
+ keyId: l1.keyId,
118
149
  dataSequence,
119
- level1KeyAlg: input.level1KeyAlg,
120
- level2KeyAlg: input.level2KeyAlg,
121
- level1SigningAlg: input.level1SigningAlg,
122
- level2SigningAlg: input.level2SigningAlg,
123
- level2PublicKey: input.level2PublicKey,
124
- endOfValidityYear: input.endOfValidityYear,
125
- endOfValidityDay: input.endOfValidityDay,
126
- endOfValidityTime: input.endOfValidityTime,
127
- validityDuration: input.validityDuration,
150
+ level1KeyAlg: l1.level1KeyAlg,
151
+ level2KeyAlg: l1.level2KeyAlg,
152
+ level1SigningAlg: l1.level1SigningAlg,
153
+ level2SigningAlg: l1.level2SigningAlg,
154
+ level2PublicKey: l1.level2PublicKey,
155
+ endOfValidityYear: l1.endOfValidityYear,
156
+ endOfValidityDay: l1.endOfValidityDay,
157
+ endOfValidityTime: l1.endOfValidityTime,
158
+ validityDuration: l1.validityDuration,
128
159
  },
129
- level1Signature: input.level1Signature,
160
+ level1Signature: ticket.level2SignedData.level1Signature,
130
161
  level2Data,
131
162
  },
132
- level2Signature: input.level2Signature,
163
+ level2Signature: ticket.level2Signature,
133
164
  };
134
- // Step 5: Encode the header
135
165
  const codec = getHeaderCodec(headerVersion);
136
166
  return codec.encodeToHex(headerData);
137
167
  }
138
168
  /**
139
169
  * Encode a UIC barcode ticket to bytes.
140
170
  *
141
- * @param input - The ticket data to encode.
171
+ * @param ticket - The decoded ticket structure to encode.
142
172
  * @returns Uint8Array of the encoded barcode payload.
143
173
  */
144
- export function encodeTicketToBytes(input) {
145
- const hex = encodeTicket(input);
174
+ export function encodeTicketToBytes(ticket) {
175
+ const hex = encodeTicket(ticket);
146
176
  return new Uint8Array(hex.match(/.{1,2}/g).map(b => parseInt(b, 16)));
147
177
  }
148
178
  // ---------------------------------------------------------------------------
149
179
  // Composable encoding primitives
150
180
  // ---------------------------------------------------------------------------
151
181
  /**
152
- * Encode a Level 2 data block (FDC1 or Intercode dynamic data).
182
+ * Encode a Level 2 data block from a {@link Level2Data} structure.
153
183
  *
154
- * Uses a type discriminant (`'rics' in input`) to distinguish Intercode
155
- * dynamic data from UIC FDC1 dynamic content data.
184
+ * If the `data` field is present, it is used as-is. Otherwise the `decoded`
185
+ * field is PER-encoded based on the `dataFormat`.
156
186
  *
157
- * @param input - FDC1 or Intercode dynamic data to encode.
158
- * @returns Object with `dataFormat` string and encoded `data` bytes.
187
+ * Returns a {@link RawBytes} with the exact PER-encoded bits. The `.data`
188
+ * property gives the `Uint8Array` suitable for signing; the `RawBytes` itself
189
+ * is passed to {@link encodeLevel2SignedData} for bit-precise embedding.
190
+ *
191
+ * @param l2Data - Level 2 data with either raw `data` or `decoded` content.
192
+ * @param format - Header format string (e.g. "U1" or "U2").
193
+ * @returns RawBytes containing the PER-encoded level2Data SEQUENCE.
159
194
  */
160
- export function encodeLevel2Data(input) {
161
- if ('rics' in input) {
162
- // Intercode dynamic data
163
- const dynamicBytes = getIntercodeDynamicCodec().encode({
164
- dynamicContentDay: input.dynamicContentDay ?? 0,
165
- dynamicContentTime: input.dynamicContentTime,
166
- dynamicContentUTCOffset: input.dynamicContentUTCOffset,
167
- dynamicContentDuration: input.dynamicContentDuration,
168
- });
169
- return {
170
- dataFormat: `_${input.rics}.ID1`,
171
- data: dynamicBytes,
172
- };
173
- }
174
- else {
175
- // FDC1 dynamic content data
176
- const fdc1Bytes = getFdc1Codec().encode(input);
177
- return { dataFormat: 'FDC1', data: fdc1Bytes };
178
- }
195
+ export function encodeLevel2Data(l2Data, format) {
196
+ const headerVersion = parseHeaderVersion(format);
197
+ const data = l2Data.data ?? (() => {
198
+ if (!l2Data.decoded)
199
+ throw new Error('Level2Data must have data or decoded');
200
+ return encodeLevel2DataDecoded(l2Data.dataFormat, l2Data.decoded);
201
+ })();
202
+ const codec = getLevel2ContentCodec(headerVersion);
203
+ return codec.encodeToRawBytes({ dataFormat: l2Data.dataFormat, data });
179
204
  }
180
205
  /**
181
206
  * Encode the `level1Data` SEQUENCE in isolation.
@@ -183,30 +208,41 @@ export function encodeLevel2Data(input) {
183
208
  * Returns a {@link RawBytes} with the exact PER-encoded bits. The `.data`
184
209
  * property gives the `Uint8Array` suitable for signing; the `RawBytes` itself
185
210
  * is passed to {@link encodeLevel2SignedData} for bit-precise embedding.
211
+ *
212
+ * @param level1Data - The Level 1 data to encode.
213
+ * @param format - Header format string (e.g. "U1" or "U2").
186
214
  */
187
- export function encodeLevel1Data(input) {
188
- const headerVersion = input.headerVersion ?? 2;
189
- const fcbVersion = input.fcbVersion ?? 2;
190
- const railTicketBytes = encodeRailTicket(fcbVersion, input);
191
- const dataSequence = [
192
- { dataFormat: `FCB${fcbVersion}`, data: railTicketBytes },
193
- ];
194
- const level1Data = {
195
- securityProviderNum: input.securityProviderNum,
196
- keyId: input.keyId,
215
+ export function encodeLevel1Data(level1Data, format) {
216
+ const headerVersion = parseHeaderVersion(format);
217
+ // Encode each data sequence entry
218
+ const dataSequence = level1Data.dataSequence.map(entry => {
219
+ if (entry.data)
220
+ return { dataFormat: entry.dataFormat, data: entry.data };
221
+ if (!entry.decoded)
222
+ throw new Error('DataSequenceEntry must have data or decoded');
223
+ const fcbVersion = parseFcbVersion(entry.dataFormat);
224
+ return {
225
+ dataFormat: entry.dataFormat,
226
+ data: encodeRailTicket(fcbVersion, entry.decoded, level1Data.securityProviderNum),
227
+ };
228
+ });
229
+ const l1Data = {
230
+ securityProviderNum: level1Data.securityProviderNum,
231
+ securityProviderIA5: level1Data.securityProviderIA5,
232
+ keyId: level1Data.keyId,
197
233
  dataSequence,
198
- level1KeyAlg: input.level1KeyAlg,
199
- level2KeyAlg: input.level2KeyAlg,
200
- level1SigningAlg: input.level1SigningAlg,
201
- level2SigningAlg: input.level2SigningAlg,
202
- level2PublicKey: input.level2PublicKey,
203
- endOfValidityYear: input.endOfValidityYear,
204
- endOfValidityDay: input.endOfValidityDay,
205
- endOfValidityTime: input.endOfValidityTime,
206
- validityDuration: input.validityDuration,
234
+ level1KeyAlg: level1Data.level1KeyAlg,
235
+ level2KeyAlg: level1Data.level2KeyAlg,
236
+ level1SigningAlg: level1Data.level1SigningAlg,
237
+ level2SigningAlg: level1Data.level2SigningAlg,
238
+ level2PublicKey: level1Data.level2PublicKey,
239
+ endOfValidityYear: level1Data.endOfValidityYear,
240
+ endOfValidityDay: level1Data.endOfValidityDay,
241
+ endOfValidityTime: level1Data.endOfValidityTime,
242
+ validityDuration: level1Data.validityDuration,
207
243
  };
208
244
  const codec = getLevel1DataCodec(headerVersion);
209
- return codec.encodeToRawBytes(level1Data);
245
+ return codec.encodeToRawBytes(l1Data);
210
246
  }
211
247
  /**
212
248
  * Encode the `level2SignedData` SEQUENCE.
@@ -232,11 +268,7 @@ export function encodeLevel2SignedData(input) {
232
268
  * passthrough. Returns the final barcode payload bytes.
233
269
  */
234
270
  export function encodeUicBarcode(input) {
235
- const headerVersionMatch = input.format.match(/^U(\d+)$/);
236
- if (!headerVersionMatch) {
237
- throw new Error(`Invalid format "${input.format}", expected "U1" or "U2"`);
238
- }
239
- const headerVersion = parseInt(headerVersionMatch[1], 10);
271
+ const headerVersion = parseHeaderVersion(input.format);
240
272
  const headerData = {
241
273
  format: input.format,
242
274
  level2SignedData: input.level2SignedData,
@@ -248,46 +280,52 @@ export function encodeUicBarcode(input) {
248
280
  // ---------------------------------------------------------------------------
249
281
  // Internal encoding helpers
250
282
  // ---------------------------------------------------------------------------
251
- function encodeRailTicket(fcbVersion, input) {
252
- const iss = input.railTicket.issuingDetail;
253
- // Build extension if intercode issuing data present
254
- let extension;
255
- if (iss.intercodeIssuing) {
256
- const rics = iss.securityProviderNum ?? input.securityProviderNum ?? 0;
257
- const issuingBytes = getIntercodeIssuingCodec().encode({
258
- intercodeVersion: iss.intercodeIssuing.intercodeVersion ?? 1,
259
- intercodeInstanciation: iss.intercodeIssuing.intercodeInstanciation ?? 1,
260
- networkId: iss.intercodeIssuing.networkId,
261
- productRetailer: iss.intercodeIssuing.productRetailer,
262
- });
263
- extension = {
264
- extensionId: iss.intercodeIssuing.extensionId ?? `_${rics}II1`,
265
- extensionData: issuingBytes,
266
- };
283
+ /**
284
+ * Encode the decoded content of a Level 2 data block.
285
+ */
286
+ function encodeLevel2DataDecoded(dataFormat, decoded) {
287
+ if (dataFormat === 'FDC1') {
288
+ return getFdc1Codec().encode(decoded);
289
+ }
290
+ else {
291
+ // Intercode dynamic data
292
+ return getIntercodeDynamicCodec().encode(decoded);
293
+ }
294
+ }
295
+ /**
296
+ * Encode rail ticket data (UicRailTicketData) to PER bytes.
297
+ */
298
+ function encodeRailTicket(fcbVersion, railTicket, securityProviderNum) {
299
+ const iss = railTicket.issuingDetail;
300
+ let issuingDetail;
301
+ if (iss) {
302
+ // Handle extension: re-encode intercode if present, otherwise pass through raw
303
+ const { intercodeIssuing, extension: rawExtension, ...issuingRest } = iss;
304
+ let extension;
305
+ if (intercodeIssuing) {
306
+ const issuingBytes = getIntercodeIssuingCodec().encode({
307
+ intercodeVersion: intercodeIssuing.intercodeVersion ?? 1,
308
+ intercodeInstanciation: intercodeIssuing.intercodeInstanciation ?? 1,
309
+ networkId: intercodeIssuing.networkId,
310
+ productRetailer: intercodeIssuing.productRetailer,
311
+ });
312
+ extension = {
313
+ extensionId: intercodeIssuing.extensionId ?? `_${iss.securityProviderNum ?? securityProviderNum ?? 0}II1`,
314
+ extensionData: issuingBytes,
315
+ };
316
+ }
317
+ else {
318
+ extension = rawExtension;
319
+ }
320
+ issuingDetail = { ...issuingRest, extension };
321
+ // FCB3 requires issuingTime as mandatory — default to 0 if not provided
322
+ if (fcbVersion >= 3 && issuingDetail.issuingTime == null) {
323
+ issuingDetail.issuingTime = 0;
324
+ }
267
325
  }
268
- // Build the issuing detail
269
- const issuingDetail = {
270
- securityProviderNum: iss.securityProviderNum,
271
- issuerNum: iss.issuerNum,
272
- issuingYear: iss.issuingYear,
273
- issuingDay: iss.issuingDay,
274
- issuingTime: iss.issuingTime,
275
- issuerName: iss.issuerName,
276
- specimen: iss.specimen ?? false,
277
- securePaperTicket: iss.securePaperTicket ?? false,
278
- activated: iss.activated ?? true,
279
- currency: iss.currency,
280
- currencyFract: iss.currencyFract,
281
- issuerPNR: iss.issuerPNR,
282
- extension,
283
- };
284
- // Build transport documents
285
- const transportDocument = input.railTicket.transportDocument?.map((doc) => ({
286
- ticket: { key: doc.ticketType, value: doc.ticket },
287
- }));
288
326
  // Validate traveler birth-day fields match the target FCB version
289
- if (input.railTicket.travelerDetail?.traveler) {
290
- for (const t of input.railTicket.travelerDetail.traveler) {
327
+ if (railTicket.travelerDetail?.traveler) {
328
+ for (const t of railTicket.travelerDetail.traveler) {
291
329
  if (fcbVersion >= 2 && t.dayOfBirth !== undefined) {
292
330
  throw new Error(`Traveler field "dayOfBirth" is not valid for FCB v${fcbVersion}. Use "dayOfBirthInMonth" instead.`);
293
331
  }
@@ -296,12 +334,12 @@ function encodeRailTicket(fcbVersion, input) {
296
334
  }
297
335
  }
298
336
  }
299
- // Build the full rail ticket data
337
+ // Transport documents pass through directly (already { ticket: { key, value } } format)
300
338
  const ticketData = {
301
339
  issuingDetail,
302
- travelerDetail: input.railTicket.travelerDetail,
303
- transportDocument,
304
- controlDetail: input.railTicket.controlDetail,
340
+ travelerDetail: railTicket.travelerDetail,
341
+ transportDocument: railTicket.transportDocument,
342
+ controlDetail: railTicket.controlDetail,
305
343
  };
306
344
  const codecs = getTicketCodecs(fcbVersion);
307
345
  const buf = BitBuffer.alloc();
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@ export { extractSignedData } from './signed-data';
7
7
  export { signLevel1, signLevel2, signAndEncodeTicket, signPayload, generateKeyPair, getPublicKey, CURVES } from './signer';
8
8
  export { SAMPLE_TICKET_HEX, SNCF_TER_TICKET_HEX, SOLEA_TICKET_HEX, BUS_ARDECHE_TICKET_HEX, BUS_AIN_TICKET_HEX, DROME_BUS_TICKET_HEX, CTS_TICKET_HEX, GRAND_EST_U1_FCB3_HEX } from './fixtures';
9
9
  export { SNCF_TER_SIGNATURES, SOLEA_SIGNATURES, CTS_SIGNATURES } from './signature-fixtures';
10
- export type { UicBarcodeTicket, Level2SignedData, Level1Data, DataSequenceEntry, Level2Data, UicRailTicketData, IssuingDetail, GeoCoordinate, ExtensionData, TransportDocumentData, IntercodeIssuingData, IntercodeDynamicData, UicDynamicContentData, TimeStampData, DynamicContentGeoCoordinate, DynamicContentExtensionData, RetailChannel, ProductRetailerData, TravelerDetail, TravelerInfo, CustomerStatus, ControlDetail, CardReference, TicketLink, UicBarcodeTicketInput, RailTicketInput, IssuingDetailInput, IntercodeIssuingDataInput, IntercodeDynamicDataInput, UicDynamicContentDataInput, TravelerDetailInput, TransportDocumentInput, Level1DataInput, Level2SignedDataInput, UicBarcodeInput, SignatureVerificationResult, SignatureLevelResult, VerifyOptions, Level1KeyProvider, ControlOptions, ControlResult, CheckResult, } from './types';
10
+ export type { UicBarcodeTicket, Level2SignedData, Level1Data, DataSequenceEntry, Level2Data, UicRailTicketData, IssuingDetail, GeoCoordinate, ExtensionData, TransportDocumentData, IntercodeIssuingData, IntercodeDynamicData, UicDynamicContentData, TimeStampData, DynamicContentGeoCoordinate, DynamicContentExtensionData, RetailChannel, ProductRetailerData, TravelerDetail, TravelerInfo, CustomerStatus, ControlDetail, CardReference, TicketLink, SignatureVerificationResult, SignatureLevelResult, VerifyOptions, Level1KeyProvider, ControlOptions, ControlResult, CheckResult, } from './types';
11
11
  export type { UicPublicKeyEntry } from './verifier';
12
12
  export type { ExtractedSignedData } from './signed-data';
13
13
  export type { CurveName, CurveConfig, SigningKeyPair } from './signer';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC5I,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC3H,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/L,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE7F,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,2BAA2B,EAC3B,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,WAAW,GACZ,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC5I,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC3H,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/L,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE7F,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,UAAU,EACV,2BAA2B,EAC3B,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,WAAW,GACZ,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC5I,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC3H,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/L,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAmD7F,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC5I,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC3H,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/L,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAwC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
package/dist/signer.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { UicBarcodeTicketInput } from './types';
1
+ import type { UicBarcodeTicket } from './types';
2
2
  /** Supported ECDSA curve names. */
3
3
  export type CurveName = 'P-256' | 'P-384' | 'P-521';
4
4
  /** Curve configuration with OIDs for encoding into ticket headers. */
@@ -51,12 +51,12 @@ export declare function getPublicKey(privateKey: Uint8Array, curve: CurveName):
51
51
  * Encodes the ticket with a zero-filled Level 1 signature placeholder,
52
52
  * extracts the Level 1 signed data, and produces the DER signature.
53
53
  *
54
- * @param input - Ticket input **without** `level1Signature` set (it will be overwritten).
54
+ * @param ticket - Ticket (level1Signature will be overwritten with a zero placeholder).
55
55
  * @param privateKey - Level 1 private key bytes.
56
56
  * @param curve - The ECDSA curve.
57
57
  * @returns DER-encoded Level 1 signature bytes.
58
58
  */
59
- export declare function signLevel1(input: UicBarcodeTicketInput, privateKey: Uint8Array, curve: CurveName): Uint8Array;
59
+ export declare function signLevel1(ticket: UicBarcodeTicket, privateKey: Uint8Array, curve: CurveName): Uint8Array;
60
60
  /**
61
61
  * Sign Level 2 data of a ticket.
62
62
  *
@@ -64,12 +64,12 @@ export declare function signLevel1(input: UicBarcodeTicketInput, privateKey: Uin
64
64
  * Level 2 placeholder, extracts the Level 2 signed data, and produces the
65
65
  * DER signature.
66
66
  *
67
- * @param input - Ticket input with `level1Signature` already set.
67
+ * @param ticket - Ticket with `level2SignedData.level1Signature` already set.
68
68
  * @param privateKey - Level 2 private key bytes.
69
69
  * @param curve - The ECDSA curve.
70
70
  * @returns DER-encoded Level 2 signature bytes.
71
71
  */
72
- export declare function signLevel2(input: UicBarcodeTicketInput, privateKey: Uint8Array, curve: CurveName): Uint8Array;
72
+ export declare function signLevel2(ticket: UicBarcodeTicket, privateKey: Uint8Array, curve: CurveName): Uint8Array;
73
73
  /**
74
74
  * Sign and encode a complete ticket with both Level 1 and Level 2 signatures.
75
75
  *
@@ -80,10 +80,10 @@ export declare function signLevel2(input: UicBarcodeTicketInput, privateKey: Uin
80
80
  *
81
81
  * When `level2Key` is omitted, only Level 1 signing is performed (static barcode mode).
82
82
  *
83
- * @param input - Ticket data to encode (signature fields are overwritten).
83
+ * @param ticket - Ticket data to encode (signature fields are overwritten).
84
84
  * @param level1Key - Level 1 signing key pair.
85
85
  * @param level2Key - Optional Level 2 signing key pair.
86
86
  * @returns Encoded ticket bytes with valid signatures.
87
87
  */
88
- export declare function signAndEncodeTicket(input: UicBarcodeTicketInput, level1Key: SigningKeyPair, level2Key?: SigningKeyPair): Uint8Array;
88
+ export declare function signAndEncodeTicket(ticket: UicBarcodeTicket, level1Key: SigningKeyPair, level2Key?: SigningKeyPair): Uint8Array;
89
89
  //# sourceMappingURL=signer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAMrD,mCAAmC;AACnC,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpD,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,UAAU,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC;CAClB;AAMD,kDAAkD;AAClD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAgBjD,CAAC;AA8CF;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,SAAS,GACf,UAAU,CAEZ;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,cAAc,CAKhE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,GAAG,UAAU,CAGjF;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,qBAAqB,EAC5B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,SAAS,GACf,UAAU,CAiBZ;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,qBAAqB,EAC5B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,SAAS,GACf,UAAU,CAkBZ;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,qBAAqB,EAC5B,SAAS,EAAE,cAAc,EACzB,SAAS,CAAC,EAAE,cAAc,GACzB,UAAU,CAsDZ"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,SAAS,CAAC;AAM5D,mCAAmC;AACnC,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpD,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,UAAU,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC;CAClB;AAMD,kDAAkD;AAClD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAgBjD,CAAC;AA8CF;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,SAAS,GACf,UAAU,CAEZ;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,cAAc,CAKhE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,GAAG,UAAU,CAGjF;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,SAAS,GACf,UAAU,CAsBZ;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,SAAS,GACf,UAAU,CAyBZ;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,cAAc,EACzB,SAAS,CAAC,EAAE,cAAc,GACzB,UAAU,CAiDZ"}
package/dist/signer.js CHANGED
@@ -122,22 +122,27 @@ export function getPublicKey(privateKey, curve) {
122
122
  * Encodes the ticket with a zero-filled Level 1 signature placeholder,
123
123
  * extracts the Level 1 signed data, and produces the DER signature.
124
124
  *
125
- * @param input - Ticket input **without** `level1Signature` set (it will be overwritten).
125
+ * @param ticket - Ticket (level1Signature will be overwritten with a zero placeholder).
126
126
  * @param privateKey - Level 1 private key bytes.
127
127
  * @param curve - The ECDSA curve.
128
128
  * @returns DER-encoded Level 1 signature bytes.
129
129
  */
130
- export function signLevel1(input, privateKey, curve) {
130
+ export function signLevel1(ticket, privateKey, curve) {
131
131
  const curveConfig = CURVES[curve];
132
132
  const zeroSig = new Uint8Array(maxDerSigSize(curve));
133
- // Prepare input with algorithm OIDs and zero placeholder
133
+ const l1 = ticket.level2SignedData.level1Data;
134
134
  const prepared = {
135
- ...input,
136
- level1KeyAlg: input.level1KeyAlg ?? curveConfig.keyAlgOid,
137
- level1SigningAlg: input.level1SigningAlg ?? curveConfig.sigAlgOid,
138
- level1Signature: zeroSig,
139
- // Keep existing L2 signature or use zero
140
- level2Signature: input.level2Signature ?? new Uint8Array(0),
135
+ ...ticket,
136
+ level2SignedData: {
137
+ ...ticket.level2SignedData,
138
+ level1Data: {
139
+ ...l1,
140
+ level1KeyAlg: l1.level1KeyAlg ?? curveConfig.keyAlgOid,
141
+ level1SigningAlg: l1.level1SigningAlg ?? curveConfig.sigAlgOid,
142
+ },
143
+ level1Signature: zeroSig,
144
+ },
145
+ level2Signature: ticket.level2Signature ?? new Uint8Array(0),
141
146
  };
142
147
  const bytes = encodeTicketToBytes(prepared);
143
148
  const extracted = extractSignedData(bytes);
@@ -150,21 +155,28 @@ export function signLevel1(input, privateKey, curve) {
150
155
  * Level 2 placeholder, extracts the Level 2 signed data, and produces the
151
156
  * DER signature.
152
157
  *
153
- * @param input - Ticket input with `level1Signature` already set.
158
+ * @param ticket - Ticket with `level2SignedData.level1Signature` already set.
154
159
  * @param privateKey - Level 2 private key bytes.
155
160
  * @param curve - The ECDSA curve.
156
161
  * @returns DER-encoded Level 2 signature bytes.
157
162
  */
158
- export function signLevel2(input, privateKey, curve) {
159
- if (!input.level1Signature) {
163
+ export function signLevel2(ticket, privateKey, curve) {
164
+ if (!ticket.level2SignedData.level1Signature) {
160
165
  throw new Error('Level 1 signature must be set before signing Level 2');
161
166
  }
162
167
  const curveConfig = CURVES[curve];
163
168
  const zeroSig = new Uint8Array(maxDerSigSize(curve));
169
+ const l1 = ticket.level2SignedData.level1Data;
164
170
  const prepared = {
165
- ...input,
166
- level2KeyAlg: input.level2KeyAlg ?? curveConfig.keyAlgOid,
167
- level2SigningAlg: input.level2SigningAlg ?? curveConfig.sigAlgOid,
171
+ ...ticket,
172
+ level2SignedData: {
173
+ ...ticket.level2SignedData,
174
+ level1Data: {
175
+ ...l1,
176
+ level2KeyAlg: l1.level2KeyAlg ?? curveConfig.keyAlgOid,
177
+ level2SigningAlg: l1.level2SigningAlg ?? curveConfig.sigAlgOid,
178
+ },
179
+ },
168
180
  level2Signature: zeroSig,
169
181
  };
170
182
  const bytes = encodeTicketToBytes(prepared);
@@ -181,48 +193,41 @@ export function signLevel2(input, privateKey, curve) {
181
193
  *
182
194
  * When `level2Key` is omitted, only Level 1 signing is performed (static barcode mode).
183
195
  *
184
- * @param input - Ticket data to encode (signature fields are overwritten).
196
+ * @param ticket - Ticket data to encode (signature fields are overwritten).
185
197
  * @param level1Key - Level 1 signing key pair.
186
198
  * @param level2Key - Optional Level 2 signing key pair.
187
199
  * @returns Encoded ticket bytes with valid signatures.
188
200
  */
189
- export function signAndEncodeTicket(input, level1Key, level2Key) {
201
+ export function signAndEncodeTicket(ticket, level1Key, level2Key) {
190
202
  const l1Curve = CURVES[level1Key.curve];
191
- const headerVersion = input.headerVersion ?? 2;
192
- const format = `U${headerVersion}`;
203
+ const l1 = ticket.level2SignedData.level1Data;
204
+ // Build level1Data with algorithm OIDs and L2 public key.
205
+ // Always set OIDs from the key pair (overriding any existing values from a decoded ticket).
206
+ const level1Data = {
207
+ ...l1,
208
+ level1KeyAlg: l1Curve.keyAlgOid,
209
+ level2KeyAlg: level2Key ? CURVES[level2Key.curve].keyAlgOid : l1.level2KeyAlg,
210
+ level1SigningAlg: l1Curve.sigAlgOid,
211
+ level2SigningAlg: level2Key ? CURVES[level2Key.curve].sigAlgOid : l1.level2SigningAlg,
212
+ level2PublicKey: level2Key ? level2Key.publicKey : l1.level2PublicKey,
213
+ };
193
214
  // Step 1: Encode level1Data
194
- const level1Raw = encodeLevel1Data({
195
- headerVersion,
196
- fcbVersion: input.fcbVersion,
197
- securityProviderNum: input.securityProviderNum,
198
- keyId: input.keyId,
199
- level1KeyAlg: input.level1KeyAlg ?? l1Curve.keyAlgOid,
200
- level2KeyAlg: level2Key ? (input.level2KeyAlg ?? CURVES[level2Key.curve].keyAlgOid) : input.level2KeyAlg,
201
- level1SigningAlg: input.level1SigningAlg ?? l1Curve.sigAlgOid,
202
- level2SigningAlg: level2Key ? (input.level2SigningAlg ?? CURVES[level2Key.curve].sigAlgOid) : input.level2SigningAlg,
203
- level2PublicKey: level2Key ? level2Key.publicKey : input.level2PublicKey,
204
- endOfValidityYear: input.endOfValidityYear,
205
- endOfValidityDay: input.endOfValidityDay,
206
- endOfValidityTime: input.endOfValidityTime,
207
- validityDuration: input.validityDuration,
208
- railTicket: input.railTicket,
209
- });
215
+ const level1Raw = encodeLevel1Data(level1Data, ticket.format);
210
216
  // Step 2: Sign level1Data
211
217
  const level1Sig = signPayload(level1Raw.data, level1Key.privateKey, level1Key.curve);
212
218
  // Step 3: Build level2Data if present
213
- let level2Data;
214
- if (input.dynamicContentData) {
215
- level2Data = encodeLevel2Data(input.dynamicContentData);
216
- }
217
- else if (input.dynamicData) {
218
- level2Data = encodeLevel2Data(input.dynamicData);
219
+ let level2DataEncoded;
220
+ const l2 = ticket.level2SignedData.level2Data;
221
+ if (l2) {
222
+ level2DataEncoded = encodeLevel2Data(l2, ticket.format);
219
223
  }
220
224
  // Step 4: Encode level2SignedData
225
+ const headerVersion = parseInt(ticket.format.replace('U', ''), 10);
221
226
  const level2Raw = encodeLevel2SignedData({
222
227
  headerVersion,
223
228
  level1Data: level1Raw,
224
229
  level1Signature: level1Sig,
225
- level2Data,
230
+ level2Data: level2DataEncoded,
226
231
  });
227
232
  // Step 5: Sign level2SignedData (if level2Key provided)
228
233
  let level2Sig;
@@ -231,7 +236,7 @@ export function signAndEncodeTicket(input, level1Key, level2Key) {
231
236
  }
232
237
  // Step 6: Encode final barcode
233
238
  return encodeUicBarcode({
234
- format,
239
+ format: ticket.format,
235
240
  level2SignedData: level2Raw,
236
241
  level2Signature: level2Sig,
237
242
  });
@@ -1 +1 @@
1
- {"version":3,"file":"signer.js","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -43,8 +43,8 @@ export interface Level1Data {
43
43
  export interface DataSequenceEntry {
44
44
  /** Data format identifier (e.g. "FCB1", "FCB2", "FCB3"). */
45
45
  dataFormat: string;
46
- /** Raw PER-encoded data bytes. */
47
- data: Uint8Array;
46
+ /** Raw PER-encoded data bytes (produced by the encoder when absent). */
47
+ data?: Uint8Array;
48
48
  /** Decoded UicRailTicketData (when dataFormat is FCBn). */
49
49
  decoded?: UicRailTicketData;
50
50
  }
@@ -52,8 +52,8 @@ export interface DataSequenceEntry {
52
52
  export interface Level2Data {
53
53
  /** Data format identifier (e.g. "FDC1", "_3703.ID1"). */
54
54
  dataFormat: string;
55
- /** Raw PER-encoded data bytes. */
56
- data: Uint8Array;
55
+ /** Raw PER-encoded data bytes (produced by the encoder when absent). */
56
+ data?: Uint8Array;
57
57
  /** Decoded dynamic content data (UicDynamicContentData for FDC1, IntercodeDynamicData for _RICS.ID1). */
58
58
  decoded?: UicDynamicContentData | IntercodeDynamicData;
59
59
  }
@@ -229,157 +229,6 @@ export interface UicDynamicContentData {
229
229
  dynamicContentResponseToChallenge?: DynamicContentExtensionData[];
230
230
  dynamicContentExtension?: DynamicContentExtensionData;
231
231
  }
232
- /** Input for encoding a UIC barcode ticket. */
233
- export interface UicBarcodeTicketInput {
234
- /** Header version (1 or 2). Default: 2. */
235
- headerVersion?: number;
236
- /** RICS code of the security provider. */
237
- securityProviderNum?: number;
238
- /** Key ID for signature verification. */
239
- keyId?: number;
240
- /** Level 1 key algorithm OID. */
241
- level1KeyAlg?: string;
242
- /** Level 2 key algorithm OID. */
243
- level2KeyAlg?: string;
244
- /** Level 1 signing algorithm OID. */
245
- level1SigningAlg?: string;
246
- /** Level 2 signing algorithm OID. */
247
- level2SigningAlg?: string;
248
- /** Level 2 public key bytes. */
249
- level2PublicKey?: Uint8Array;
250
- /** Level 1 signature bytes (placeholder). */
251
- level1Signature?: Uint8Array;
252
- /** Level 2 signature bytes (placeholder). */
253
- level2Signature?: Uint8Array;
254
- /** End of validity year (2016-2269, v2 header only). */
255
- endOfValidityYear?: number;
256
- /** End of validity day (1-366). */
257
- endOfValidityDay?: number;
258
- /** End of validity time in minutes (0-1439). */
259
- endOfValidityTime?: number;
260
- /** Validity duration in seconds (1-3600). */
261
- validityDuration?: number;
262
- /** FCB version (1, 2 or 3). Default: 2. */
263
- fcbVersion?: number;
264
- /** The rail ticket data to encode. */
265
- railTicket: RailTicketInput;
266
- /** Intercode 6 dynamic data for Level 2 (encoded as _RICS.ID1). */
267
- dynamicData?: IntercodeDynamicDataInput;
268
- /** UIC Dynamic Content Data for Level 2 (encoded as FDC1). */
269
- dynamicContentData?: UicDynamicContentDataInput;
270
- }
271
- export interface RailTicketInput {
272
- issuingDetail: IssuingDetailInput;
273
- travelerDetail?: TravelerDetailInput;
274
- transportDocument?: TransportDocumentInput[];
275
- controlDetail?: Record<string, unknown>;
276
- }
277
- export interface IssuingDetailInput {
278
- securityProviderNum?: number;
279
- issuerNum?: number;
280
- issuingYear: number;
281
- issuingDay: number;
282
- issuingTime?: number;
283
- issuerName?: string;
284
- specimen?: boolean;
285
- securePaperTicket?: boolean;
286
- activated?: boolean;
287
- currency?: string;
288
- currencyFract?: number;
289
- issuerPNR?: string;
290
- /** Intercode 6 issuing extension data. */
291
- intercodeIssuing?: IntercodeIssuingDataInput;
292
- }
293
- export interface IntercodeIssuingDataInput {
294
- /** Override the generated extension ID (e.g. "+FRII1"). When omitted, defaults to `_<RICS>II1`. */
295
- extensionId?: string;
296
- intercodeVersion?: number;
297
- intercodeInstanciation?: number;
298
- networkId: Uint8Array;
299
- productRetailer?: ProductRetailerData;
300
- }
301
- export interface IntercodeDynamicDataInput {
302
- /** RICS code for the dataFormat field (e.g. 3703 -> "_3703.ID1"). */
303
- rics: number;
304
- dynamicContentDay?: number;
305
- dynamicContentTime?: number;
306
- dynamicContentUTCOffset?: number;
307
- dynamicContentDuration?: number;
308
- }
309
- /** Input for encoding UIC Dynamic Content Data (FDC1 format). */
310
- export interface UicDynamicContentDataInput {
311
- dynamicContentMobileAppId?: string;
312
- dynamicContentTimeStamp?: TimeStampData;
313
- dynamicContentGeoCoordinate?: DynamicContentGeoCoordinate;
314
- dynamicContentResponseToChallenge?: DynamicContentExtensionData[];
315
- dynamicContentExtension?: DynamicContentExtensionData;
316
- }
317
- export interface TravelerDetailInput {
318
- traveler?: Partial<TravelerInfo>[];
319
- preferredLanguage?: string;
320
- groupName?: string;
321
- }
322
- export interface TransportDocumentInput {
323
- ticketType: string;
324
- ticket: Record<string, unknown>;
325
- }
326
- /** Input for encoding the level1Data SEQUENCE in isolation. */
327
- export interface Level1DataInput {
328
- /** Header version (1 or 2). Default: 2. */
329
- headerVersion?: number;
330
- /** FCB version (1, 2 or 3). Default: 2. */
331
- fcbVersion?: number;
332
- /** RICS code of the security provider. */
333
- securityProviderNum?: number;
334
- /** Key ID for signature verification. */
335
- keyId?: number;
336
- /** Level 1 key algorithm OID. */
337
- level1KeyAlg?: string;
338
- /** Level 2 key algorithm OID. */
339
- level2KeyAlg?: string;
340
- /** Level 1 signing algorithm OID. */
341
- level1SigningAlg?: string;
342
- /** Level 2 signing algorithm OID. */
343
- level2SigningAlg?: string;
344
- /** Level 2 public key bytes. */
345
- level2PublicKey?: Uint8Array;
346
- /** End of validity year (2016-2269, v2 header only). */
347
- endOfValidityYear?: number;
348
- /** End of validity day (1-366). */
349
- endOfValidityDay?: number;
350
- /** End of validity time in minutes (0-1439). */
351
- endOfValidityTime?: number;
352
- /** Validity duration in seconds (1-3600). */
353
- validityDuration?: number;
354
- /** The rail ticket data to encode. */
355
- railTicket: RailTicketInput;
356
- }
357
- /**
358
- * Input for encoding the level2SignedData SEQUENCE.
359
- * Uses pre-encoded RawBytes from asn1-per-ts for level1Data passthrough.
360
- */
361
- export interface Level2SignedDataInput {
362
- /** Header version (1 or 2). Default: 2. */
363
- headerVersion?: number;
364
- /** Pre-encoded level1Data bytes (from encodeLevel1Data). */
365
- level1Data: import('asn1-per-ts').RawBytes;
366
- /** Level 1 DER signature bytes. */
367
- level1Signature: Uint8Array;
368
- /** Optional level 2 data block. */
369
- level2Data?: {
370
- dataFormat: string;
371
- data: Uint8Array;
372
- };
373
- }
374
- /** Input for encoding the outermost UicBarcodeHeader. */
375
- export interface UicBarcodeInput {
376
- /** Header format string ("U1" or "U2"). */
377
- format: string;
378
- /** Pre-encoded level2SignedData bytes (from encodeLevel2SignedData). */
379
- level2SignedData: import('asn1-per-ts').RawBytes;
380
- /** Level 2 DER signature bytes. */
381
- level2Signature?: Uint8Array;
382
- }
383
232
  /** Options for ticket control / validation. */
384
233
  export interface ControlOptions {
385
234
  /** Reference date/time for temporal checks. Defaults to `new Date()`. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dosipas-ts",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "UIC barcode ticket encoder/decoder/verifier with Intercode 6 extensions",
5
5
  "type": "module",
6
6
  "exports": {
@@ -0,0 +1,14 @@
1
+ # UIC Barcode Schemas
2
+
3
+ Pre-compiled JSON schemas for UIC barcode structures, derived from the ASN.1 definitions in the [UIC-barcode](https://github.com/UnionInternationalCheminsdeFer/UIC-barcode) repository.
4
+
5
+ | Local file | Source | Description |
6
+ |---|---|---|
7
+ | `uicBarcodeHeader_v1.schema.json` | [`uicBarcodeHeader_v1.0.0.asn`](https://github.com/UnionInternationalCheminsdeFer/UIC-barcode/blob/master/misc/uicBarcodeHeader_v1.0.0.asn) | UIC barcode header (v1) |
8
+ | `uicBarcodeHeader_v2.schema.json` | [`uicBarcodeHeader_v2.0.1.asn`](https://github.com/UnionInternationalCheminsdeFer/UIC-barcode/blob/master/misc/uicBarcodeHeader_v2.0.1.asn) | UIC barcode header (v2) |
9
+ | `uicRailTicketData_v1.schema.json` | [`uicRailTicketData_v1.3.5.asn`](https://github.com/UnionInternationalCheminsdeFer/UIC-barcode/blob/master/misc/uicRailTicketData_v1.3.5.asn) | FCB rail ticket data (v1) |
10
+ | `uicRailTicketData_v2.schema.json` | [`uicRailTicketData_v2.0.3.asn`](https://github.com/UnionInternationalCheminsdeFer/UIC-barcode/blob/master/misc/uicRailTicketData_v2.0.3.asn) | FCB rail ticket data (v2) |
11
+ | `uicRailTicketData_v3.schema.json` | [`uicRailTicketData_v3.0.5.asn`](https://github.com/UnionInternationalCheminsdeFer/UIC-barcode/blob/master/misc/uicRailTicketData_v3.0.5.asn) | FCB rail ticket data (v3) |
12
+ | `uicDynamicContentData_v1.asn` | [`uicDynamicContentData_v1.0.1.asn`](https://github.com/UnionInternationalCheminsdeFer/UIC-barcode/blob/master/misc/uicDynamicContentData_v1.0.1.asn) | Dynamic content data (v1, ASN.1 source) |
13
+ | `uicDynamicContentData_v1.schema.json` | [`uicDynamicContentData_v1.0.1.asn`](https://github.com/UnionInternationalCheminsdeFer/UIC-barcode/blob/master/misc/uicDynamicContentData_v1.0.1.asn) | Dynamic content data (v1, compiled) |
14
+ | `intercode6.schema.json` | — | Intercode Part 6 issuing and dynamic data extensions |