@ledgerhq/devices 6.20.2 → 6.24.2-monorepo.1

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.
Files changed (56) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/CHANGELOG.md +19 -0
  3. package/jest.config.ts +6 -0
  4. package/lib/ble/receiveAPDU.d.ts +0 -0
  5. package/lib/ble/receiveAPDU.d.ts.map +0 -0
  6. package/lib/ble/receiveAPDU.js +0 -0
  7. package/lib/ble/receiveAPDU.js.map +0 -0
  8. package/lib/ble/sendAPDU.d.ts +0 -0
  9. package/lib/ble/sendAPDU.d.ts.map +0 -0
  10. package/lib/ble/sendAPDU.js +0 -0
  11. package/lib/ble/sendAPDU.js.map +0 -0
  12. package/lib/hid-framing.d.ts +0 -0
  13. package/lib/hid-framing.d.ts.map +0 -0
  14. package/lib/hid-framing.js +0 -0
  15. package/lib/hid-framing.js.map +0 -0
  16. package/lib/index.d.ts +0 -0
  17. package/lib/index.d.ts.map +1 -1
  18. package/lib/index.js +1 -1
  19. package/lib/index.js.map +1 -1
  20. package/lib/scrambling.d.ts +0 -0
  21. package/lib/scrambling.d.ts.map +0 -0
  22. package/lib/scrambling.js +0 -0
  23. package/lib/scrambling.js.map +0 -0
  24. package/lib-es/ble/receiveAPDU.d.ts +0 -0
  25. package/lib-es/ble/receiveAPDU.d.ts.map +0 -0
  26. package/lib-es/ble/receiveAPDU.js +0 -0
  27. package/lib-es/ble/receiveAPDU.js.map +0 -0
  28. package/lib-es/ble/sendAPDU.d.ts +0 -0
  29. package/lib-es/ble/sendAPDU.d.ts.map +0 -0
  30. package/lib-es/ble/sendAPDU.js +0 -0
  31. package/lib-es/ble/sendAPDU.js.map +0 -0
  32. package/lib-es/hid-framing.d.ts +0 -0
  33. package/lib-es/hid-framing.d.ts.map +0 -0
  34. package/lib-es/hid-framing.js +0 -0
  35. package/lib-es/hid-framing.js.map +0 -0
  36. package/lib-es/index.d.ts +0 -0
  37. package/lib-es/index.d.ts.map +1 -1
  38. package/lib-es/index.js +1 -1
  39. package/lib-es/index.js.map +1 -1
  40. package/lib-es/scrambling.d.ts +0 -0
  41. package/lib-es/scrambling.d.ts.map +0 -0
  42. package/lib-es/scrambling.js +0 -0
  43. package/lib-es/scrambling.js.map +0 -0
  44. package/package.json +9 -9
  45. package/src/index.ts +0 -1
  46. package/tests/{identifyTargetId.test.js → identifyTargetId.test.ts} +0 -1
  47. package/lib/ble/receiveAPDU.js.flow +0 -82
  48. package/lib/ble/sendAPDU.js.flow +0 -71
  49. package/lib/hid-framing.js.flow +0 -89
  50. package/lib/index.js.flow +0 -178
  51. package/lib/scrambling.js.flow +0 -10
  52. package/lib-es/ble/receiveAPDU.js.flow +0 -82
  53. package/lib-es/ble/sendAPDU.js.flow +0 -71
  54. package/lib-es/hid-framing.js.flow +0 -89
  55. package/lib-es/index.js.flow +0 -178
  56. package/lib-es/scrambling.js.flow +0 -10
@@ -0,0 +1,5 @@
1
+ @ledgerhq/devices:build: cache hit, replaying output 67c1c186127fdaab
2
+ @ledgerhq/devices:build: 
3
+ @ledgerhq/devices:build: > @ledgerhq/devices@6.24.2-monorepo.1 build /Users/valmeida/projects/live/ledger-live/libs/ledgerjs/packages/devices
4
+ @ledgerhq/devices:build: > bash ../../script/build.sh
5
+ @ledgerhq/devices:build: 
package/CHANGELOG.md ADDED
@@ -0,0 +1,19 @@
1
+ # @ledgerhq/devices
2
+
3
+ ## 6.24.2-monorepo.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 1b6fec9db: monorepo prelease 2
8
+ - Updated dependencies [1b6fec9db]
9
+ - @ledgerhq/errors@6.10.1-monorepo.1
10
+ - @ledgerhq/logs@6.10.1-monorepo.1
11
+
12
+ ## 6.24.2-monorepo.0
13
+
14
+ ### Patch Changes
15
+
16
+ - test prerelease
17
+ - Updated dependencies
18
+ - @ledgerhq/errors@6.10.1-monorepo.0
19
+ - @ledgerhq/logs@6.10.1-monorepo.0
package/jest.config.ts ADDED
@@ -0,0 +1,6 @@
1
+ import baseConfig from "../../jest.config";
2
+
3
+ export default {
4
+ ...baseConfig,
5
+ rootDir: __dirname,
6
+ };
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/lib/index.d.ts CHANGED
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,IAAO,CAAC;AACjC,eAAO,MAAM,aAAa,IAAO,CAAC;AAClC,eAAO,MAAM,KAAK,IAAO,CAAC;AAC1B,eAAO,MAAM,MAAM,IAAO,CAAC;AAC3B,eAAO,MAAM,QAAQ,KAAO,CAAC;AAE7B,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAuED;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAS,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,cAAc,OAAQ,aAAa,KAAG,WAIlD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,aACjB,MAAM,KACf,WAAW,GAAG,IAAI,GAAG,SAMvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,iBACjB,MAAM,KACnB,WAAW,GAAG,IAAI,GAAG,SAMvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,gBACjB,MAAM,KAClB,WAAW,GAAG,IAAI,GAAG,SAOvB,CAAC;AAuBF;;GAEG;AACH,eAAO,MAAM,wBAAwB,QAAO,MAAM,EAAuB,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,sBAAsB,SAC3B,MAAM,KACX,cAAc,GAAG,SAAmD,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,aAAa,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,YAAY,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,aAAa,CAAC,EAAE;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,EAAE,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,IAAO,CAAC;AACjC,eAAO,MAAM,aAAa,IAAO,CAAC;AAClC,eAAO,MAAM,KAAK,IAAO,CAAC;AAC1B,eAAO,MAAM,MAAM,IAAO,CAAC;AAC3B,eAAO,MAAM,QAAQ,KAAO,CAAC;AAE7B,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAuED;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAS,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,cAAc,OAAQ,aAAa,KAAG,WAIlD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,aACjB,MAAM,KACf,WAAW,GAAG,IAAI,GAAG,SAMvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,iBACjB,MAAM,KACnB,WAAW,GAAG,IAAI,GAAG,SAMvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,gBACjB,MAAM,KAClB,WAAW,GAAG,IAAI,GAAG,SAOvB,CAAC;AAsBF;;GAEG;AACH,eAAO,MAAM,wBAAwB,QAAO,MAAM,EAAuB,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,sBAAsB,SAC3B,MAAM,KACX,cAAc,GAAG,SAAmD,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,aAAa,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,YAAY,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,aAAa,CAAC,EAAE;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,EAAE,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB"}
package/lib/index.js CHANGED
@@ -72,7 +72,7 @@ var devices = (_a = {},
72
72
  },
73
73
  _a[DeviceModelId.nanoSP] = {
74
74
  id: DeviceModelId.nanoSP,
75
- productName: "Ledger Nano SP",
75
+ productName: "Ledger Nano S Plus",
76
76
  productIdMM: 0x50,
77
77
  legacyUsbProductId: 0x0005,
78
78
  usbOnly: true,
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
package/lib/scrambling.js CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/lib-es/index.d.ts CHANGED
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,IAAO,CAAC;AACjC,eAAO,MAAM,aAAa,IAAO,CAAC;AAClC,eAAO,MAAM,KAAK,IAAO,CAAC;AAC1B,eAAO,MAAM,MAAM,IAAO,CAAC;AAC3B,eAAO,MAAM,QAAQ,KAAO,CAAC;AAE7B,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAuED;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAS,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,cAAc,OAAQ,aAAa,KAAG,WAIlD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,aACjB,MAAM,KACf,WAAW,GAAG,IAAI,GAAG,SAMvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,iBACjB,MAAM,KACnB,WAAW,GAAG,IAAI,GAAG,SAMvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,gBACjB,MAAM,KAClB,WAAW,GAAG,IAAI,GAAG,SAOvB,CAAC;AAuBF;;GAEG;AACH,eAAO,MAAM,wBAAwB,QAAO,MAAM,EAAuB,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,sBAAsB,SAC3B,MAAM,KACX,cAAc,GAAG,SAAmD,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,aAAa,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,YAAY,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,aAAa,CAAC,EAAE;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,EAAE,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,IAAO,CAAC;AACjC,eAAO,MAAM,aAAa,IAAO,CAAC;AAClC,eAAO,MAAM,KAAK,IAAO,CAAC;AAC1B,eAAO,MAAM,MAAM,IAAO,CAAC;AAC3B,eAAO,MAAM,QAAQ,KAAO,CAAC;AAE7B,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAuED;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAS,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,cAAc,OAAQ,aAAa,KAAG,WAIlD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,aACjB,MAAM,KACf,WAAW,GAAG,IAAI,GAAG,SAMvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,iBACjB,MAAM,KACnB,WAAW,GAAG,IAAI,GAAG,SAMvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,gBACjB,MAAM,KAClB,WAAW,GAAG,IAAI,GAAG,SAOvB,CAAC;AAsBF;;GAEG;AACH,eAAO,MAAM,wBAAwB,QAAO,MAAM,EAAuB,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,sBAAsB,SAC3B,MAAM,KACX,cAAc,GAAG,SAAmD,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,aAAa,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,YAAY,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,aAAa,CAAC,EAAE;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,EAAE,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB"}
package/lib-es/index.js CHANGED
@@ -66,7 +66,7 @@ var devices = (_a = {},
66
66
  },
67
67
  _a[DeviceModelId.nanoSP] = {
68
68
  id: DeviceModelId.nanoSP,
69
- productName: "Ledger Nano SP",
69
+ productName: "Ledger Nano S Plus",
70
70
  productIdMM: 0x50,
71
71
  legacyUsbProductId: 0x0005,
72
72
  usbOnly: true,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/devices",
3
- "version": "6.20.2",
3
+ "version": "6.24.2-monorepo.1",
4
4
  "description": "Ledger devices",
5
5
  "keywords": [
6
6
  "Ledger"
@@ -20,20 +20,20 @@
20
20
  "module": "lib-es/index.js",
21
21
  "types": "lib/index.d.ts",
22
22
  "license": "Apache-2.0",
23
- "devDependencies": {
24
- "@types/semver": "^7.3.9"
25
- },
26
23
  "dependencies": {
27
- "@ledgerhq/errors": "^6.10.0",
28
- "@ledgerhq/logs": "^6.10.0",
24
+ "@ledgerhq/errors": "^6.10.1-monorepo.1",
25
+ "@ledgerhq/logs": "^6.10.1-monorepo.1",
29
26
  "rxjs": "6",
30
27
  "semver": "^7.3.5"
31
28
  },
29
+ "gitHead": "dd0dea64b58e5a9125c8a422dcffd29e5ef6abec",
32
30
  "scripts": {
33
31
  "clean": "bash ../../script/clean.sh",
34
32
  "build": "bash ../../script/build.sh",
35
33
  "watch": "bash ../../script/watch.sh",
36
- "doc": "bash ../../script/doc.sh"
34
+ "doc": "bash ../../script/doc.sh",
35
+ "lint": "eslint ./src --no-error-on-unmatched-pattern --ext .ts,.tsx",
36
+ "test": "jest"
37
37
  },
38
- "gitHead": "dd0dea64b58e5a9125c8a422dcffd29e5ef6abec"
39
- }
38
+ "readme": "<img src=\"https://user-images.githubusercontent.com/211411/34776833-6f1ef4da-f618-11e7-8b13-f0697901d6a8.png\" height=\"100\" />\n\n## @ledgerhq/devices\n\nLogic for all Ledger devices.\n\n## API\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n* [createHIDframing](#createhidframing)\n * [Parameters](#parameters)\n* [IIGenericHID](#iigenerichid)\n* [ledgerUSBVendorId](#ledgerusbvendorid)\n* [getDeviceModel](#getdevicemodel)\n * [Parameters](#parameters-1)\n* [identifyTargetId](#identifytargetid)\n * [Parameters](#parameters-2)\n* [identifyUSBProductId](#identifyusbproductid)\n * [Parameters](#parameters-3)\n* [getBluetoothServiceUuids](#getbluetoothserviceuuids)\n* [getInfosForServiceUuid](#getinfosforserviceuuid)\n * [Parameters](#parameters-4)\n* [DeviceModel](#devicemodel)\n* [BluetoothInfos](#bluetoothinfos)\n\n### createHIDframing\n\n#### Parameters\n\n* `channel` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \n* `packetSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \n\n### IIGenericHID\n\nThe USB product IDs will be defined as MMII, encoding a model (MM) and an interface bitfield (II)\n\n* Model\n\nLedger Nano S : 0x10\nLedger Blue : 0x00\nLedger Nano X : 0x40\n\n* Interface support bitfield\n\nGeneric HID : 0x01\nKeyboard HID : 0x02\nU2F : 0x04\nCCID : 0x08\nWebUSB : 0x10\n\nType: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\n\n### ledgerUSBVendorId\n\nType: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\n\n### getDeviceModel\n\n#### Parameters\n\n* `id` **DeviceModelId** \n\nReturns **[DeviceModel](#devicemodel)** \n\n### identifyTargetId\n\nGiven a `targetId`, return the deviceModel associated to it,\nbased on the first two bytes.\n\n#### Parameters\n\n* `targetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \n\nReturns **([DeviceModel](#devicemodel) | null | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))** \n\n### identifyUSBProductId\n\n#### Parameters\n\n* `usbProductId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \n\nReturns **([DeviceModel](#devicemodel) | null | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))** \n\n### getBluetoothServiceUuids\n\nReturns **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** \n\n### getInfosForServiceUuid\n\n#### Parameters\n\n* `uuid` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \n\nReturns **([BluetoothInfos](#bluetoothinfos) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))** \n\n### DeviceModel\n\n### BluetoothInfos\n"
39
+ }
package/src/index.ts CHANGED
@@ -155,7 +155,6 @@ const serviceUuidToInfos: Record<string, BluetoothInfos> = {};
155
155
  for (const id in devices) {
156
156
  const deviceModel = devices[id];
157
157
  const { bluetoothSpec } = deviceModel;
158
-
159
158
  if (bluetoothSpec) {
160
159
  for (let i = 0; i < bluetoothSpec.length; i++) {
161
160
  const spec = bluetoothSpec[i];
@@ -1,4 +1,3 @@
1
- // @flow
2
1
  import { identifyTargetId } from "../src/";
3
2
 
4
3
  test("check that known targetIds match known devices", () => {
@@ -1,82 +0,0 @@
1
- // @flow
2
-
3
- import { TransportError, DisconnectedDevice } from "@ledgerhq/errors";
4
- import { Observable } from "rxjs";
5
- import { log } from "@ledgerhq/logs";
6
-
7
- const TagId = 0x05;
8
-
9
- // operator that transform the input raw stream into one apdu response and finishes
10
- export const receiveAPDU = (
11
- rawStream: Observable<Buffer>
12
- ): Observable<Buffer> =>
13
- Observable.create((o) => {
14
- let notifiedIndex = 0;
15
- let notifiedDataLength = 0;
16
- let notifiedData = Buffer.alloc(0);
17
-
18
- const sub = rawStream.subscribe({
19
- complete: () => {
20
- o.error(new DisconnectedDevice());
21
- sub.unsubscribe();
22
- },
23
- error: (e) => {
24
- log("ble-error", "in receiveAPDU " + String(e));
25
- o.error(e);
26
- sub.unsubscribe();
27
- },
28
- next: (value) => {
29
- const tag = value.readUInt8(0);
30
- const index = value.readUInt16BE(1);
31
- let data = value.slice(3);
32
-
33
- if (tag !== TagId) {
34
- o.error(
35
- new TransportError("Invalid tag " + tag.toString(16), "InvalidTag")
36
- );
37
- return;
38
- }
39
-
40
- if (notifiedIndex !== index) {
41
- o.error(
42
- new TransportError(
43
- "BLE: Invalid sequence number. discontinued chunk. Received " +
44
- index +
45
- " but expected " +
46
- notifiedIndex,
47
- "InvalidSequence"
48
- )
49
- );
50
- return;
51
- }
52
-
53
- if (index === 0) {
54
- notifiedDataLength = data.readUInt16BE(0);
55
- data = data.slice(2);
56
- }
57
- notifiedIndex++;
58
- notifiedData = Buffer.concat([notifiedData, data]);
59
- if (notifiedData.length > notifiedDataLength) {
60
- o.error(
61
- new TransportError(
62
- "BLE: received too much data. discontinued chunk. Received " +
63
- notifiedData.length +
64
- " but expected " +
65
- notifiedDataLength,
66
- "BLETooMuchData"
67
- )
68
- );
69
- return;
70
- }
71
- if (notifiedData.length === notifiedDataLength) {
72
- o.next(notifiedData);
73
- o.complete();
74
- sub.unsubscribe();
75
- }
76
- },
77
- });
78
-
79
- return () => {
80
- sub.unsubscribe();
81
- };
82
- });
@@ -1,71 +0,0 @@
1
- // @flow
2
-
3
- import { Observable } from "rxjs";
4
- import { log } from "@ledgerhq/logs";
5
-
6
- const TagId = 0x05;
7
-
8
- function chunkBuffer(
9
- buffer: Buffer,
10
- sizeForIndex: (number) => number
11
- ): Array<Buffer> {
12
- const chunks = [];
13
- for (
14
- let i = 0, size = sizeForIndex(0);
15
- i < buffer.length;
16
- i += size, size = sizeForIndex(i)
17
- ) {
18
- chunks.push(buffer.slice(i, i + size));
19
- }
20
- return chunks;
21
- }
22
-
23
- export const sendAPDU = (
24
- write: (Buffer) => Promise<void>,
25
- apdu: Buffer,
26
- mtuSize: number
27
- ): Observable<void> => {
28
- const chunks = chunkBuffer(apdu, (i) => mtuSize - (i === 0 ? 5 : 3)).map(
29
- (buffer, i) => {
30
- const head = Buffer.alloc(i === 0 ? 5 : 3);
31
- head.writeUInt8(TagId, 0);
32
- head.writeUInt16BE(i, 1);
33
- if (i === 0) {
34
- head.writeUInt16BE(apdu.length, 3);
35
- }
36
- return Buffer.concat([head, buffer]);
37
- }
38
- );
39
-
40
- return Observable.create((o) => {
41
- let terminated = false;
42
-
43
- async function main() {
44
- for (const chunk of chunks) {
45
- if (terminated) return;
46
- await write(chunk);
47
- }
48
- }
49
-
50
- main().then(
51
- () => {
52
- terminated = true;
53
- o.complete();
54
- },
55
- (e) => {
56
- terminated = true;
57
- log("ble-error", "sendAPDU failure " + String(e));
58
- o.error(e);
59
- }
60
- );
61
-
62
- const unsubscribe = () => {
63
- if (!terminated) {
64
- log("ble-verbose", "sendAPDU interruption");
65
- terminated = true;
66
- }
67
- };
68
-
69
- return unsubscribe;
70
- });
71
- };
@@ -1,89 +0,0 @@
1
- // @flow
2
-
3
- import { TransportError } from "@ledgerhq/errors";
4
-
5
- export type ResponseAcc = ?{
6
- data: Buffer,
7
- dataLength: number,
8
- sequence: number,
9
- };
10
-
11
- const Tag = 0x05;
12
-
13
- function asUInt16BE(value) {
14
- const b = Buffer.alloc(2);
15
- b.writeUInt16BE(value, 0);
16
- return b;
17
- }
18
-
19
- const initialAcc = {
20
- data: Buffer.alloc(0),
21
- dataLength: 0,
22
- sequence: 0,
23
- };
24
-
25
- /**
26
- *
27
- */
28
- const createHIDframing = (channel: number, packetSize: number) => {
29
- return {
30
- makeBlocks(apdu: Buffer): Buffer[] {
31
- let data = Buffer.concat([asUInt16BE(apdu.length), apdu]);
32
- const blockSize = packetSize - 5;
33
- const nbBlocks = Math.ceil(data.length / blockSize);
34
- data = Buffer.concat([
35
- data, // fill data with padding
36
- Buffer.alloc(nbBlocks * blockSize - data.length + 1).fill(0),
37
- ]);
38
-
39
- const blocks = [];
40
- for (let i = 0; i < nbBlocks; i++) {
41
- const head = Buffer.alloc(5);
42
- head.writeUInt16BE(channel, 0);
43
- head.writeUInt8(Tag, 2);
44
- head.writeUInt16BE(i, 3);
45
- const chunk = data.slice(i * blockSize, (i + 1) * blockSize);
46
- blocks.push(Buffer.concat([head, chunk]));
47
- }
48
- return blocks;
49
- },
50
-
51
- reduceResponse(acc: ResponseAcc, chunk: Buffer): ResponseAcc {
52
- let { data, dataLength, sequence } = acc || initialAcc;
53
-
54
- if (chunk.readUInt16BE(0) !== channel) {
55
- throw new TransportError("Invalid channel", "InvalidChannel");
56
- }
57
- if (chunk.readUInt8(2) !== Tag) {
58
- throw new TransportError("Invalid tag", "InvalidTag");
59
- }
60
- if (chunk.readUInt16BE(3) !== sequence) {
61
- throw new TransportError("Invalid sequence", "InvalidSequence");
62
- }
63
-
64
- if (!acc) {
65
- dataLength = chunk.readUInt16BE(5);
66
- }
67
- sequence++;
68
- const chunkData = chunk.slice(acc ? 5 : 7);
69
- data = Buffer.concat([data, chunkData]);
70
- if (data.length > dataLength) {
71
- data = data.slice(0, dataLength);
72
- }
73
-
74
- return {
75
- data,
76
- dataLength,
77
- sequence,
78
- };
79
- },
80
-
81
- getReducedResult(acc: ResponseAcc): ?Buffer {
82
- if (acc && acc.dataLength === acc.data.length) {
83
- return acc.data;
84
- }
85
- },
86
- };
87
- };
88
-
89
- export default createHIDframing;
package/lib/index.js.flow DELETED
@@ -1,178 +0,0 @@
1
- // @flow
2
-
3
- import semver from "semver";
4
-
5
- /**
6
- * The USB product IDs will be defined as MMII, encoding a model (MM) and an interface bitfield (II)
7
- *
8
- ** Model
9
- * Ledger Nano S : 0x10
10
- * Ledger Blue : 0x00
11
- * Ledger Nano X : 0x40
12
- *
13
- ** Interface support bitfield
14
- * Generic HID : 0x01
15
- * Keyboard HID : 0x02
16
- * U2F : 0x04
17
- * CCID : 0x08
18
- * WebUSB : 0x10
19
- */
20
-
21
- export const IIGenericHID = 0x01;
22
- export const IIKeyboardHID = 0x02;
23
- export const IIU2F = 0x04;
24
- export const IICCID = 0x08;
25
- export const IIWebUSB = 0x10;
26
-
27
- const devices = {
28
- blue: {
29
- id: "blue",
30
- productName: "Ledger Blue",
31
- productIdMM: 0x00,
32
- legacyUsbProductId: 0x0000,
33
- usbOnly: true,
34
- memorySize: 480 * 1024,
35
- blockSize: 4 * 1024,
36
- getBlockSize: (_firwareVersion: string): number => 4 * 1024,
37
- },
38
- nanoS: {
39
- id: "nanoS",
40
- productName: "Ledger Nano S",
41
- productIdMM: 0x10,
42
- legacyUsbProductId: 0x0001,
43
- usbOnly: true,
44
- memorySize: 320 * 1024,
45
- blockSize: 4 * 1024,
46
- getBlockSize: (firmwareVersion: string): number =>
47
- semver.lt(semver.coerce(firmwareVersion), "2.0.0") ? 4 * 1024 : 2 * 1024,
48
- },
49
- nanoX: {
50
- id: "nanoX",
51
- productName: "Ledger Nano X",
52
- productIdMM: 0x40,
53
- legacyUsbProductId: 0x0004,
54
- usbOnly: false,
55
- memorySize: 2 * 1024 * 1024,
56
- blockSize: 4 * 1024,
57
- getBlockSize: (_firwareVersion: string): number => 4 * 1024,
58
- bluetoothSpec: [
59
- {
60
- // this is the legacy one (prototype version). we will eventually drop it.
61
- serviceUuid: "d973f2e0-b19e-11e2-9e96-0800200c9a66",
62
- notifyUuid: "d973f2e1-b19e-11e2-9e96-0800200c9a66",
63
- writeUuid: "d973f2e2-b19e-11e2-9e96-0800200c9a66",
64
- },
65
- {
66
- serviceUuid: "13d63400-2c97-0004-0000-4c6564676572",
67
- notifyUuid: "13d63400-2c97-0004-0001-4c6564676572",
68
- writeUuid: "13d63400-2c97-0004-0002-4c6564676572",
69
- },
70
- ],
71
- },
72
- };
73
-
74
- const productMap = {
75
- Blue: "blue",
76
- "Nano S": "nanoS",
77
- "Nano X": "nanoX",
78
- };
79
-
80
- // $FlowFixMe
81
- const devicesList: DeviceModel[] = Object.values(devices);
82
-
83
- /**
84
- *
85
- */
86
- export const ledgerUSBVendorId = 0x2c97;
87
-
88
- /**
89
- *
90
- */
91
- export const getDeviceModel = (id: DeviceModelId): DeviceModel => {
92
- const info = devices[id];
93
- if (!info) throw new Error("device '" + id + "' does not exist");
94
- return info;
95
- };
96
-
97
- /**
98
- *
99
- */
100
- export const identifyUSBProductId = (usbProductId: number): ?DeviceModel => {
101
- const legacy = devicesList.find((d) => d.legacyUsbProductId === usbProductId);
102
- if (legacy) return legacy;
103
-
104
- const mm = usbProductId >> 8;
105
- const deviceModel = devicesList.find((d) => d.productIdMM === mm);
106
- return deviceModel;
107
- };
108
-
109
- export const identifyProductName = (productName: string): ?DeviceModel => {
110
- const productId = productMap[productName];
111
- const deviceModel = devicesList.find((d) => d.id === productId);
112
-
113
- return deviceModel;
114
- };
115
-
116
- const bluetoothServices: string[] = [];
117
- const serviceUuidToInfos: {
118
- [_: string]: BluetoothInfos,
119
- } = {};
120
-
121
- for (let id in devices) {
122
- const deviceModel = devices[id];
123
- const { bluetoothSpec } = deviceModel;
124
- if (bluetoothSpec) {
125
- for (let i = 0; i < bluetoothSpec.length; i++) {
126
- const spec = bluetoothSpec[i];
127
- bluetoothServices.push(spec.serviceUuid);
128
- serviceUuidToInfos[spec.serviceUuid] = serviceUuidToInfos[
129
- spec.serviceUuid.replace(/-/g, "")
130
- ] = { deviceModel, ...spec };
131
- }
132
- }
133
- }
134
-
135
- /**
136
- *
137
- */
138
- export const getBluetoothServiceUuids = () => bluetoothServices;
139
-
140
- /**
141
- *
142
- */
143
- export const getInfosForServiceUuid = (uuid: string): ?BluetoothInfos =>
144
- serviceUuidToInfos[uuid.toLowerCase()];
145
-
146
- /**
147
- *
148
- */
149
- export type DeviceModelId = $Keys<typeof devices>;
150
-
151
- /**
152
- *
153
- */
154
- export type DeviceModel = {
155
- id: DeviceModelId,
156
- productName: string,
157
- productIdMM: number,
158
- legacyUsbProductId: number,
159
- usbOnly: boolean,
160
- memorySize: number,
161
- // blockSize: number, // THIS FIELD IS DEPRECATED, use getBlockSize
162
- getBlockSize: (firmwareVersion: string) => number,
163
- bluetoothSpec?: Array<{
164
- serviceUuid: string,
165
- writeUuid: string,
166
- notifyUuid: string,
167
- }>,
168
- };
169
-
170
- /**
171
- *
172
- */
173
- export type BluetoothInfos = {
174
- deviceModel: DeviceModel,
175
- serviceUuid: string,
176
- writeUuid: string,
177
- notifyUuid: string,
178
- };
@@ -1,10 +0,0 @@
1
- // @flow
2
-
3
- export function wrapApdu(apdu: Buffer, key: Buffer) {
4
- if (apdu.length === 0) return apdu;
5
- const result = Buffer.alloc(apdu.length);
6
- for (let i = 0; i < apdu.length; i++) {
7
- result[i] = apdu[i] ^ key[i % key.length];
8
- }
9
- return result;
10
- }
@@ -1,82 +0,0 @@
1
- // @flow
2
-
3
- import { TransportError, DisconnectedDevice } from "@ledgerhq/errors";
4
- import { Observable } from "rxjs";
5
- import { log } from "@ledgerhq/logs";
6
-
7
- const TagId = 0x05;
8
-
9
- // operator that transform the input raw stream into one apdu response and finishes
10
- export const receiveAPDU = (
11
- rawStream: Observable<Buffer>
12
- ): Observable<Buffer> =>
13
- Observable.create((o) => {
14
- let notifiedIndex = 0;
15
- let notifiedDataLength = 0;
16
- let notifiedData = Buffer.alloc(0);
17
-
18
- const sub = rawStream.subscribe({
19
- complete: () => {
20
- o.error(new DisconnectedDevice());
21
- sub.unsubscribe();
22
- },
23
- error: (e) => {
24
- log("ble-error", "in receiveAPDU " + String(e));
25
- o.error(e);
26
- sub.unsubscribe();
27
- },
28
- next: (value) => {
29
- const tag = value.readUInt8(0);
30
- const index = value.readUInt16BE(1);
31
- let data = value.slice(3);
32
-
33
- if (tag !== TagId) {
34
- o.error(
35
- new TransportError("Invalid tag " + tag.toString(16), "InvalidTag")
36
- );
37
- return;
38
- }
39
-
40
- if (notifiedIndex !== index) {
41
- o.error(
42
- new TransportError(
43
- "BLE: Invalid sequence number. discontinued chunk. Received " +
44
- index +
45
- " but expected " +
46
- notifiedIndex,
47
- "InvalidSequence"
48
- )
49
- );
50
- return;
51
- }
52
-
53
- if (index === 0) {
54
- notifiedDataLength = data.readUInt16BE(0);
55
- data = data.slice(2);
56
- }
57
- notifiedIndex++;
58
- notifiedData = Buffer.concat([notifiedData, data]);
59
- if (notifiedData.length > notifiedDataLength) {
60
- o.error(
61
- new TransportError(
62
- "BLE: received too much data. discontinued chunk. Received " +
63
- notifiedData.length +
64
- " but expected " +
65
- notifiedDataLength,
66
- "BLETooMuchData"
67
- )
68
- );
69
- return;
70
- }
71
- if (notifiedData.length === notifiedDataLength) {
72
- o.next(notifiedData);
73
- o.complete();
74
- sub.unsubscribe();
75
- }
76
- },
77
- });
78
-
79
- return () => {
80
- sub.unsubscribe();
81
- };
82
- });
@@ -1,71 +0,0 @@
1
- // @flow
2
-
3
- import { Observable } from "rxjs";
4
- import { log } from "@ledgerhq/logs";
5
-
6
- const TagId = 0x05;
7
-
8
- function chunkBuffer(
9
- buffer: Buffer,
10
- sizeForIndex: (number) => number
11
- ): Array<Buffer> {
12
- const chunks = [];
13
- for (
14
- let i = 0, size = sizeForIndex(0);
15
- i < buffer.length;
16
- i += size, size = sizeForIndex(i)
17
- ) {
18
- chunks.push(buffer.slice(i, i + size));
19
- }
20
- return chunks;
21
- }
22
-
23
- export const sendAPDU = (
24
- write: (Buffer) => Promise<void>,
25
- apdu: Buffer,
26
- mtuSize: number
27
- ): Observable<void> => {
28
- const chunks = chunkBuffer(apdu, (i) => mtuSize - (i === 0 ? 5 : 3)).map(
29
- (buffer, i) => {
30
- const head = Buffer.alloc(i === 0 ? 5 : 3);
31
- head.writeUInt8(TagId, 0);
32
- head.writeUInt16BE(i, 1);
33
- if (i === 0) {
34
- head.writeUInt16BE(apdu.length, 3);
35
- }
36
- return Buffer.concat([head, buffer]);
37
- }
38
- );
39
-
40
- return Observable.create((o) => {
41
- let terminated = false;
42
-
43
- async function main() {
44
- for (const chunk of chunks) {
45
- if (terminated) return;
46
- await write(chunk);
47
- }
48
- }
49
-
50
- main().then(
51
- () => {
52
- terminated = true;
53
- o.complete();
54
- },
55
- (e) => {
56
- terminated = true;
57
- log("ble-error", "sendAPDU failure " + String(e));
58
- o.error(e);
59
- }
60
- );
61
-
62
- const unsubscribe = () => {
63
- if (!terminated) {
64
- log("ble-verbose", "sendAPDU interruption");
65
- terminated = true;
66
- }
67
- };
68
-
69
- return unsubscribe;
70
- });
71
- };
@@ -1,89 +0,0 @@
1
- // @flow
2
-
3
- import { TransportError } from "@ledgerhq/errors";
4
-
5
- export type ResponseAcc = ?{
6
- data: Buffer,
7
- dataLength: number,
8
- sequence: number,
9
- };
10
-
11
- const Tag = 0x05;
12
-
13
- function asUInt16BE(value) {
14
- const b = Buffer.alloc(2);
15
- b.writeUInt16BE(value, 0);
16
- return b;
17
- }
18
-
19
- const initialAcc = {
20
- data: Buffer.alloc(0),
21
- dataLength: 0,
22
- sequence: 0,
23
- };
24
-
25
- /**
26
- *
27
- */
28
- const createHIDframing = (channel: number, packetSize: number) => {
29
- return {
30
- makeBlocks(apdu: Buffer): Buffer[] {
31
- let data = Buffer.concat([asUInt16BE(apdu.length), apdu]);
32
- const blockSize = packetSize - 5;
33
- const nbBlocks = Math.ceil(data.length / blockSize);
34
- data = Buffer.concat([
35
- data, // fill data with padding
36
- Buffer.alloc(nbBlocks * blockSize - data.length + 1).fill(0),
37
- ]);
38
-
39
- const blocks = [];
40
- for (let i = 0; i < nbBlocks; i++) {
41
- const head = Buffer.alloc(5);
42
- head.writeUInt16BE(channel, 0);
43
- head.writeUInt8(Tag, 2);
44
- head.writeUInt16BE(i, 3);
45
- const chunk = data.slice(i * blockSize, (i + 1) * blockSize);
46
- blocks.push(Buffer.concat([head, chunk]));
47
- }
48
- return blocks;
49
- },
50
-
51
- reduceResponse(acc: ResponseAcc, chunk: Buffer): ResponseAcc {
52
- let { data, dataLength, sequence } = acc || initialAcc;
53
-
54
- if (chunk.readUInt16BE(0) !== channel) {
55
- throw new TransportError("Invalid channel", "InvalidChannel");
56
- }
57
- if (chunk.readUInt8(2) !== Tag) {
58
- throw new TransportError("Invalid tag", "InvalidTag");
59
- }
60
- if (chunk.readUInt16BE(3) !== sequence) {
61
- throw new TransportError("Invalid sequence", "InvalidSequence");
62
- }
63
-
64
- if (!acc) {
65
- dataLength = chunk.readUInt16BE(5);
66
- }
67
- sequence++;
68
- const chunkData = chunk.slice(acc ? 5 : 7);
69
- data = Buffer.concat([data, chunkData]);
70
- if (data.length > dataLength) {
71
- data = data.slice(0, dataLength);
72
- }
73
-
74
- return {
75
- data,
76
- dataLength,
77
- sequence,
78
- };
79
- },
80
-
81
- getReducedResult(acc: ResponseAcc): ?Buffer {
82
- if (acc && acc.dataLength === acc.data.length) {
83
- return acc.data;
84
- }
85
- },
86
- };
87
- };
88
-
89
- export default createHIDframing;
@@ -1,178 +0,0 @@
1
- // @flow
2
-
3
- import semver from "semver";
4
-
5
- /**
6
- * The USB product IDs will be defined as MMII, encoding a model (MM) and an interface bitfield (II)
7
- *
8
- ** Model
9
- * Ledger Nano S : 0x10
10
- * Ledger Blue : 0x00
11
- * Ledger Nano X : 0x40
12
- *
13
- ** Interface support bitfield
14
- * Generic HID : 0x01
15
- * Keyboard HID : 0x02
16
- * U2F : 0x04
17
- * CCID : 0x08
18
- * WebUSB : 0x10
19
- */
20
-
21
- export const IIGenericHID = 0x01;
22
- export const IIKeyboardHID = 0x02;
23
- export const IIU2F = 0x04;
24
- export const IICCID = 0x08;
25
- export const IIWebUSB = 0x10;
26
-
27
- const devices = {
28
- blue: {
29
- id: "blue",
30
- productName: "Ledger Blue",
31
- productIdMM: 0x00,
32
- legacyUsbProductId: 0x0000,
33
- usbOnly: true,
34
- memorySize: 480 * 1024,
35
- blockSize: 4 * 1024,
36
- getBlockSize: (_firwareVersion: string): number => 4 * 1024,
37
- },
38
- nanoS: {
39
- id: "nanoS",
40
- productName: "Ledger Nano S",
41
- productIdMM: 0x10,
42
- legacyUsbProductId: 0x0001,
43
- usbOnly: true,
44
- memorySize: 320 * 1024,
45
- blockSize: 4 * 1024,
46
- getBlockSize: (firmwareVersion: string): number =>
47
- semver.lt(semver.coerce(firmwareVersion), "2.0.0") ? 4 * 1024 : 2 * 1024,
48
- },
49
- nanoX: {
50
- id: "nanoX",
51
- productName: "Ledger Nano X",
52
- productIdMM: 0x40,
53
- legacyUsbProductId: 0x0004,
54
- usbOnly: false,
55
- memorySize: 2 * 1024 * 1024,
56
- blockSize: 4 * 1024,
57
- getBlockSize: (_firwareVersion: string): number => 4 * 1024,
58
- bluetoothSpec: [
59
- {
60
- // this is the legacy one (prototype version). we will eventually drop it.
61
- serviceUuid: "d973f2e0-b19e-11e2-9e96-0800200c9a66",
62
- notifyUuid: "d973f2e1-b19e-11e2-9e96-0800200c9a66",
63
- writeUuid: "d973f2e2-b19e-11e2-9e96-0800200c9a66",
64
- },
65
- {
66
- serviceUuid: "13d63400-2c97-0004-0000-4c6564676572",
67
- notifyUuid: "13d63400-2c97-0004-0001-4c6564676572",
68
- writeUuid: "13d63400-2c97-0004-0002-4c6564676572",
69
- },
70
- ],
71
- },
72
- };
73
-
74
- const productMap = {
75
- Blue: "blue",
76
- "Nano S": "nanoS",
77
- "Nano X": "nanoX",
78
- };
79
-
80
- // $FlowFixMe
81
- const devicesList: DeviceModel[] = Object.values(devices);
82
-
83
- /**
84
- *
85
- */
86
- export const ledgerUSBVendorId = 0x2c97;
87
-
88
- /**
89
- *
90
- */
91
- export const getDeviceModel = (id: DeviceModelId): DeviceModel => {
92
- const info = devices[id];
93
- if (!info) throw new Error("device '" + id + "' does not exist");
94
- return info;
95
- };
96
-
97
- /**
98
- *
99
- */
100
- export const identifyUSBProductId = (usbProductId: number): ?DeviceModel => {
101
- const legacy = devicesList.find((d) => d.legacyUsbProductId === usbProductId);
102
- if (legacy) return legacy;
103
-
104
- const mm = usbProductId >> 8;
105
- const deviceModel = devicesList.find((d) => d.productIdMM === mm);
106
- return deviceModel;
107
- };
108
-
109
- export const identifyProductName = (productName: string): ?DeviceModel => {
110
- const productId = productMap[productName];
111
- const deviceModel = devicesList.find((d) => d.id === productId);
112
-
113
- return deviceModel;
114
- };
115
-
116
- const bluetoothServices: string[] = [];
117
- const serviceUuidToInfos: {
118
- [_: string]: BluetoothInfos,
119
- } = {};
120
-
121
- for (let id in devices) {
122
- const deviceModel = devices[id];
123
- const { bluetoothSpec } = deviceModel;
124
- if (bluetoothSpec) {
125
- for (let i = 0; i < bluetoothSpec.length; i++) {
126
- const spec = bluetoothSpec[i];
127
- bluetoothServices.push(spec.serviceUuid);
128
- serviceUuidToInfos[spec.serviceUuid] = serviceUuidToInfos[
129
- spec.serviceUuid.replace(/-/g, "")
130
- ] = { deviceModel, ...spec };
131
- }
132
- }
133
- }
134
-
135
- /**
136
- *
137
- */
138
- export const getBluetoothServiceUuids = () => bluetoothServices;
139
-
140
- /**
141
- *
142
- */
143
- export const getInfosForServiceUuid = (uuid: string): ?BluetoothInfos =>
144
- serviceUuidToInfos[uuid.toLowerCase()];
145
-
146
- /**
147
- *
148
- */
149
- export type DeviceModelId = $Keys<typeof devices>;
150
-
151
- /**
152
- *
153
- */
154
- export type DeviceModel = {
155
- id: DeviceModelId,
156
- productName: string,
157
- productIdMM: number,
158
- legacyUsbProductId: number,
159
- usbOnly: boolean,
160
- memorySize: number,
161
- // blockSize: number, // THIS FIELD IS DEPRECATED, use getBlockSize
162
- getBlockSize: (firmwareVersion: string) => number,
163
- bluetoothSpec?: Array<{
164
- serviceUuid: string,
165
- writeUuid: string,
166
- notifyUuid: string,
167
- }>,
168
- };
169
-
170
- /**
171
- *
172
- */
173
- export type BluetoothInfos = {
174
- deviceModel: DeviceModel,
175
- serviceUuid: string,
176
- writeUuid: string,
177
- notifyUuid: string,
178
- };
@@ -1,10 +0,0 @@
1
- // @flow
2
-
3
- export function wrapApdu(apdu: Buffer, key: Buffer) {
4
- if (apdu.length === 0) return apdu;
5
- const result = Buffer.alloc(apdu.length);
6
- for (let i = 0; i < apdu.length; i++) {
7
- result[i] = apdu[i] ^ key[i % key.length];
8
- }
9
- return result;
10
- }