dosipas-ts 1.2.0 → 1.3.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 +76 -54
- package/dist/encoder.d.ts +28 -13
- package/dist/encoder.d.ts.map +1 -1
- package/dist/encoder.js +155 -128
- package/dist/encoder.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/signer.d.ts +7 -7
- package/dist/signer.d.ts.map +1 -1
- package/dist/signer.js +48 -43
- package/dist/signer.js.map +1 -1
- package/dist/types.d.ts +4 -155
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
[](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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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(
|
|
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
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
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,9 +190,9 @@ For finer control, sign each level independently:
|
|
|
168
190
|
```ts
|
|
169
191
|
import { signLevel1, signLevel2 } from 'dosipas-ts';
|
|
170
192
|
|
|
171
|
-
const level1Sig = signLevel1(
|
|
193
|
+
const level1Sig = signLevel1(ticket, privateKey, 'P-256');
|
|
172
194
|
const level2Sig = signLevel2(
|
|
173
|
-
{ ...
|
|
195
|
+
{ ...ticket, level2SignedData: { ...ticket.level2SignedData, level1Signature: level1Sig } },
|
|
174
196
|
level2PrivateKey,
|
|
175
197
|
'P-256',
|
|
176
198
|
);
|
package/dist/encoder.d.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import type { RawBytes } from 'asn1-per-ts';
|
|
2
|
-
import type {
|
|
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
|
|
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(
|
|
9
|
+
export declare function encodeTicket(ticket: UicBarcodeTicket): string;
|
|
10
10
|
/**
|
|
11
11
|
* Encode a UIC barcode ticket to bytes.
|
|
12
12
|
*
|
|
13
|
-
* @param
|
|
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(
|
|
16
|
+
export declare function encodeTicketToBytes(ticket: UicBarcodeTicket): Uint8Array;
|
|
17
17
|
/**
|
|
18
|
-
* Encode a Level 2 data block
|
|
18
|
+
* Encode a Level 2 data block from a {@link Level2Data} structure.
|
|
19
19
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
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
|
|
23
|
+
* @param l2Data - Level 2 data with either raw `data` or `decoded` content.
|
|
24
24
|
* @returns Object with `dataFormat` string and encoded `data` bytes.
|
|
25
25
|
*/
|
|
26
|
-
export declare function encodeLevel2Data(
|
|
26
|
+
export declare function encodeLevel2Data(l2Data: Level2Data): {
|
|
27
27
|
dataFormat: string;
|
|
28
28
|
data: Uint8Array;
|
|
29
29
|
};
|
|
@@ -33,8 +33,11 @@ export declare function encodeLevel2Data(input: UicDynamicContentDataInput | Int
|
|
|
33
33
|
* Returns a {@link RawBytes} with the exact PER-encoded bits. The `.data`
|
|
34
34
|
* property gives the `Uint8Array` suitable for signing; the `RawBytes` itself
|
|
35
35
|
* is passed to {@link encodeLevel2SignedData} for bit-precise embedding.
|
|
36
|
+
*
|
|
37
|
+
* @param level1Data - The Level 1 data to encode.
|
|
38
|
+
* @param format - Header format string (e.g. "U1" or "U2").
|
|
36
39
|
*/
|
|
37
|
-
export declare function encodeLevel1Data(
|
|
40
|
+
export declare function encodeLevel1Data(level1Data: Level1Data, format: string): RawBytes;
|
|
38
41
|
/**
|
|
39
42
|
* Encode the `level2SignedData` SEQUENCE.
|
|
40
43
|
*
|
|
@@ -42,12 +45,24 @@ export declare function encodeLevel1Data(input: Level1DataInput): RawBytes;
|
|
|
42
45
|
* passthrough. Returns a `RawBytes` for signing and embedding into
|
|
43
46
|
* {@link encodeUicBarcode}.
|
|
44
47
|
*/
|
|
45
|
-
export declare function encodeLevel2SignedData(input:
|
|
48
|
+
export declare function encodeLevel2SignedData(input: {
|
|
49
|
+
headerVersion?: number;
|
|
50
|
+
level1Data: RawBytes;
|
|
51
|
+
level1Signature: Uint8Array;
|
|
52
|
+
level2Data?: {
|
|
53
|
+
dataFormat: string;
|
|
54
|
+
data: Uint8Array;
|
|
55
|
+
};
|
|
56
|
+
}): RawBytes;
|
|
46
57
|
/**
|
|
47
58
|
* Encode the outermost `UicBarcodeHeader` SEQUENCE.
|
|
48
59
|
*
|
|
49
60
|
* Embeds pre-encoded `level2SignedData` bytes verbatim via {@link RawBytes}
|
|
50
61
|
* passthrough. Returns the final barcode payload bytes.
|
|
51
62
|
*/
|
|
52
|
-
export declare function encodeUicBarcode(input:
|
|
63
|
+
export declare function encodeUicBarcode(input: {
|
|
64
|
+
format: string;
|
|
65
|
+
level2SignedData: RawBytes;
|
|
66
|
+
level2Signature?: Uint8Array;
|
|
67
|
+
}): Uint8Array;
|
|
53
68
|
//# sourceMappingURL=encoder.d.ts.map
|
package/dist/encoder.d.ts.map
CHANGED
|
@@ -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,
|
|
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;AA6FjB;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAwD7D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAGxE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,GACjB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAO1C;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;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;CACvD,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
|
|
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';
|
|
@@ -79,8 +79,20 @@ function getFdc1Codec() {
|
|
|
79
79
|
fdc1Codec = new SchemaCodec(DYNAMIC_CONTENT_SCHEMAS.UicDynamicContentData);
|
|
80
80
|
return fdc1Codec;
|
|
81
81
|
}
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
// ---------------------------------------------------------------------------
|
|
83
|
+
// Internal helpers
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
function parseHeaderVersion(format) {
|
|
86
|
+
const match = format.match(/^U(\d+)$/);
|
|
87
|
+
if (!match)
|
|
88
|
+
throw new Error(`Invalid format "${format}", expected "U1" or "U2"`);
|
|
89
|
+
return parseInt(match[1], 10);
|
|
90
|
+
}
|
|
91
|
+
function parseFcbVersion(dataFormat) {
|
|
92
|
+
const match = dataFormat.match(/^FCB(\d+)$/);
|
|
93
|
+
if (!match)
|
|
94
|
+
throw new Error(`Unsupported dataFormat "${dataFormat}"`);
|
|
95
|
+
return parseInt(match[1], 10);
|
|
84
96
|
}
|
|
85
97
|
// ---------------------------------------------------------------------------
|
|
86
98
|
// Public API
|
|
@@ -88,94 +100,96 @@ function toHex(bytes) {
|
|
|
88
100
|
/**
|
|
89
101
|
* Encode a UIC barcode ticket to a hex string.
|
|
90
102
|
*
|
|
91
|
-
* @param
|
|
103
|
+
* @param ticket - The decoded ticket structure to encode.
|
|
92
104
|
* @returns Hex string of the encoded barcode payload.
|
|
93
105
|
*/
|
|
94
|
-
export function encodeTicket(
|
|
95
|
-
const headerVersion =
|
|
96
|
-
const
|
|
97
|
-
//
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
106
|
+
export function encodeTicket(ticket) {
|
|
107
|
+
const headerVersion = parseHeaderVersion(ticket.format);
|
|
108
|
+
const l1 = ticket.level2SignedData.level1Data;
|
|
109
|
+
// Encode each data sequence entry
|
|
110
|
+
const dataSequence = l1.dataSequence.map(entry => {
|
|
111
|
+
if (entry.data)
|
|
112
|
+
return { dataFormat: entry.dataFormat, data: entry.data };
|
|
113
|
+
if (!entry.decoded)
|
|
114
|
+
throw new Error('DataSequenceEntry must have data or decoded');
|
|
115
|
+
const fcbVersion = parseFcbVersion(entry.dataFormat);
|
|
116
|
+
return {
|
|
117
|
+
dataFormat: entry.dataFormat,
|
|
118
|
+
data: encodeRailTicket(fcbVersion, entry.decoded, l1.securityProviderNum),
|
|
119
|
+
};
|
|
120
|
+
});
|
|
121
|
+
// Encode level2Data if present
|
|
104
122
|
let level2Data;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
123
|
+
const l2 = ticket.level2SignedData.level2Data;
|
|
124
|
+
if (l2) {
|
|
125
|
+
if (l2.data) {
|
|
126
|
+
level2Data = { dataFormat: l2.dataFormat, data: l2.data };
|
|
127
|
+
}
|
|
128
|
+
else if (l2.decoded) {
|
|
129
|
+
level2Data = {
|
|
130
|
+
dataFormat: l2.dataFormat,
|
|
131
|
+
data: encodeLevel2DataDecoded(l2.dataFormat, l2.decoded),
|
|
132
|
+
};
|
|
133
|
+
}
|
|
110
134
|
}
|
|
111
|
-
//
|
|
135
|
+
// Build the full header structure
|
|
112
136
|
const headerData = {
|
|
113
|
-
format:
|
|
137
|
+
format: ticket.format,
|
|
114
138
|
level2SignedData: {
|
|
115
139
|
level1Data: {
|
|
116
|
-
securityProviderNum:
|
|
117
|
-
|
|
140
|
+
securityProviderNum: l1.securityProviderNum,
|
|
141
|
+
securityProviderIA5: l1.securityProviderIA5,
|
|
142
|
+
keyId: l1.keyId,
|
|
118
143
|
dataSequence,
|
|
119
|
-
level1KeyAlg:
|
|
120
|
-
level2KeyAlg:
|
|
121
|
-
level1SigningAlg:
|
|
122
|
-
level2SigningAlg:
|
|
123
|
-
level2PublicKey:
|
|
124
|
-
endOfValidityYear:
|
|
125
|
-
endOfValidityDay:
|
|
126
|
-
endOfValidityTime:
|
|
127
|
-
validityDuration:
|
|
144
|
+
level1KeyAlg: l1.level1KeyAlg,
|
|
145
|
+
level2KeyAlg: l1.level2KeyAlg,
|
|
146
|
+
level1SigningAlg: l1.level1SigningAlg,
|
|
147
|
+
level2SigningAlg: l1.level2SigningAlg,
|
|
148
|
+
level2PublicKey: l1.level2PublicKey,
|
|
149
|
+
endOfValidityYear: l1.endOfValidityYear,
|
|
150
|
+
endOfValidityDay: l1.endOfValidityDay,
|
|
151
|
+
endOfValidityTime: l1.endOfValidityTime,
|
|
152
|
+
validityDuration: l1.validityDuration,
|
|
128
153
|
},
|
|
129
|
-
level1Signature:
|
|
154
|
+
level1Signature: ticket.level2SignedData.level1Signature,
|
|
130
155
|
level2Data,
|
|
131
156
|
},
|
|
132
|
-
level2Signature:
|
|
157
|
+
level2Signature: ticket.level2Signature,
|
|
133
158
|
};
|
|
134
|
-
// Step 5: Encode the header
|
|
135
159
|
const codec = getHeaderCodec(headerVersion);
|
|
136
160
|
return codec.encodeToHex(headerData);
|
|
137
161
|
}
|
|
138
162
|
/**
|
|
139
163
|
* Encode a UIC barcode ticket to bytes.
|
|
140
164
|
*
|
|
141
|
-
* @param
|
|
165
|
+
* @param ticket - The decoded ticket structure to encode.
|
|
142
166
|
* @returns Uint8Array of the encoded barcode payload.
|
|
143
167
|
*/
|
|
144
|
-
export function encodeTicketToBytes(
|
|
145
|
-
const hex = encodeTicket(
|
|
168
|
+
export function encodeTicketToBytes(ticket) {
|
|
169
|
+
const hex = encodeTicket(ticket);
|
|
146
170
|
return new Uint8Array(hex.match(/.{1,2}/g).map(b => parseInt(b, 16)));
|
|
147
171
|
}
|
|
148
172
|
// ---------------------------------------------------------------------------
|
|
149
173
|
// Composable encoding primitives
|
|
150
174
|
// ---------------------------------------------------------------------------
|
|
151
175
|
/**
|
|
152
|
-
* Encode a Level 2 data block
|
|
176
|
+
* Encode a Level 2 data block from a {@link Level2Data} structure.
|
|
153
177
|
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
178
|
+
* If the `data` field is present, it is used as-is. Otherwise the `decoded`
|
|
179
|
+
* field is PER-encoded based on the `dataFormat`.
|
|
156
180
|
*
|
|
157
|
-
* @param
|
|
181
|
+
* @param l2Data - Level 2 data with either raw `data` or `decoded` content.
|
|
158
182
|
* @returns Object with `dataFormat` string and encoded `data` bytes.
|
|
159
183
|
*/
|
|
160
|
-
export function encodeLevel2Data(
|
|
161
|
-
if (
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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
|
-
}
|
|
184
|
+
export function encodeLevel2Data(l2Data) {
|
|
185
|
+
if (l2Data.data)
|
|
186
|
+
return { dataFormat: l2Data.dataFormat, data: l2Data.data };
|
|
187
|
+
if (!l2Data.decoded)
|
|
188
|
+
throw new Error('Level2Data must have data or decoded');
|
|
189
|
+
return {
|
|
190
|
+
dataFormat: l2Data.dataFormat,
|
|
191
|
+
data: encodeLevel2DataDecoded(l2Data.dataFormat, l2Data.decoded),
|
|
192
|
+
};
|
|
179
193
|
}
|
|
180
194
|
/**
|
|
181
195
|
* Encode the `level1Data` SEQUENCE in isolation.
|
|
@@ -183,30 +197,41 @@ export function encodeLevel2Data(input) {
|
|
|
183
197
|
* Returns a {@link RawBytes} with the exact PER-encoded bits. The `.data`
|
|
184
198
|
* property gives the `Uint8Array` suitable for signing; the `RawBytes` itself
|
|
185
199
|
* is passed to {@link encodeLevel2SignedData} for bit-precise embedding.
|
|
200
|
+
*
|
|
201
|
+
* @param level1Data - The Level 1 data to encode.
|
|
202
|
+
* @param format - Header format string (e.g. "U1" or "U2").
|
|
186
203
|
*/
|
|
187
|
-
export function encodeLevel1Data(
|
|
188
|
-
const headerVersion =
|
|
189
|
-
|
|
190
|
-
const
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
204
|
+
export function encodeLevel1Data(level1Data, format) {
|
|
205
|
+
const headerVersion = parseHeaderVersion(format);
|
|
206
|
+
// Encode each data sequence entry
|
|
207
|
+
const dataSequence = level1Data.dataSequence.map(entry => {
|
|
208
|
+
if (entry.data)
|
|
209
|
+
return { dataFormat: entry.dataFormat, data: entry.data };
|
|
210
|
+
if (!entry.decoded)
|
|
211
|
+
throw new Error('DataSequenceEntry must have data or decoded');
|
|
212
|
+
const fcbVersion = parseFcbVersion(entry.dataFormat);
|
|
213
|
+
return {
|
|
214
|
+
dataFormat: entry.dataFormat,
|
|
215
|
+
data: encodeRailTicket(fcbVersion, entry.decoded, level1Data.securityProviderNum),
|
|
216
|
+
};
|
|
217
|
+
});
|
|
218
|
+
const l1Data = {
|
|
219
|
+
securityProviderNum: level1Data.securityProviderNum,
|
|
220
|
+
securityProviderIA5: level1Data.securityProviderIA5,
|
|
221
|
+
keyId: level1Data.keyId,
|
|
197
222
|
dataSequence,
|
|
198
|
-
level1KeyAlg:
|
|
199
|
-
level2KeyAlg:
|
|
200
|
-
level1SigningAlg:
|
|
201
|
-
level2SigningAlg:
|
|
202
|
-
level2PublicKey:
|
|
203
|
-
endOfValidityYear:
|
|
204
|
-
endOfValidityDay:
|
|
205
|
-
endOfValidityTime:
|
|
206
|
-
validityDuration:
|
|
223
|
+
level1KeyAlg: level1Data.level1KeyAlg,
|
|
224
|
+
level2KeyAlg: level1Data.level2KeyAlg,
|
|
225
|
+
level1SigningAlg: level1Data.level1SigningAlg,
|
|
226
|
+
level2SigningAlg: level1Data.level2SigningAlg,
|
|
227
|
+
level2PublicKey: level1Data.level2PublicKey,
|
|
228
|
+
endOfValidityYear: level1Data.endOfValidityYear,
|
|
229
|
+
endOfValidityDay: level1Data.endOfValidityDay,
|
|
230
|
+
endOfValidityTime: level1Data.endOfValidityTime,
|
|
231
|
+
validityDuration: level1Data.validityDuration,
|
|
207
232
|
};
|
|
208
233
|
const codec = getLevel1DataCodec(headerVersion);
|
|
209
|
-
return codec.encodeToRawBytes(
|
|
234
|
+
return codec.encodeToRawBytes(l1Data);
|
|
210
235
|
}
|
|
211
236
|
/**
|
|
212
237
|
* Encode the `level2SignedData` SEQUENCE.
|
|
@@ -232,11 +257,7 @@ export function encodeLevel2SignedData(input) {
|
|
|
232
257
|
* passthrough. Returns the final barcode payload bytes.
|
|
233
258
|
*/
|
|
234
259
|
export function encodeUicBarcode(input) {
|
|
235
|
-
const
|
|
236
|
-
if (!headerVersionMatch) {
|
|
237
|
-
throw new Error(`Invalid format "${input.format}", expected "U1" or "U2"`);
|
|
238
|
-
}
|
|
239
|
-
const headerVersion = parseInt(headerVersionMatch[1], 10);
|
|
260
|
+
const headerVersion = parseHeaderVersion(input.format);
|
|
240
261
|
const headerData = {
|
|
241
262
|
format: input.format,
|
|
242
263
|
level2SignedData: input.level2SignedData,
|
|
@@ -248,46 +269,52 @@ export function encodeUicBarcode(input) {
|
|
|
248
269
|
// ---------------------------------------------------------------------------
|
|
249
270
|
// Internal encoding helpers
|
|
250
271
|
// ---------------------------------------------------------------------------
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
if (
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
272
|
+
/**
|
|
273
|
+
* Encode the decoded content of a Level 2 data block.
|
|
274
|
+
*/
|
|
275
|
+
function encodeLevel2DataDecoded(dataFormat, decoded) {
|
|
276
|
+
if (dataFormat === 'FDC1') {
|
|
277
|
+
return getFdc1Codec().encode(decoded);
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
// Intercode dynamic data
|
|
281
|
+
return getIntercodeDynamicCodec().encode(decoded);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Encode rail ticket data (UicRailTicketData) to PER bytes.
|
|
286
|
+
*/
|
|
287
|
+
function encodeRailTicket(fcbVersion, railTicket, securityProviderNum) {
|
|
288
|
+
const iss = railTicket.issuingDetail;
|
|
289
|
+
let issuingDetail;
|
|
290
|
+
if (iss) {
|
|
291
|
+
// Handle extension: re-encode intercode if present, otherwise pass through raw
|
|
292
|
+
const { intercodeIssuing, extension: rawExtension, ...issuingRest } = iss;
|
|
293
|
+
let extension;
|
|
294
|
+
if (intercodeIssuing) {
|
|
295
|
+
const issuingBytes = getIntercodeIssuingCodec().encode({
|
|
296
|
+
intercodeVersion: intercodeIssuing.intercodeVersion ?? 1,
|
|
297
|
+
intercodeInstanciation: intercodeIssuing.intercodeInstanciation ?? 1,
|
|
298
|
+
networkId: intercodeIssuing.networkId,
|
|
299
|
+
productRetailer: intercodeIssuing.productRetailer,
|
|
300
|
+
});
|
|
301
|
+
extension = {
|
|
302
|
+
extensionId: intercodeIssuing.extensionId ?? `_${iss.securityProviderNum ?? securityProviderNum ?? 0}II1`,
|
|
303
|
+
extensionData: issuingBytes,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
extension = rawExtension;
|
|
308
|
+
}
|
|
309
|
+
issuingDetail = { ...issuingRest, extension };
|
|
310
|
+
// FCB3 requires issuingTime as mandatory — default to 0 if not provided
|
|
311
|
+
if (fcbVersion >= 3 && issuingDetail.issuingTime == null) {
|
|
312
|
+
issuingDetail.issuingTime = 0;
|
|
313
|
+
}
|
|
267
314
|
}
|
|
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
315
|
// Validate traveler birth-day fields match the target FCB version
|
|
289
|
-
if (
|
|
290
|
-
for (const t of
|
|
316
|
+
if (railTicket.travelerDetail?.traveler) {
|
|
317
|
+
for (const t of railTicket.travelerDetail.traveler) {
|
|
291
318
|
if (fcbVersion >= 2 && t.dayOfBirth !== undefined) {
|
|
292
319
|
throw new Error(`Traveler field "dayOfBirth" is not valid for FCB v${fcbVersion}. Use "dayOfBirthInMonth" instead.`);
|
|
293
320
|
}
|
|
@@ -296,12 +323,12 @@ function encodeRailTicket(fcbVersion, input) {
|
|
|
296
323
|
}
|
|
297
324
|
}
|
|
298
325
|
}
|
|
299
|
-
//
|
|
326
|
+
// Transport documents pass through directly (already { ticket: { key, value } } format)
|
|
300
327
|
const ticketData = {
|
|
301
328
|
issuingDetail,
|
|
302
|
-
travelerDetail:
|
|
303
|
-
transportDocument,
|
|
304
|
-
controlDetail:
|
|
329
|
+
travelerDetail: railTicket.travelerDetail,
|
|
330
|
+
transportDocument: railTicket.transportDocument,
|
|
331
|
+
controlDetail: railTicket.controlDetail,
|
|
305
332
|
};
|
|
306
333
|
const codecs = getTicketCodecs(fcbVersion);
|
|
307
334
|
const buf = BitBuffer.alloc();
|
package/dist/encoder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,WAAW,EACX,aAAa,EACb,SAAS,GAEV,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,WAAW,EACX,aAAa,EACb,SAAS,GAEV,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAU5G,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAE9E,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAuB,CAAC;AACxD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAuB,CAAC;AAC5D,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAuB,CAAC;AAC5D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA0C,CAAC;AAC3E,IAAI,qBAA8C,CAAC;AACnD,IAAI,qBAA8C,CAAC;AACnD,IAAI,SAAkC,CAAC;AAEvC,SAAS,cAAc,CAAC,OAAe;IACrC,IAAI,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IAClE,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,gBAA8B,CAAC,CAAC;IAChE,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,IAAI,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IAClE,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,cAA4B,CAAC,CAAC;IAC9D,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,IAAI,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IAClE,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,cAA4B,CAAC,CAAC;IAC9D,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,IAAI,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7D,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAqC,CAAC,CAAC;IACvE,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,wBAAwB;IAC/B,IAAI,qBAAqB;QAAE,OAAO,qBAAqB,CAAC;IACxD,qBAAqB,GAAG,IAAI,WAAW,CAAC,iBAAiB,CAAC,oBAAkC,CAAC,CAAC;IAC9F,qBAAqB,GAAG,IAAI,WAAW,CAAC,iBAAiB,CAAC,oBAAkC,CAAC,CAAC;IAC9F,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,SAAS,wBAAwB;IAC/B,IAAI,qBAAqB;QAAE,OAAO,qBAAqB,CAAC;IACxD,wBAAwB,EAAE,CAAC;IAC3B,OAAO,qBAAsB,CAAC;AAChC,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,SAAS,GAAG,IAAI,WAAW,CAAC,uBAAuB,CAAC,qBAAmC,CAAC,CAAC;IACzF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,SAAS,kBAAkB,CAAC,MAAc;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,0BAA0B,CAAC,CAAC;IACjF,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,GAAG,CAAC,CAAC;IACtE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,MAAwB;IACnD,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC;IAE9C,kCAAkC;IAClC,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAC/C,IAAI,KAAK,CAAC,IAAI;YAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1E,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,IAAI,EAAE,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,mBAAmB,CAAC;SAC1E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,+BAA+B;IAC/B,IAAI,UAAgE,CAAC;IACrE,MAAM,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC;IAC9C,IAAI,EAAE,EAAE,CAAC;QACP,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACZ,UAAU,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAC5D,CAAC;aAAM,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACtB,UAAU,GAAG;gBACX,UAAU,EAAE,EAAE,CAAC,UAAU;gBACzB,IAAI,EAAE,uBAAuB,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC;aACzD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,MAAM,UAAU,GAA4B;QAC1C,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,gBAAgB,EAAE;YAChB,UAAU,EAAE;gBACV,mBAAmB,EAAE,EAAE,CAAC,mBAAmB;gBAC3C,mBAAmB,EAAE,EAAE,CAAC,mBAAmB;gBAC3C,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,YAAY;gBACZ,YAAY,EAAE,EAAE,CAAC,YAAY;gBAC7B,YAAY,EAAE,EAAE,CAAC,YAAY;gBAC7B,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;gBACrC,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;gBACrC,eAAe,EAAE,EAAE,CAAC,eAAe;gBACnC,iBAAiB,EAAE,EAAE,CAAC,iBAAiB;gBACvC,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;gBACrC,iBAAiB,EAAE,EAAE,CAAC,iBAAiB;gBACvC,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;aACtC;YACD,eAAe,EAAE,MAAM,CAAC,gBAAgB,CAAC,eAAe;YACxD,UAAU;SACX;QACD,eAAe,EAAE,MAAM,CAAC,eAAe;KACxC,CAAC;IAEF,MAAM,KAAK,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAwB;IAC1D,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAkB;IAElB,IAAI,MAAM,CAAC,IAAI;QAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7E,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC7E,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,IAAI,EAAE,uBAAuB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;KACjE,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAsB,EAAE,MAAc;IACrE,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAEjD,kCAAkC;IAClC,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACvD,IAAI,KAAK,CAAC,IAAI;YAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1E,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,IAAI,EAAE,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,mBAAmB,CAAC;SAClF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAA4B;QACtC,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;QACnD,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;QACnD,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,YAAY;QACZ,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;QAC7C,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;QAC7C,eAAe,EAAE,UAAU,CAAC,eAAe;QAC3C,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;QAC/C,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;QAC7C,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;QAC/C,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;KAC9C,CAAC;IAEF,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAKtC;IACC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;IAE/C,MAAM,gBAAgB,GAA4B;QAChD,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC;IAEF,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAIhC;IACC,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEvD,MAAM,UAAU,GAA4B;QAC1C,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,eAAe,EAAE,KAAK,CAAC,eAAe;KACvC,CAAC;IAEF,MAAM,KAAK,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E;;GAEG;AACH,SAAS,uBAAuB,CAC9B,UAAkB,EAClB,OAAqD;IAErD,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,YAAY,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,yBAAyB;QACzB,OAAO,wBAAwB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,UAAkB,EAAE,UAA6B,EAAE,mBAA4B;IACvG,MAAM,GAAG,GAAG,UAAU,CAAC,aAAa,CAAC;IAErC,IAAI,aAAkD,CAAC;IACvD,IAAI,GAAG,EAAE,CAAC;QACR,+EAA+E;QAC/E,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,GAAG,GAAG,CAAC;QAC1E,IAAI,SAAyE,CAAC;QAC9E,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,YAAY,GAAG,wBAAwB,EAAE,CAAC,MAAM,CAAC;gBACrD,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,IAAI,CAAC;gBACxD,sBAAsB,EAAE,gBAAgB,CAAC,sBAAsB,IAAI,CAAC;gBACpE,SAAS,EAAE,gBAAgB,CAAC,SAAS;gBACrC,eAAe,EAAE,gBAAgB,CAAC,eAAe;aAClD,CAAC,CAAC;YACH,SAAS,GAAG;gBACV,WAAW,EAAE,gBAAgB,CAAC,WAAW,IAAI,IAAI,GAAG,CAAC,mBAAmB,IAAI,mBAAmB,IAAI,CAAC,KAAK;gBACzG,aAAa,EAAE,YAAY;aAC5B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,YAAY,CAAC;QAC3B,CAAC;QAED,aAAa,GAAG,EAAE,GAAG,WAAW,EAAE,SAAS,EAAE,CAAC;QAE9C,wEAAwE;QACxE,IAAI,UAAU,IAAI,CAAC,IAAI,aAAa,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;YACzD,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,IAAI,UAAU,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YACnD,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CACb,qDAAqD,UAAU,oCAAoC,CACpG,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CACb,4DAA4D,UAAU,6BAA6B,CACpG,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,wFAAwF;IACxF,MAAM,UAAU,GAA4B;QAC1C,aAAa;QACb,cAAc,EAAE,UAAU,CAAC,cAAc;QACzC,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;QAC/C,aAAa,EAAE,UAAU,CAAC,aAAa;KACxC,CAAC;IAEF,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;IAC9B,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC"}
|
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,
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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;
|
|
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 {
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
88
|
+
export declare function signAndEncodeTicket(ticket: UicBarcodeTicket, level1Key: SigningKeyPair, level2Key?: SigningKeyPair): Uint8Array;
|
|
89
89
|
//# sourceMappingURL=signer.d.ts.map
|
package/dist/signer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAiBA,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
|
|
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(
|
|
130
|
+
export function signLevel1(ticket, privateKey, curve) {
|
|
131
131
|
const curveConfig = CURVES[curve];
|
|
132
132
|
const zeroSig = new Uint8Array(maxDerSigSize(curve));
|
|
133
|
-
|
|
133
|
+
const l1 = ticket.level2SignedData.level1Data;
|
|
134
134
|
const prepared = {
|
|
135
|
-
...
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
|
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(
|
|
159
|
-
if (!
|
|
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
|
-
...
|
|
166
|
-
|
|
167
|
-
|
|
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
|
|
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(
|
|
201
|
+
export function signAndEncodeTicket(ticket, level1Key, level2Key) {
|
|
190
202
|
const l1Curve = CURVES[level1Key.curve];
|
|
191
|
-
const
|
|
192
|
-
|
|
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
|
|
214
|
-
|
|
215
|
-
|
|
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);
|
|
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
|
});
|
package/dist/signer.js.map
CHANGED
|
@@ -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
|
|
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
|
|
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()`. */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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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"}
|