smartcard 3.2.1 → 3.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 +3 -3
- package/dist/lib/control-codes.d.ts +32 -0
- package/dist/lib/control-codes.d.ts.map +1 -0
- package/dist/lib/control-codes.js +66 -0
- package/dist/lib/control-codes.js.map +1 -0
- package/dist/lib/devices.d.ts +75 -0
- package/dist/lib/devices.d.ts.map +1 -0
- package/{lib → dist/lib}/devices.js +76 -115
- package/dist/lib/devices.js.map +1 -0
- package/dist/lib/errors.d.ts +42 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/{lib → dist/lib}/errors.js +21 -37
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/index.d.ts +31 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +71 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/types.d.ts +207 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +6 -0
- package/dist/lib/types.js.map +1 -0
- package/package.json +27 -16
- package/src/async_workers.cpp +6 -0
- package/src/async_workers.h +2 -0
- package/src/pcsc_card.cpp +1 -1
- package/lib/control-codes.js +0 -107
- package/lib/index.d.ts +0 -325
- package/lib/index.js +0 -151
package/lib/control-codes.js
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
// @ts-check
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Control codes and feature constants for PC/SC smart card operations
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Generate a control code (platform-specific)
|
|
10
|
-
* @param {number} code - The control code number
|
|
11
|
-
* @returns {number} The platform-specific control code
|
|
12
|
-
*/
|
|
13
|
-
function SCARD_CTL_CODE(code) {
|
|
14
|
-
if (process.platform === 'win32') {
|
|
15
|
-
// Windows: (FILE_DEVICE_SMARTCARD << 16) + (code << 2)
|
|
16
|
-
// FILE_DEVICE_SMARTCARD = 0x31
|
|
17
|
-
return (0x31 << 16) + (code << 2);
|
|
18
|
-
} else {
|
|
19
|
-
// macOS/Linux: 0x42000000 + code
|
|
20
|
-
return 0x42000000 + code;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// Common control codes
|
|
25
|
-
const CM_IOCTL_GET_FEATURE_REQUEST = SCARD_CTL_CODE(3400);
|
|
26
|
-
|
|
27
|
-
// CCID Feature tags (from CCID spec)
|
|
28
|
-
const FEATURE_VERIFY_PIN_START = 0x01;
|
|
29
|
-
const FEATURE_VERIFY_PIN_FINISH = 0x02;
|
|
30
|
-
const FEATURE_MODIFY_PIN_START = 0x03;
|
|
31
|
-
const FEATURE_MODIFY_PIN_FINISH = 0x04;
|
|
32
|
-
const FEATURE_GET_KEY_PRESSED = 0x05;
|
|
33
|
-
const FEATURE_VERIFY_PIN_DIRECT = 0x06;
|
|
34
|
-
const FEATURE_MODIFY_PIN_DIRECT = 0x07;
|
|
35
|
-
const FEATURE_MCT_READER_DIRECT = 0x08;
|
|
36
|
-
const FEATURE_MCT_UNIVERSAL = 0x09;
|
|
37
|
-
const FEATURE_IFD_PIN_PROPERTIES = 0x0A;
|
|
38
|
-
const FEATURE_ABORT = 0x0B;
|
|
39
|
-
const FEATURE_SET_SPE_MESSAGE = 0x0C;
|
|
40
|
-
const FEATURE_VERIFY_PIN_DIRECT_APP_ID = 0x0D;
|
|
41
|
-
const FEATURE_MODIFY_PIN_DIRECT_APP_ID = 0x0E;
|
|
42
|
-
const FEATURE_WRITE_DISPLAY = 0x0F;
|
|
43
|
-
const FEATURE_GET_KEY = 0x10;
|
|
44
|
-
const FEATURE_IFD_DISPLAY_PROPERTIES = 0x11;
|
|
45
|
-
const FEATURE_GET_TLV_PROPERTIES = 0x12;
|
|
46
|
-
const FEATURE_CCID_ESC_COMMAND = 0x13;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Parse feature TLV response from CM_IOCTL_GET_FEATURE_REQUEST
|
|
50
|
-
* @param {Buffer} response - The TLV response buffer
|
|
51
|
-
* @returns {Map<number, number>} Map of feature tag to control code
|
|
52
|
-
*/
|
|
53
|
-
function parseFeatures(response) {
|
|
54
|
-
const features = new Map();
|
|
55
|
-
let offset = 0;
|
|
56
|
-
|
|
57
|
-
while (offset + 4 <= response.length) {
|
|
58
|
-
const tag = response[offset];
|
|
59
|
-
const length = response[offset + 1];
|
|
60
|
-
|
|
61
|
-
if (length === 4 && offset + 2 + length <= response.length) {
|
|
62
|
-
// Big-endian control code
|
|
63
|
-
const controlCode =
|
|
64
|
-
(response[offset + 2] << 24) |
|
|
65
|
-
(response[offset + 3] << 16) |
|
|
66
|
-
(response[offset + 4] << 8) |
|
|
67
|
-
response[offset + 5];
|
|
68
|
-
features.set(tag, controlCode);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
offset += 2 + length;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return features;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
module.exports = {
|
|
78
|
-
// Control code generator
|
|
79
|
-
SCARD_CTL_CODE,
|
|
80
|
-
|
|
81
|
-
// Common control codes
|
|
82
|
-
CM_IOCTL_GET_FEATURE_REQUEST,
|
|
83
|
-
|
|
84
|
-
// CCID Feature tags
|
|
85
|
-
FEATURE_VERIFY_PIN_START,
|
|
86
|
-
FEATURE_VERIFY_PIN_FINISH,
|
|
87
|
-
FEATURE_MODIFY_PIN_START,
|
|
88
|
-
FEATURE_MODIFY_PIN_FINISH,
|
|
89
|
-
FEATURE_GET_KEY_PRESSED,
|
|
90
|
-
FEATURE_VERIFY_PIN_DIRECT,
|
|
91
|
-
FEATURE_MODIFY_PIN_DIRECT,
|
|
92
|
-
FEATURE_MCT_READER_DIRECT,
|
|
93
|
-
FEATURE_MCT_UNIVERSAL,
|
|
94
|
-
FEATURE_IFD_PIN_PROPERTIES,
|
|
95
|
-
FEATURE_ABORT,
|
|
96
|
-
FEATURE_SET_SPE_MESSAGE,
|
|
97
|
-
FEATURE_VERIFY_PIN_DIRECT_APP_ID,
|
|
98
|
-
FEATURE_MODIFY_PIN_DIRECT_APP_ID,
|
|
99
|
-
FEATURE_WRITE_DISPLAY,
|
|
100
|
-
FEATURE_GET_KEY,
|
|
101
|
-
FEATURE_IFD_DISPLAY_PROPERTIES,
|
|
102
|
-
FEATURE_GET_TLV_PROPERTIES,
|
|
103
|
-
FEATURE_CCID_ESC_COMMAND,
|
|
104
|
-
|
|
105
|
-
// Helper functions
|
|
106
|
-
parseFeatures,
|
|
107
|
-
};
|
package/lib/index.d.ts
DELETED
|
@@ -1,325 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
|
|
3
|
-
import { EventEmitter } from 'events';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Reader state information returned from waitForChange
|
|
7
|
-
*/
|
|
8
|
-
export interface ReaderState {
|
|
9
|
-
name: string;
|
|
10
|
-
state: number;
|
|
11
|
-
changed: boolean;
|
|
12
|
-
atr: Buffer | null;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Card status information
|
|
17
|
-
*/
|
|
18
|
-
export interface CardStatus {
|
|
19
|
-
state: number;
|
|
20
|
-
protocol: number;
|
|
21
|
-
atr: Buffer;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Options for card.transmit()
|
|
26
|
-
*/
|
|
27
|
-
export interface TransmitOptions {
|
|
28
|
-
/**
|
|
29
|
-
* Maximum receive buffer size in bytes.
|
|
30
|
-
* Default: 258 (standard APDU: 256 data + 2 status bytes)
|
|
31
|
-
* Maximum: 262144 (256KB for extended APDUs)
|
|
32
|
-
*/
|
|
33
|
-
maxRecvLength?: number;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Represents a connected smart card
|
|
38
|
-
*/
|
|
39
|
-
export interface Card {
|
|
40
|
-
/** The active protocol (T0, T1, or RAW) */
|
|
41
|
-
readonly protocol: number;
|
|
42
|
-
/** Whether the card is still connected */
|
|
43
|
-
readonly connected: boolean;
|
|
44
|
-
/** The card's ATR (Answer To Reset) */
|
|
45
|
-
readonly atr: Buffer | null;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Transmit an APDU command to the card
|
|
49
|
-
* @param command - The command buffer or byte array
|
|
50
|
-
* @param options - Optional transmit options
|
|
51
|
-
* @returns Promise resolving to the response buffer
|
|
52
|
-
*/
|
|
53
|
-
transmit(command: Buffer | number[], options?: TransmitOptions): Promise<Buffer>;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Send a control command to the reader
|
|
57
|
-
* @param code - Control code
|
|
58
|
-
* @param data - Optional data buffer
|
|
59
|
-
* @returns Promise resolving to the response buffer
|
|
60
|
-
*/
|
|
61
|
-
control(code: number, data?: Buffer | number[]): Promise<Buffer>;
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Get the current card status
|
|
65
|
-
* @returns Card status object
|
|
66
|
-
*/
|
|
67
|
-
getStatus(): CardStatus;
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Disconnect from the card
|
|
71
|
-
* @param disposition - What to do with the card (default: SCARD_LEAVE_CARD)
|
|
72
|
-
*/
|
|
73
|
-
disconnect(disposition?: number): void;
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Reconnect to the card (async)
|
|
77
|
-
* @param shareMode - Share mode
|
|
78
|
-
* @param protocol - Preferred protocol(s)
|
|
79
|
-
* @param initialization - Initialization action
|
|
80
|
-
* @returns Promise resolving to the new active protocol
|
|
81
|
-
*/
|
|
82
|
-
reconnect(shareMode?: number, protocol?: number, initialization?: number): Promise<number>;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Represents a smart card reader
|
|
87
|
-
*/
|
|
88
|
-
export interface Reader {
|
|
89
|
-
/** The reader name */
|
|
90
|
-
readonly name: string;
|
|
91
|
-
/** Current reader state flags */
|
|
92
|
-
readonly state: number;
|
|
93
|
-
/** ATR of the card if present */
|
|
94
|
-
readonly atr: Buffer | null;
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Connect to a card in the reader
|
|
98
|
-
* @param shareMode - Share mode (default: SCARD_SHARE_SHARED)
|
|
99
|
-
* @param protocol - Preferred protocol(s) (default: T0 | T1)
|
|
100
|
-
* @returns Promise resolving to a Card object
|
|
101
|
-
*/
|
|
102
|
-
connect(shareMode?: number, protocol?: number): Promise<Card>;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Low-level PC/SC context
|
|
107
|
-
*/
|
|
108
|
-
export declare class Context {
|
|
109
|
-
constructor();
|
|
110
|
-
|
|
111
|
-
/** Whether the context is still valid */
|
|
112
|
-
readonly isValid: boolean;
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* List available readers
|
|
116
|
-
* @returns Array of Reader objects
|
|
117
|
-
*/
|
|
118
|
-
listReaders(): Reader[];
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Wait for reader/card state changes
|
|
122
|
-
* @param readers - Optional array of readers to monitor
|
|
123
|
-
* @param timeout - Timeout in milliseconds (default: infinite)
|
|
124
|
-
* @returns Promise resolving to array of reader states
|
|
125
|
-
*/
|
|
126
|
-
waitForChange(readers?: Reader[] | ReaderState[], timeout?: number): Promise<ReaderState[] | null>;
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Cancel a pending waitForChange call
|
|
130
|
-
*/
|
|
131
|
-
cancel(): void;
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Close the context and release resources
|
|
135
|
-
*/
|
|
136
|
-
close(): void;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Monitor event from native ReaderMonitor
|
|
141
|
-
*/
|
|
142
|
-
export interface MonitorEvent {
|
|
143
|
-
type: 'reader-attached' | 'reader-detached' | 'card-inserted' | 'card-removed' | 'error';
|
|
144
|
-
reader: string;
|
|
145
|
-
state: number;
|
|
146
|
-
atr: Buffer | null;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Native PC/SC event monitor using ThreadSafeFunction
|
|
151
|
-
* Runs monitoring on a background thread for efficiency
|
|
152
|
-
*/
|
|
153
|
-
export declare class ReaderMonitor {
|
|
154
|
-
constructor();
|
|
155
|
-
|
|
156
|
-
/** Whether the monitor is currently running */
|
|
157
|
-
readonly isRunning: boolean;
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Start monitoring for reader/card changes
|
|
161
|
-
* @param callback - Function called when events occur
|
|
162
|
-
*/
|
|
163
|
-
start(callback: (event: MonitorEvent) => void): void;
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Stop monitoring
|
|
167
|
-
*/
|
|
168
|
-
stop(): void;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Event types for Devices class
|
|
173
|
-
*/
|
|
174
|
-
export interface DeviceEvents {
|
|
175
|
-
'reader-attached': (reader: Reader) => void;
|
|
176
|
-
'reader-detached': (reader: Reader) => void;
|
|
177
|
-
'card-inserted': (event: { reader: Reader; card: Card }) => void;
|
|
178
|
-
'card-removed': (event: { reader: Reader; card: Card | null }) => void;
|
|
179
|
-
'error': (error: Error) => void;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* High-level event-driven API for monitoring PC/SC devices
|
|
184
|
-
*/
|
|
185
|
-
export declare class Devices extends EventEmitter {
|
|
186
|
-
constructor();
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Start monitoring for device changes
|
|
190
|
-
*/
|
|
191
|
-
start(): void;
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Stop monitoring and release resources
|
|
195
|
-
*/
|
|
196
|
-
stop(): void;
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* List currently known readers
|
|
200
|
-
* @returns Array of Reader objects
|
|
201
|
-
*/
|
|
202
|
-
listReaders(): Reader[];
|
|
203
|
-
|
|
204
|
-
on<K extends keyof DeviceEvents>(event: K, listener: DeviceEvents[K]): this;
|
|
205
|
-
once<K extends keyof DeviceEvents>(event: K, listener: DeviceEvents[K]): this;
|
|
206
|
-
off<K extends keyof DeviceEvents>(event: K, listener: DeviceEvents[K]): this;
|
|
207
|
-
emit<K extends keyof DeviceEvents>(event: K, ...args: Parameters<DeviceEvents[K]>): boolean;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Base PC/SC error class
|
|
212
|
-
*/
|
|
213
|
-
export declare class PCSCError extends Error {
|
|
214
|
-
readonly code: number;
|
|
215
|
-
constructor(message: string, code: number);
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Error thrown when card is removed during operation
|
|
220
|
-
*/
|
|
221
|
-
export declare class CardRemovedError extends PCSCError {
|
|
222
|
-
constructor(message?: string);
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Error thrown when operation times out
|
|
227
|
-
*/
|
|
228
|
-
export declare class TimeoutError extends PCSCError {
|
|
229
|
-
constructor(message?: string);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Error thrown when no readers are available
|
|
234
|
-
*/
|
|
235
|
-
export declare class NoReadersError extends PCSCError {
|
|
236
|
-
constructor(message?: string);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* Error thrown when PC/SC service is not running
|
|
241
|
-
*/
|
|
242
|
-
export declare class ServiceNotRunningError extends PCSCError {
|
|
243
|
-
constructor(message?: string);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* Error thrown when there's a sharing violation
|
|
248
|
-
*/
|
|
249
|
-
export declare class SharingViolationError extends PCSCError {
|
|
250
|
-
constructor(message?: string);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* Factory function to create the appropriate error class based on PC/SC error code
|
|
255
|
-
*/
|
|
256
|
-
export declare function createPCSCError(message: string, code: number): PCSCError;
|
|
257
|
-
|
|
258
|
-
// Share modes
|
|
259
|
-
export declare const SCARD_SHARE_EXCLUSIVE: number;
|
|
260
|
-
export declare const SCARD_SHARE_SHARED: number;
|
|
261
|
-
export declare const SCARD_SHARE_DIRECT: number;
|
|
262
|
-
|
|
263
|
-
// Protocols
|
|
264
|
-
export declare const SCARD_PROTOCOL_T0: number;
|
|
265
|
-
export declare const SCARD_PROTOCOL_T1: number;
|
|
266
|
-
export declare const SCARD_PROTOCOL_RAW: number;
|
|
267
|
-
export declare const SCARD_PROTOCOL_UNDEFINED: number;
|
|
268
|
-
|
|
269
|
-
// Disposition
|
|
270
|
-
export declare const SCARD_LEAVE_CARD: number;
|
|
271
|
-
export declare const SCARD_RESET_CARD: number;
|
|
272
|
-
export declare const SCARD_UNPOWER_CARD: number;
|
|
273
|
-
export declare const SCARD_EJECT_CARD: number;
|
|
274
|
-
|
|
275
|
-
// State flags
|
|
276
|
-
export declare const SCARD_STATE_UNAWARE: number;
|
|
277
|
-
export declare const SCARD_STATE_IGNORE: number;
|
|
278
|
-
export declare const SCARD_STATE_CHANGED: number;
|
|
279
|
-
export declare const SCARD_STATE_UNKNOWN: number;
|
|
280
|
-
export declare const SCARD_STATE_UNAVAILABLE: number;
|
|
281
|
-
export declare const SCARD_STATE_EMPTY: number;
|
|
282
|
-
export declare const SCARD_STATE_PRESENT: number;
|
|
283
|
-
export declare const SCARD_STATE_ATRMATCH: number;
|
|
284
|
-
export declare const SCARD_STATE_EXCLUSIVE: number;
|
|
285
|
-
export declare const SCARD_STATE_INUSE: number;
|
|
286
|
-
export declare const SCARD_STATE_MUTE: number;
|
|
287
|
-
|
|
288
|
-
// Control code generator
|
|
289
|
-
/**
|
|
290
|
-
* Generate a platform-specific control code
|
|
291
|
-
* @param code - The control code number
|
|
292
|
-
* @returns The platform-specific control code
|
|
293
|
-
*/
|
|
294
|
-
export declare function SCARD_CTL_CODE(code: number): number;
|
|
295
|
-
|
|
296
|
-
// Common control codes
|
|
297
|
-
export declare const CM_IOCTL_GET_FEATURE_REQUEST: number;
|
|
298
|
-
|
|
299
|
-
// CCID Feature tags
|
|
300
|
-
export declare const FEATURE_VERIFY_PIN_START: number;
|
|
301
|
-
export declare const FEATURE_VERIFY_PIN_FINISH: number;
|
|
302
|
-
export declare const FEATURE_MODIFY_PIN_START: number;
|
|
303
|
-
export declare const FEATURE_MODIFY_PIN_FINISH: number;
|
|
304
|
-
export declare const FEATURE_GET_KEY_PRESSED: number;
|
|
305
|
-
export declare const FEATURE_VERIFY_PIN_DIRECT: number;
|
|
306
|
-
export declare const FEATURE_MODIFY_PIN_DIRECT: number;
|
|
307
|
-
export declare const FEATURE_MCT_READER_DIRECT: number;
|
|
308
|
-
export declare const FEATURE_MCT_UNIVERSAL: number;
|
|
309
|
-
export declare const FEATURE_IFD_PIN_PROPERTIES: number;
|
|
310
|
-
export declare const FEATURE_ABORT: number;
|
|
311
|
-
export declare const FEATURE_SET_SPE_MESSAGE: number;
|
|
312
|
-
export declare const FEATURE_VERIFY_PIN_DIRECT_APP_ID: number;
|
|
313
|
-
export declare const FEATURE_MODIFY_PIN_DIRECT_APP_ID: number;
|
|
314
|
-
export declare const FEATURE_WRITE_DISPLAY: number;
|
|
315
|
-
export declare const FEATURE_GET_KEY: number;
|
|
316
|
-
export declare const FEATURE_IFD_DISPLAY_PROPERTIES: number;
|
|
317
|
-
export declare const FEATURE_GET_TLV_PROPERTIES: number;
|
|
318
|
-
export declare const FEATURE_CCID_ESC_COMMAND: number;
|
|
319
|
-
|
|
320
|
-
/**
|
|
321
|
-
* Parse feature TLV response from CM_IOCTL_GET_FEATURE_REQUEST
|
|
322
|
-
* @param response - The TLV response buffer
|
|
323
|
-
* @returns Map of feature tag to control code
|
|
324
|
-
*/
|
|
325
|
-
export declare function parseFeatures(response: Buffer): Map<number, number>;
|
package/lib/index.js
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
// @ts-check
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
// Load native addon
|
|
5
|
-
const addon = require('../build/Release/smartcard_napi.node');
|
|
6
|
-
|
|
7
|
-
// Re-export native classes
|
|
8
|
-
const { Context, Reader, Card, ReaderMonitor } = addon;
|
|
9
|
-
|
|
10
|
-
// Re-export constants
|
|
11
|
-
const SCARD_SHARE_EXCLUSIVE = addon.SCARD_SHARE_EXCLUSIVE;
|
|
12
|
-
const SCARD_SHARE_SHARED = addon.SCARD_SHARE_SHARED;
|
|
13
|
-
const SCARD_SHARE_DIRECT = addon.SCARD_SHARE_DIRECT;
|
|
14
|
-
|
|
15
|
-
const SCARD_PROTOCOL_T0 = addon.SCARD_PROTOCOL_T0;
|
|
16
|
-
const SCARD_PROTOCOL_T1 = addon.SCARD_PROTOCOL_T1;
|
|
17
|
-
const SCARD_PROTOCOL_RAW = addon.SCARD_PROTOCOL_RAW;
|
|
18
|
-
const SCARD_PROTOCOL_UNDEFINED = addon.SCARD_PROTOCOL_UNDEFINED;
|
|
19
|
-
|
|
20
|
-
const SCARD_LEAVE_CARD = addon.SCARD_LEAVE_CARD;
|
|
21
|
-
const SCARD_RESET_CARD = addon.SCARD_RESET_CARD;
|
|
22
|
-
const SCARD_UNPOWER_CARD = addon.SCARD_UNPOWER_CARD;
|
|
23
|
-
const SCARD_EJECT_CARD = addon.SCARD_EJECT_CARD;
|
|
24
|
-
|
|
25
|
-
const SCARD_STATE_UNAWARE = addon.SCARD_STATE_UNAWARE;
|
|
26
|
-
const SCARD_STATE_IGNORE = addon.SCARD_STATE_IGNORE;
|
|
27
|
-
const SCARD_STATE_CHANGED = addon.SCARD_STATE_CHANGED;
|
|
28
|
-
const SCARD_STATE_UNKNOWN = addon.SCARD_STATE_UNKNOWN;
|
|
29
|
-
const SCARD_STATE_UNAVAILABLE = addon.SCARD_STATE_UNAVAILABLE;
|
|
30
|
-
const SCARD_STATE_EMPTY = addon.SCARD_STATE_EMPTY;
|
|
31
|
-
const SCARD_STATE_PRESENT = addon.SCARD_STATE_PRESENT;
|
|
32
|
-
const SCARD_STATE_ATRMATCH = addon.SCARD_STATE_ATRMATCH;
|
|
33
|
-
const SCARD_STATE_EXCLUSIVE = addon.SCARD_STATE_EXCLUSIVE;
|
|
34
|
-
const SCARD_STATE_INUSE = addon.SCARD_STATE_INUSE;
|
|
35
|
-
const SCARD_STATE_MUTE = addon.SCARD_STATE_MUTE;
|
|
36
|
-
|
|
37
|
-
// Import Devices class
|
|
38
|
-
const { Devices } = require('./devices');
|
|
39
|
-
|
|
40
|
-
// Import error classes
|
|
41
|
-
const {
|
|
42
|
-
PCSCError,
|
|
43
|
-
CardRemovedError,
|
|
44
|
-
TimeoutError,
|
|
45
|
-
NoReadersError,
|
|
46
|
-
ServiceNotRunningError,
|
|
47
|
-
SharingViolationError,
|
|
48
|
-
createPCSCError,
|
|
49
|
-
} = require('./errors');
|
|
50
|
-
|
|
51
|
-
// Import control codes
|
|
52
|
-
const {
|
|
53
|
-
SCARD_CTL_CODE,
|
|
54
|
-
CM_IOCTL_GET_FEATURE_REQUEST,
|
|
55
|
-
FEATURE_VERIFY_PIN_START,
|
|
56
|
-
FEATURE_VERIFY_PIN_FINISH,
|
|
57
|
-
FEATURE_MODIFY_PIN_START,
|
|
58
|
-
FEATURE_MODIFY_PIN_FINISH,
|
|
59
|
-
FEATURE_GET_KEY_PRESSED,
|
|
60
|
-
FEATURE_VERIFY_PIN_DIRECT,
|
|
61
|
-
FEATURE_MODIFY_PIN_DIRECT,
|
|
62
|
-
FEATURE_MCT_READER_DIRECT,
|
|
63
|
-
FEATURE_MCT_UNIVERSAL,
|
|
64
|
-
FEATURE_IFD_PIN_PROPERTIES,
|
|
65
|
-
FEATURE_ABORT,
|
|
66
|
-
FEATURE_SET_SPE_MESSAGE,
|
|
67
|
-
FEATURE_VERIFY_PIN_DIRECT_APP_ID,
|
|
68
|
-
FEATURE_MODIFY_PIN_DIRECT_APP_ID,
|
|
69
|
-
FEATURE_WRITE_DISPLAY,
|
|
70
|
-
FEATURE_GET_KEY,
|
|
71
|
-
FEATURE_IFD_DISPLAY_PROPERTIES,
|
|
72
|
-
FEATURE_GET_TLV_PROPERTIES,
|
|
73
|
-
FEATURE_CCID_ESC_COMMAND,
|
|
74
|
-
parseFeatures,
|
|
75
|
-
} = require('./control-codes');
|
|
76
|
-
|
|
77
|
-
module.exports = {
|
|
78
|
-
// Classes
|
|
79
|
-
Context,
|
|
80
|
-
Reader,
|
|
81
|
-
Card,
|
|
82
|
-
Devices,
|
|
83
|
-
ReaderMonitor,
|
|
84
|
-
|
|
85
|
-
// Error classes
|
|
86
|
-
PCSCError,
|
|
87
|
-
CardRemovedError,
|
|
88
|
-
TimeoutError,
|
|
89
|
-
NoReadersError,
|
|
90
|
-
ServiceNotRunningError,
|
|
91
|
-
SharingViolationError,
|
|
92
|
-
createPCSCError,
|
|
93
|
-
|
|
94
|
-
// Share modes
|
|
95
|
-
SCARD_SHARE_EXCLUSIVE,
|
|
96
|
-
SCARD_SHARE_SHARED,
|
|
97
|
-
SCARD_SHARE_DIRECT,
|
|
98
|
-
|
|
99
|
-
// Protocols
|
|
100
|
-
SCARD_PROTOCOL_T0,
|
|
101
|
-
SCARD_PROTOCOL_T1,
|
|
102
|
-
SCARD_PROTOCOL_RAW,
|
|
103
|
-
SCARD_PROTOCOL_UNDEFINED,
|
|
104
|
-
|
|
105
|
-
// Disposition
|
|
106
|
-
SCARD_LEAVE_CARD,
|
|
107
|
-
SCARD_RESET_CARD,
|
|
108
|
-
SCARD_UNPOWER_CARD,
|
|
109
|
-
SCARD_EJECT_CARD,
|
|
110
|
-
|
|
111
|
-
// State flags
|
|
112
|
-
SCARD_STATE_UNAWARE,
|
|
113
|
-
SCARD_STATE_IGNORE,
|
|
114
|
-
SCARD_STATE_CHANGED,
|
|
115
|
-
SCARD_STATE_UNKNOWN,
|
|
116
|
-
SCARD_STATE_UNAVAILABLE,
|
|
117
|
-
SCARD_STATE_EMPTY,
|
|
118
|
-
SCARD_STATE_PRESENT,
|
|
119
|
-
SCARD_STATE_ATRMATCH,
|
|
120
|
-
SCARD_STATE_EXCLUSIVE,
|
|
121
|
-
SCARD_STATE_INUSE,
|
|
122
|
-
SCARD_STATE_MUTE,
|
|
123
|
-
|
|
124
|
-
// Control codes
|
|
125
|
-
SCARD_CTL_CODE,
|
|
126
|
-
CM_IOCTL_GET_FEATURE_REQUEST,
|
|
127
|
-
|
|
128
|
-
// CCID Feature tags
|
|
129
|
-
FEATURE_VERIFY_PIN_START,
|
|
130
|
-
FEATURE_VERIFY_PIN_FINISH,
|
|
131
|
-
FEATURE_MODIFY_PIN_START,
|
|
132
|
-
FEATURE_MODIFY_PIN_FINISH,
|
|
133
|
-
FEATURE_GET_KEY_PRESSED,
|
|
134
|
-
FEATURE_VERIFY_PIN_DIRECT,
|
|
135
|
-
FEATURE_MODIFY_PIN_DIRECT,
|
|
136
|
-
FEATURE_MCT_READER_DIRECT,
|
|
137
|
-
FEATURE_MCT_UNIVERSAL,
|
|
138
|
-
FEATURE_IFD_PIN_PROPERTIES,
|
|
139
|
-
FEATURE_ABORT,
|
|
140
|
-
FEATURE_SET_SPE_MESSAGE,
|
|
141
|
-
FEATURE_VERIFY_PIN_DIRECT_APP_ID,
|
|
142
|
-
FEATURE_MODIFY_PIN_DIRECT_APP_ID,
|
|
143
|
-
FEATURE_WRITE_DISPLAY,
|
|
144
|
-
FEATURE_GET_KEY,
|
|
145
|
-
FEATURE_IFD_DISPLAY_PROPERTIES,
|
|
146
|
-
FEATURE_GET_TLV_PROPERTIES,
|
|
147
|
-
FEATURE_CCID_ESC_COMMAND,
|
|
148
|
-
|
|
149
|
-
// Helper functions
|
|
150
|
-
parseFeatures,
|
|
151
|
-
};
|