smartcard 3.5.0 → 3.6.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 +58 -0
- package/dist/lib/control-codes.d.ts.map +1 -1
- package/dist/lib/control-codes.js +6 -2
- package/dist/lib/control-codes.js.map +1 -1
- package/dist/lib/devices.d.ts +9 -2
- package/dist/lib/devices.d.ts.map +1 -1
- package/dist/lib/devices.js +20 -5
- package/dist/lib/devices.js.map +1 -1
- package/dist/lib/index.d.ts +4 -2
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +7 -2
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/t0-handler.d.ts +32 -0
- package/dist/lib/t0-handler.d.ts.map +1 -0
- package/dist/lib/t0-handler.js +93 -0
- package/dist/lib/t0-handler.js.map +1 -0
- package/dist/lib/types.d.ts +9 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -306,6 +306,8 @@ class Devices extends EventEmitter {
|
|
|
306
306
|
start(): void;
|
|
307
307
|
stop(): void;
|
|
308
308
|
listReaders(): Reader[];
|
|
309
|
+
getCards(): ReadonlyMap<string, Card>; // Get all connected cards by reader name
|
|
310
|
+
getCard(readerName: string): Card | null; // Get card for specific reader
|
|
309
311
|
|
|
310
312
|
on(event: 'reader-attached', listener: (reader: Reader) => void): this;
|
|
311
313
|
on(event: 'reader-detached', listener: (reader: Reader) => void): this;
|
|
@@ -315,6 +317,52 @@ class Devices extends EventEmitter {
|
|
|
315
317
|
}
|
|
316
318
|
```
|
|
317
319
|
|
|
320
|
+
### transmitWithAutoResponse
|
|
321
|
+
|
|
322
|
+
Helper function for T=0 protocol cards that automatically handles status words:
|
|
323
|
+
- `SW1=61`: Sends GET RESPONSE to retrieve remaining data
|
|
324
|
+
- `SW1=6C`: Retries with corrected Le value
|
|
325
|
+
|
|
326
|
+
```javascript
|
|
327
|
+
const { transmitWithAutoResponse } = require('smartcard');
|
|
328
|
+
|
|
329
|
+
// Without auto-response (raw)
|
|
330
|
+
const raw = await card.transmit([0x00, 0xA4, 0x04, 0x00, 0x0E, ...aid]);
|
|
331
|
+
// Returns: 61 1C (meaning 28 more bytes available)
|
|
332
|
+
|
|
333
|
+
// With auto-response
|
|
334
|
+
const response = await transmitWithAutoResponse(card, [0x00, 0xA4, 0x04, 0x00, 0x0E, ...aid], {
|
|
335
|
+
autoGetResponse: true
|
|
336
|
+
});
|
|
337
|
+
// Returns: full response data + 90 00
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
### Control Codes
|
|
341
|
+
|
|
342
|
+
Utilities for reader control commands (e.g., PIN verification on pinpad readers).
|
|
343
|
+
|
|
344
|
+
```javascript
|
|
345
|
+
const {
|
|
346
|
+
SCARD_CTL_CODE,
|
|
347
|
+
CM_IOCTL_GET_FEATURE_REQUEST,
|
|
348
|
+
parseFeatures,
|
|
349
|
+
FEATURE_VERIFY_PIN_DIRECT,
|
|
350
|
+
FEATURE_MODIFY_PIN_DIRECT
|
|
351
|
+
} = require('smartcard');
|
|
352
|
+
|
|
353
|
+
// Get supported features from reader
|
|
354
|
+
const featureResponse = await card.control(CM_IOCTL_GET_FEATURE_REQUEST);
|
|
355
|
+
const features = parseFeatures(featureResponse);
|
|
356
|
+
|
|
357
|
+
if (features.has(FEATURE_VERIFY_PIN_DIRECT)) {
|
|
358
|
+
const pinVerifyCode = features.get(FEATURE_VERIFY_PIN_DIRECT);
|
|
359
|
+
// Use pinVerifyCode with card.control() for PIN verification
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// Generate platform-specific control code
|
|
363
|
+
const customCode = SCARD_CTL_CODE(3500);
|
|
364
|
+
```
|
|
365
|
+
|
|
318
366
|
### Constants
|
|
319
367
|
|
|
320
368
|
```javascript
|
|
@@ -339,6 +387,16 @@ SCARD_STATE_PRESENT // Card is present
|
|
|
339
387
|
SCARD_STATE_EMPTY // No card in reader
|
|
340
388
|
SCARD_STATE_CHANGED // State has changed
|
|
341
389
|
// ... and more
|
|
390
|
+
|
|
391
|
+
// CCID Feature constants
|
|
392
|
+
FEATURE_VERIFY_PIN_START // 0x01
|
|
393
|
+
FEATURE_VERIFY_PIN_FINISH // 0x02
|
|
394
|
+
FEATURE_MODIFY_PIN_START // 0x03
|
|
395
|
+
FEATURE_MODIFY_PIN_FINISH // 0x04
|
|
396
|
+
FEATURE_GET_KEY_PRESSED // 0x05
|
|
397
|
+
FEATURE_VERIFY_PIN_DIRECT // 0x06
|
|
398
|
+
FEATURE_MODIFY_PIN_DIRECT // 0x07
|
|
399
|
+
// ... and more
|
|
342
400
|
```
|
|
343
401
|
|
|
344
402
|
## Common APDU Commands
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-codes.d.ts","sourceRoot":"","sources":["../../lib/control-codes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASnD;AAGD,eAAO,MAAM,4BAA4B,QAAuB,CAAC;AAGjE,eAAO,MAAM,wBAAwB,IAAO,CAAC;AAC7C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,wBAAwB,IAAO,CAAC;AAC7C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,uBAAuB,IAAO,CAAC;AAC5C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,qBAAqB,IAAO,CAAC;AAC1C,eAAO,MAAM,0BAA0B,KAAO,CAAC;AAC/C,eAAO,MAAM,aAAa,KAAO,CAAC;AAClC,eAAO,MAAM,uBAAuB,KAAO,CAAC;AAC5C,eAAO,MAAM,gCAAgC,KAAO,CAAC;AACrD,eAAO,MAAM,gCAAgC,KAAO,CAAC;AACrD,eAAO,MAAM,qBAAqB,KAAO,CAAC;AAC1C,eAAO,MAAM,eAAe,KAAO,CAAC;AACpC,eAAO,MAAM,8BAA8B,KAAO,CAAC;AACnD,eAAO,MAAM,0BAA0B,KAAO,CAAC;AAC/C,eAAO,MAAM,wBAAwB,KAAO,CAAC;AAE7C;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"control-codes.d.ts","sourceRoot":"","sources":["../../lib/control-codes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASnD;AAGD,eAAO,MAAM,4BAA4B,QAAuB,CAAC;AAGjE,eAAO,MAAM,wBAAwB,IAAO,CAAC;AAC7C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,wBAAwB,IAAO,CAAC;AAC7C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,uBAAuB,IAAO,CAAC;AAC5C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,qBAAqB,IAAO,CAAC;AAC1C,eAAO,MAAM,0BAA0B,KAAO,CAAC;AAC/C,eAAO,MAAM,aAAa,KAAO,CAAC;AAClC,eAAO,MAAM,uBAAuB,KAAO,CAAC;AAC5C,eAAO,MAAM,gCAAgC,KAAO,CAAC;AACrD,eAAO,MAAM,gCAAgC,KAAO,CAAC;AACrD,eAAO,MAAM,qBAAqB,KAAO,CAAC;AAC1C,eAAO,MAAM,eAAe,KAAO,CAAC;AACpC,eAAO,MAAM,8BAA8B,KAAO,CAAC;AACnD,eAAO,MAAM,0BAA0B,KAAO,CAAC;AAC/C,eAAO,MAAM,wBAAwB,KAAO,CAAC;AAE7C;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA2BnE"}
|
|
@@ -48,10 +48,14 @@ exports.FEATURE_CCID_ESC_COMMAND = 0x13;
|
|
|
48
48
|
function parseFeatures(response) {
|
|
49
49
|
const features = new Map();
|
|
50
50
|
let offset = 0;
|
|
51
|
-
while (offset +
|
|
51
|
+
while (offset + 2 <= response.length) {
|
|
52
52
|
const tag = response[offset];
|
|
53
53
|
const length = response[offset + 1];
|
|
54
|
-
|
|
54
|
+
// Validate length doesn't exceed remaining buffer
|
|
55
|
+
if (offset + 2 + length > response.length) {
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
if (length === 4) {
|
|
55
59
|
// Big-endian control code
|
|
56
60
|
const controlCode = (response[offset + 2] << 24) |
|
|
57
61
|
(response[offset + 3] << 16) |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-codes.js","sourceRoot":"","sources":["../../lib/control-codes.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAKH,wCASC;AA6BD,
|
|
1
|
+
{"version":3,"file":"control-codes.js","sourceRoot":"","sources":["../../lib/control-codes.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAKH,wCASC;AA6BD,sCA2BC;AApED;;GAEG;AACH,SAAgB,cAAc,CAAC,IAAY;IACvC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC/B,uDAAuD;QACvD,+BAA+B;QAC/B,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACJ,iCAAiC;QACjC,OAAO,UAAU,GAAG,IAAI,CAAC;IAC7B,CAAC;AACL,CAAC;AAED,uBAAuB;AACV,QAAA,4BAA4B,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;AAEjE,qCAAqC;AACxB,QAAA,wBAAwB,GAAG,IAAI,CAAC;AAChC,QAAA,yBAAyB,GAAG,IAAI,CAAC;AACjC,QAAA,wBAAwB,GAAG,IAAI,CAAC;AAChC,QAAA,yBAAyB,GAAG,IAAI,CAAC;AACjC,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAC/B,QAAA,yBAAyB,GAAG,IAAI,CAAC;AACjC,QAAA,yBAAyB,GAAG,IAAI,CAAC;AACjC,QAAA,yBAAyB,GAAG,IAAI,CAAC;AACjC,QAAA,qBAAqB,GAAG,IAAI,CAAC;AAC7B,QAAA,0BAA0B,GAAG,IAAI,CAAC;AAClC,QAAA,aAAa,GAAG,IAAI,CAAC;AACrB,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAC/B,QAAA,gCAAgC,GAAG,IAAI,CAAC;AACxC,QAAA,gCAAgC,GAAG,IAAI,CAAC;AACxC,QAAA,qBAAqB,GAAG,IAAI,CAAC;AAC7B,QAAA,eAAe,GAAG,IAAI,CAAC;AACvB,QAAA,8BAA8B,GAAG,IAAI,CAAC;AACtC,QAAA,0BAA0B,GAAG,IAAI,CAAC;AAClC,QAAA,wBAAwB,GAAG,IAAI,CAAC;AAE7C;;GAEG;AACH,SAAgB,aAAa,CAAC,QAAgB;IAC1C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,OAAO,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEpC,kDAAkD;QAClD,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM;QACV,CAAC;QAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACf,0BAA0B;YAC1B,MAAM,WAAW,GACb,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5B,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5B,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC3B,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
package/dist/lib/devices.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import type { Card, DeviceEvents, DevicesOptions, Reader } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Check if an error indicates an unresponsive card (SCARD_W_UNRESPONSIVE_CARD).
|
|
5
|
+
* Used to determine if we should fallback to T=0 protocol.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isUnresponsiveCardError(err: Error): boolean;
|
|
3
8
|
/**
|
|
4
9
|
* High-level event-driven API for PC/SC devices
|
|
5
10
|
*
|
|
@@ -44,9 +49,9 @@ export declare class Devices extends EventEmitter {
|
|
|
44
49
|
listReaders(): Reader[];
|
|
45
50
|
/**
|
|
46
51
|
* Get all currently connected cards
|
|
47
|
-
* @returns
|
|
52
|
+
* @returns ReadonlyMap of reader name to Card object
|
|
48
53
|
*/
|
|
49
|
-
getCards():
|
|
54
|
+
getCards(): ReadonlyMap<string, Card>;
|
|
50
55
|
/**
|
|
51
56
|
* Get the card connected to a specific reader
|
|
52
57
|
* @param readerName The name of the reader
|
|
@@ -81,6 +86,8 @@ export declare class Devices extends EventEmitter {
|
|
|
81
86
|
on<K extends keyof DeviceEvents>(event: K, listener: DeviceEvents[K]): this;
|
|
82
87
|
once<K extends keyof DeviceEvents>(event: K, listener: DeviceEvents[K]): this;
|
|
83
88
|
off<K extends keyof DeviceEvents>(event: K, listener: DeviceEvents[K]): this;
|
|
89
|
+
addListener<K extends keyof DeviceEvents>(event: K, listener: DeviceEvents[K]): this;
|
|
90
|
+
removeListener<K extends keyof DeviceEvents>(event: K, listener: DeviceEvents[K]): this;
|
|
84
91
|
emit<K extends keyof DeviceEvents>(event: K, ...args: Parameters<DeviceEvents[K]>): boolean;
|
|
85
92
|
}
|
|
86
93
|
//# sourceMappingURL=devices.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../../lib/devices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EACR,IAAI,EAGJ,YAAY,EACZ,cAAc,
|
|
1
|
+
{"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../../lib/devices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EACR,IAAI,EAGJ,YAAY,EACZ,cAAc,EAGd,MAAM,EAGT,MAAM,SAAS,CAAC;AASjB;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAK3D;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,OAAQ,SAAQ,YAAY;IACrC,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,WAAW,CAAoC;IAGvD,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,kBAAkB,CAAS;IAEnC;;;OAGG;gBACS,OAAO,CAAC,EAAE,cAAc;IAcpC;;OAEG;IACH,KAAK,IAAI,IAAI;IAsBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAkCZ;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IAWvB;;;OAGG;IACH,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;IAUrC;;;;OAIG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKxC;;;OAGG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;YACW,aAAa;IA+B3B;;OAEG;YACW,qBAAqB;IA0BnC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;YACW,mBAAmB;IAqDjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAC3B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAC1B,IAAI;IAIP,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAC7B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAC1B,IAAI;IAIP,GAAG,CAAC,CAAC,SAAS,MAAM,YAAY,EAC5B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAC1B,IAAI;IAIP,WAAW,CAAC,CAAC,SAAS,MAAM,YAAY,EACpC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAC1B,IAAI;IAIP,cAAc,CAAC,CAAC,SAAS,MAAM,YAAY,EACvC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAC1B,IAAI;IAIP,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAC7B,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GACrC,OAAO;CAGb"}
|
package/dist/lib/devices.js
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Devices = void 0;
|
|
4
|
+
exports.isUnresponsiveCardError = isUnresponsiveCardError;
|
|
4
5
|
const events_1 = require("events");
|
|
5
6
|
const addon = require('../../build/Release/smartcard_napi.node');
|
|
7
|
+
/**
|
|
8
|
+
* Check if an error indicates an unresponsive card (SCARD_W_UNRESPONSIVE_CARD).
|
|
9
|
+
* Used to determine if we should fallback to T=0 protocol.
|
|
10
|
+
*/
|
|
11
|
+
function isUnresponsiveCardError(err) {
|
|
12
|
+
if (!err || typeof err.message !== 'string') {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
return err.message.toLowerCase().includes('unresponsive');
|
|
16
|
+
}
|
|
6
17
|
/**
|
|
7
18
|
* High-level event-driven API for PC/SC devices
|
|
8
19
|
*
|
|
@@ -120,7 +131,7 @@ class Devices extends events_1.EventEmitter {
|
|
|
120
131
|
}
|
|
121
132
|
/**
|
|
122
133
|
* Get all currently connected cards
|
|
123
|
-
* @returns
|
|
134
|
+
* @returns ReadonlyMap of reader name to Card object
|
|
124
135
|
*/
|
|
125
136
|
getCards() {
|
|
126
137
|
const cards = new Map();
|
|
@@ -230,11 +241,9 @@ class Devices extends events_1.EventEmitter {
|
|
|
230
241
|
card = await reader.connect(this._SCARD_SHARE_SHARED, this._SCARD_PROTOCOL_T0 | this._SCARD_PROTOCOL_T1);
|
|
231
242
|
}
|
|
232
243
|
catch (dualProtocolErr) {
|
|
233
|
-
// If dual protocol fails
|
|
244
|
+
// If dual protocol fails with unresponsive card error,
|
|
234
245
|
// fallback to T=0 only (issue #34)
|
|
235
|
-
|
|
236
|
-
if (err.message &&
|
|
237
|
-
err.message.toLowerCase().includes('unresponsive')) {
|
|
246
|
+
if (isUnresponsiveCardError(dualProtocolErr)) {
|
|
238
247
|
card = await reader.connect(this._SCARD_SHARE_SHARED, this._SCARD_PROTOCOL_T0);
|
|
239
248
|
}
|
|
240
249
|
else {
|
|
@@ -288,6 +297,12 @@ class Devices extends events_1.EventEmitter {
|
|
|
288
297
|
off(event, listener) {
|
|
289
298
|
return super.off(event, listener);
|
|
290
299
|
}
|
|
300
|
+
addListener(event, listener) {
|
|
301
|
+
return super.addListener(event, listener);
|
|
302
|
+
}
|
|
303
|
+
removeListener(event, listener) {
|
|
304
|
+
return super.removeListener(event, listener);
|
|
305
|
+
}
|
|
291
306
|
emit(event, ...args) {
|
|
292
307
|
return super.emit(event, ...args);
|
|
293
308
|
}
|
package/dist/lib/devices.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devices.js","sourceRoot":"","sources":["../../lib/devices.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"devices.js","sourceRoot":"","sources":["../../lib/devices.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ContextConstructor, ReaderMonitorConstructor } from './types';
|
|
2
|
+
export declare const Context: ContextConstructor;
|
|
2
3
|
export declare const Reader: unknown;
|
|
3
4
|
export declare const Card: unknown;
|
|
4
|
-
export declare const ReaderMonitor:
|
|
5
|
+
export declare const ReaderMonitor: ReaderMonitorConstructor;
|
|
5
6
|
export declare const SCARD_SHARE_EXCLUSIVE: number;
|
|
6
7
|
export declare const SCARD_SHARE_SHARED: number;
|
|
7
8
|
export declare const SCARD_SHARE_DIRECT: number;
|
|
@@ -25,6 +26,7 @@ export declare const SCARD_STATE_EXCLUSIVE: number;
|
|
|
25
26
|
export declare const SCARD_STATE_INUSE: number;
|
|
26
27
|
export declare const SCARD_STATE_MUTE: number;
|
|
27
28
|
export { Devices } from './devices';
|
|
29
|
+
export { transmitWithAutoResponse, buildGetResponseCommand, correctLeInCommand, } from './t0-handler';
|
|
28
30
|
export { PCSCError, CardRemovedError, TimeoutError, NoReadersError, ServiceNotRunningError, SharingViolationError, createPCSCError, } from './errors';
|
|
29
31
|
export { SCARD_CTL_CODE, CM_IOCTL_GET_FEATURE_REQUEST, FEATURE_VERIFY_PIN_START, FEATURE_VERIFY_PIN_FINISH, FEATURE_MODIFY_PIN_START, FEATURE_MODIFY_PIN_FINISH, FEATURE_GET_KEY_PRESSED, FEATURE_VERIFY_PIN_DIRECT, FEATURE_MODIFY_PIN_DIRECT, FEATURE_MCT_READER_DIRECT, FEATURE_MCT_UNIVERSAL, FEATURE_IFD_PIN_PROPERTIES, FEATURE_ABORT, FEATURE_SET_SPE_MESSAGE, FEATURE_VERIFY_PIN_DIRECT_APP_ID, FEATURE_MODIFY_PIN_DIRECT_APP_ID, FEATURE_WRITE_DISPLAY, FEATURE_GET_KEY, FEATURE_IFD_DISPLAY_PROPERTIES, FEATURE_GET_TLV_PROPERTIES, FEATURE_CCID_ESC_COMMAND, parseFeatures, } from './control-codes';
|
|
30
32
|
export type { ReaderState, CardStatus, TransmitOptions, Card as CardInterface, Reader as ReaderInterface, Context as ContextInterface, MonitorEvent, ReaderMonitor as ReaderMonitorInterface, DeviceEvents, DevicesOptions, } from './types';
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,kBAAkB,EAElB,wBAAwB,EAC3B,MAAM,SAAS,CAAC;AAMjB,eAAO,MAAM,OAAO,EAAoB,kBAAkB,CAAC;AAC3D,eAAO,MAAM,MAAM,SAAe,CAAC;AACnC,eAAO,MAAM,IAAI,SAAa,CAAC;AAC/B,eAAO,MAAM,aAAa,EAA0B,wBAAwB,CAAC;AAG7E,eAAO,MAAM,qBAAqB,QAA8B,CAAC;AACjE,eAAO,MAAM,kBAAkB,QAA2B,CAAC;AAC3D,eAAO,MAAM,kBAAkB,QAA2B,CAAC;AAE3D,eAAO,MAAM,iBAAiB,QAA0B,CAAC;AACzD,eAAO,MAAM,iBAAiB,QAA0B,CAAC;AACzD,eAAO,MAAM,kBAAkB,QAA2B,CAAC;AAC3D,eAAO,MAAM,wBAAwB,QAAiC,CAAC;AAEvE,eAAO,MAAM,gBAAgB,QAAyB,CAAC;AACvD,eAAO,MAAM,gBAAgB,QAAyB,CAAC;AACvD,eAAO,MAAM,kBAAkB,QAA2B,CAAC;AAC3D,eAAO,MAAM,gBAAgB,QAAyB,CAAC;AAEvD,eAAO,MAAM,mBAAmB,QAA4B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,QAA2B,CAAC;AAC3D,eAAO,MAAM,mBAAmB,QAA4B,CAAC;AAC7D,eAAO,MAAM,mBAAmB,QAA4B,CAAC;AAC7D,eAAO,MAAM,uBAAuB,QAAgC,CAAC;AACrE,eAAO,MAAM,iBAAiB,QAA0B,CAAC;AACzD,eAAO,MAAM,mBAAmB,QAA4B,CAAC;AAC7D,eAAO,MAAM,oBAAoB,QAA6B,CAAC;AAC/D,eAAO,MAAM,qBAAqB,QAA8B,CAAC;AACjE,eAAO,MAAM,iBAAiB,QAA0B,CAAC;AACzD,eAAO,MAAM,gBAAgB,QAAyB,CAAC;AAGvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACH,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,GACrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACH,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,GAClB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACH,cAAc,EACd,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,aAAa,EACb,uBAAuB,EACvB,gCAAgC,EAChC,gCAAgC,EAChC,qBAAqB,EACrB,eAAe,EACf,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,aAAa,GAChB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACR,WAAW,EACX,UAAU,EACV,eAAe,EACf,IAAI,IAAI,aAAa,EACrB,MAAM,IAAI,eAAe,EACzB,OAAO,IAAI,gBAAgB,EAC3B,YAAY,EACZ,aAAa,IAAI,sBAAsB,EACvC,YAAY,EACZ,cAAc,GACjB,MAAM,SAAS,CAAC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.parseFeatures = exports.FEATURE_CCID_ESC_COMMAND = exports.FEATURE_GET_TLV_PROPERTIES = exports.FEATURE_IFD_DISPLAY_PROPERTIES = exports.FEATURE_GET_KEY = exports.FEATURE_WRITE_DISPLAY = void 0;
|
|
3
|
+
exports.FEATURE_ABORT = exports.FEATURE_IFD_PIN_PROPERTIES = exports.FEATURE_MCT_UNIVERSAL = exports.FEATURE_MCT_READER_DIRECT = exports.FEATURE_MODIFY_PIN_DIRECT = exports.FEATURE_VERIFY_PIN_DIRECT = exports.FEATURE_GET_KEY_PRESSED = exports.FEATURE_MODIFY_PIN_FINISH = exports.FEATURE_MODIFY_PIN_START = exports.FEATURE_VERIFY_PIN_FINISH = exports.FEATURE_VERIFY_PIN_START = exports.CM_IOCTL_GET_FEATURE_REQUEST = exports.SCARD_CTL_CODE = exports.createPCSCError = exports.SharingViolationError = exports.ServiceNotRunningError = exports.NoReadersError = exports.TimeoutError = exports.CardRemovedError = exports.PCSCError = exports.correctLeInCommand = exports.buildGetResponseCommand = exports.transmitWithAutoResponse = exports.Devices = exports.SCARD_STATE_MUTE = exports.SCARD_STATE_INUSE = exports.SCARD_STATE_EXCLUSIVE = exports.SCARD_STATE_ATRMATCH = exports.SCARD_STATE_PRESENT = exports.SCARD_STATE_EMPTY = exports.SCARD_STATE_UNAVAILABLE = exports.SCARD_STATE_UNKNOWN = exports.SCARD_STATE_CHANGED = exports.SCARD_STATE_IGNORE = exports.SCARD_STATE_UNAWARE = exports.SCARD_EJECT_CARD = exports.SCARD_UNPOWER_CARD = exports.SCARD_RESET_CARD = exports.SCARD_LEAVE_CARD = exports.SCARD_PROTOCOL_UNDEFINED = exports.SCARD_PROTOCOL_RAW = exports.SCARD_PROTOCOL_T1 = exports.SCARD_PROTOCOL_T0 = exports.SCARD_SHARE_DIRECT = exports.SCARD_SHARE_SHARED = exports.SCARD_SHARE_EXCLUSIVE = exports.ReaderMonitor = exports.Card = exports.Reader = exports.Context = void 0;
|
|
4
|
+
exports.parseFeatures = exports.FEATURE_CCID_ESC_COMMAND = exports.FEATURE_GET_TLV_PROPERTIES = exports.FEATURE_IFD_DISPLAY_PROPERTIES = exports.FEATURE_GET_KEY = exports.FEATURE_WRITE_DISPLAY = exports.FEATURE_MODIFY_PIN_DIRECT_APP_ID = exports.FEATURE_VERIFY_PIN_DIRECT_APP_ID = exports.FEATURE_SET_SPE_MESSAGE = void 0;
|
|
5
5
|
// Load native addon
|
|
6
6
|
const addon = require('../../build/Release/smartcard_napi.node');
|
|
7
7
|
// Re-export native classes
|
|
@@ -35,6 +35,11 @@ exports.SCARD_STATE_MUTE = addon.SCARD_STATE_MUTE;
|
|
|
35
35
|
// Import and re-export Devices class
|
|
36
36
|
var devices_1 = require("./devices");
|
|
37
37
|
Object.defineProperty(exports, "Devices", { enumerable: true, get: function () { return devices_1.Devices; } });
|
|
38
|
+
// Import and re-export T=0 protocol handler
|
|
39
|
+
var t0_handler_1 = require("./t0-handler");
|
|
40
|
+
Object.defineProperty(exports, "transmitWithAutoResponse", { enumerable: true, get: function () { return t0_handler_1.transmitWithAutoResponse; } });
|
|
41
|
+
Object.defineProperty(exports, "buildGetResponseCommand", { enumerable: true, get: function () { return t0_handler_1.buildGetResponseCommand; } });
|
|
42
|
+
Object.defineProperty(exports, "correctLeInCommand", { enumerable: true, get: function () { return t0_handler_1.correctLeInCommand; } });
|
|
38
43
|
// Import and re-export error classes
|
|
39
44
|
var errors_1 = require("./errors");
|
|
40
45
|
Object.defineProperty(exports, "PCSCError", { enumerable: true, get: function () { return errors_1.PCSCError; } });
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T=0 protocol status word handling
|
|
3
|
+
*
|
|
4
|
+
* Handles automatic GET RESPONSE (SW1=61) and Le correction (SW1=6C)
|
|
5
|
+
* for T=0 protocol smart cards.
|
|
6
|
+
*/
|
|
7
|
+
import type { Card, TransmitOptions } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Build a GET RESPONSE APDU command (00 C0 00 00 Le)
|
|
10
|
+
*
|
|
11
|
+
* @param bytesAvailable Number of bytes to retrieve (Le value)
|
|
12
|
+
* @returns GET RESPONSE command buffer
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildGetResponseCommand(bytesAvailable: number): Buffer;
|
|
15
|
+
/**
|
|
16
|
+
* Correct the Le value in an APDU command
|
|
17
|
+
*
|
|
18
|
+
* @param command Original command buffer
|
|
19
|
+
* @param newLe Corrected Le value from SW2
|
|
20
|
+
* @returns New command buffer with corrected Le
|
|
21
|
+
*/
|
|
22
|
+
export declare function correctLeInCommand(command: Buffer, newLe: number): Buffer;
|
|
23
|
+
/**
|
|
24
|
+
* Transmit an APDU with optional automatic T=0 status word handling
|
|
25
|
+
*
|
|
26
|
+
* @param card The card to transmit to
|
|
27
|
+
* @param command The APDU command
|
|
28
|
+
* @param options Transmit options including autoGetResponse
|
|
29
|
+
* @returns The response data
|
|
30
|
+
*/
|
|
31
|
+
export declare function transmitWithAutoResponse(card: Card, command: Buffer | number[], options?: TransmitOptions): Promise<Buffer>;
|
|
32
|
+
//# sourceMappingURL=t0-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"t0-handler.d.ts","sourceRoot":"","sources":["../../lib/t0-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAErD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAezE;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC1C,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,GAAE,eAAoB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA4CjB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* T=0 protocol status word handling
|
|
4
|
+
*
|
|
5
|
+
* Handles automatic GET RESPONSE (SW1=61) and Le correction (SW1=6C)
|
|
6
|
+
* for T=0 protocol smart cards.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.buildGetResponseCommand = buildGetResponseCommand;
|
|
10
|
+
exports.correctLeInCommand = correctLeInCommand;
|
|
11
|
+
exports.transmitWithAutoResponse = transmitWithAutoResponse;
|
|
12
|
+
/**
|
|
13
|
+
* Build a GET RESPONSE APDU command (00 C0 00 00 Le)
|
|
14
|
+
*
|
|
15
|
+
* @param bytesAvailable Number of bytes to retrieve (Le value)
|
|
16
|
+
* @returns GET RESPONSE command buffer
|
|
17
|
+
*/
|
|
18
|
+
function buildGetResponseCommand(bytesAvailable) {
|
|
19
|
+
return Buffer.from([0x00, 0xc0, 0x00, 0x00, bytesAvailable]);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Correct the Le value in an APDU command
|
|
23
|
+
*
|
|
24
|
+
* @param command Original command buffer
|
|
25
|
+
* @param newLe Corrected Le value from SW2
|
|
26
|
+
* @returns New command buffer with corrected Le
|
|
27
|
+
*/
|
|
28
|
+
function correctLeInCommand(command, newLe) {
|
|
29
|
+
if (command.length === 4) {
|
|
30
|
+
// Case 1: No Le in original, append it
|
|
31
|
+
return Buffer.concat([command, Buffer.from([newLe])]);
|
|
32
|
+
}
|
|
33
|
+
else if (command.length === 5) {
|
|
34
|
+
// Case 2: Le at end, replace it
|
|
35
|
+
const newCmd = Buffer.from(command);
|
|
36
|
+
newCmd[4] = newLe;
|
|
37
|
+
return newCmd;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
// Case 3/4: Command with Lc and data, Le at end
|
|
41
|
+
const newCmd = Buffer.from(command);
|
|
42
|
+
newCmd[newCmd.length - 1] = newLe;
|
|
43
|
+
return newCmd;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Transmit an APDU with optional automatic T=0 status word handling
|
|
48
|
+
*
|
|
49
|
+
* @param card The card to transmit to
|
|
50
|
+
* @param command The APDU command
|
|
51
|
+
* @param options Transmit options including autoGetResponse
|
|
52
|
+
* @returns The response data
|
|
53
|
+
*/
|
|
54
|
+
async function transmitWithAutoResponse(card, command, options = {}) {
|
|
55
|
+
const cmdBuffer = Buffer.isBuffer(command) ? command : Buffer.from(command);
|
|
56
|
+
// Transmit the initial command
|
|
57
|
+
let response = await card.transmit(cmdBuffer, options);
|
|
58
|
+
// If autoGetResponse is not enabled, return raw response
|
|
59
|
+
if (!options.autoGetResponse) {
|
|
60
|
+
return response;
|
|
61
|
+
}
|
|
62
|
+
// Handle T=0 special status words
|
|
63
|
+
const collectedData = [];
|
|
64
|
+
while (response.length >= 2) {
|
|
65
|
+
const sw1 = response[response.length - 2];
|
|
66
|
+
const sw2 = response[response.length - 1];
|
|
67
|
+
if (sw1 === 0x61) {
|
|
68
|
+
// SW1=61: More data available, send GET RESPONSE
|
|
69
|
+
// Collect any data before the status word
|
|
70
|
+
if (response.length > 2) {
|
|
71
|
+
collectedData.push(response.subarray(0, response.length - 2));
|
|
72
|
+
}
|
|
73
|
+
const getResponseCmd = buildGetResponseCommand(sw2);
|
|
74
|
+
response = await card.transmit(getResponseCmd, options);
|
|
75
|
+
}
|
|
76
|
+
else if (sw1 === 0x6c) {
|
|
77
|
+
// SW1=6C: Wrong Le, retry with correct value
|
|
78
|
+
const newCmd = correctLeInCommand(cmdBuffer, sw2);
|
|
79
|
+
response = await card.transmit(newCmd, options);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
// Not a special status word, we're done
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// If we collected data from chained responses, concatenate it with final response
|
|
87
|
+
if (collectedData.length > 0) {
|
|
88
|
+
collectedData.push(response);
|
|
89
|
+
return Buffer.concat(collectedData);
|
|
90
|
+
}
|
|
91
|
+
return response;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=t0-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"t0-handler.js","sourceRoot":"","sources":["../../lib/t0-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -28,6 +28,15 @@ export interface TransmitOptions {
|
|
|
28
28
|
* Maximum: 262144 (256KB for extended APDUs)
|
|
29
29
|
*/
|
|
30
30
|
maxRecvLength?: number;
|
|
31
|
+
/**
|
|
32
|
+
* Automatically handle T=0 protocol status words:
|
|
33
|
+
* - SW1=61: Send GET RESPONSE to retrieve remaining data
|
|
34
|
+
* - SW1=6C: Retry with corrected Le value
|
|
35
|
+
*
|
|
36
|
+
* Only applicable when using transmitWithAutoResponse().
|
|
37
|
+
* Default: false (raw responses returned)
|
|
38
|
+
*/
|
|
39
|
+
autoGetResponse?: boolean;
|
|
31
40
|
}
|
|
32
41
|
/**
|
|
33
42
|
* Represents a connected smart card
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
|