@ledgerhq/hw-ledger-key-ring-protocol 0.2.1-fix-build-number-pre.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.
Files changed (224) hide show
  1. package/.eslintrc.js +33 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/CHANGELOG.md +126 -0
  4. package/LICENSE.txt +21 -0
  5. package/README.md +3 -0
  6. package/jest.config.js +13 -0
  7. package/lib/ApduDevice.d.ts +99 -0
  8. package/lib/ApduDevice.d.ts.map +1 -0
  9. package/lib/ApduDevice.js +528 -0
  10. package/lib/ApduDevice.js.map +1 -0
  11. package/lib/BigEndian.d.ts +7 -0
  12. package/lib/BigEndian.d.ts.map +1 -0
  13. package/lib/BigEndian.js +26 -0
  14. package/lib/BigEndian.js.map +1 -0
  15. package/lib/CommandBlock.d.ts +114 -0
  16. package/lib/CommandBlock.d.ts.map +1 -0
  17. package/lib/CommandBlock.js +156 -0
  18. package/lib/CommandBlock.js.map +1 -0
  19. package/lib/CommandStream.d.ts +38 -0
  20. package/lib/CommandStream.d.ts.map +1 -0
  21. package/lib/CommandStream.js +195 -0
  22. package/lib/CommandStream.js.map +1 -0
  23. package/lib/CommandStreamDecoder.d.ts +15 -0
  24. package/lib/CommandStreamDecoder.d.ts.map +1 -0
  25. package/lib/CommandStreamDecoder.js +101 -0
  26. package/lib/CommandStreamDecoder.js.map +1 -0
  27. package/lib/CommandStreamEncoder.d.ts +16 -0
  28. package/lib/CommandStreamEncoder.d.ts.map +1 -0
  29. package/lib/CommandStreamEncoder.js +131 -0
  30. package/lib/CommandStreamEncoder.js.map +1 -0
  31. package/lib/CommandStreamJsonifier.d.ts +6 -0
  32. package/lib/CommandStreamJsonifier.d.ts.map +1 -0
  33. package/lib/CommandStreamJsonifier.js +75 -0
  34. package/lib/CommandStreamJsonifier.js.map +1 -0
  35. package/lib/CommandStreamResolver.d.ts +53 -0
  36. package/lib/CommandStreamResolver.d.ts.map +1 -0
  37. package/lib/CommandStreamResolver.js +221 -0
  38. package/lib/CommandStreamResolver.js.map +1 -0
  39. package/lib/Crypto.d.ts +38 -0
  40. package/lib/Crypto.d.ts.map +1 -0
  41. package/lib/Crypto.js +47 -0
  42. package/lib/Crypto.js.map +1 -0
  43. package/lib/Device.d.ts +43 -0
  44. package/lib/Device.d.ts.map +1 -0
  45. package/lib/Device.js +195 -0
  46. package/lib/Device.js.map +1 -0
  47. package/lib/IndexedTree.d.ts +13 -0
  48. package/lib/IndexedTree.d.ts.map +1 -0
  49. package/lib/IndexedTree.js +75 -0
  50. package/lib/IndexedTree.js.map +1 -0
  51. package/lib/NobleCrypto.d.ts +39 -0
  52. package/lib/NobleCrypto.d.ts.map +1 -0
  53. package/lib/NobleCrypto.js +240 -0
  54. package/lib/NobleCrypto.js.map +1 -0
  55. package/lib/PublicKey.d.ts +5 -0
  56. package/lib/PublicKey.d.ts.map +1 -0
  57. package/lib/PublicKey.js +10 -0
  58. package/lib/PublicKey.js.map +1 -0
  59. package/lib/SeedId.d.ts +80 -0
  60. package/lib/SeedId.d.ts.map +1 -0
  61. package/lib/SeedId.js +244 -0
  62. package/lib/SeedId.js.map +1 -0
  63. package/lib/StreamTree.d.ts +50 -0
  64. package/lib/StreamTree.d.ts.map +1 -0
  65. package/lib/StreamTree.js +169 -0
  66. package/lib/StreamTree.js.map +1 -0
  67. package/lib/StreamTreeCipher.d.ts +46 -0
  68. package/lib/StreamTreeCipher.d.ts.map +1 -0
  69. package/lib/StreamTreeCipher.js +175 -0
  70. package/lib/StreamTreeCipher.js.map +1 -0
  71. package/lib/__tests__/codec.d.ts +2 -0
  72. package/lib/__tests__/codec.d.ts.map +1 -0
  73. package/lib/__tests__/codec.js +108 -0
  74. package/lib/__tests__/codec.js.map +1 -0
  75. package/lib/__tests__/crypto.d.ts +2 -0
  76. package/lib/__tests__/crypto.d.ts.map +1 -0
  77. package/lib/__tests__/crypto.js +46 -0
  78. package/lib/__tests__/crypto.js.map +1 -0
  79. package/lib/__tests__/indexed_tree.d.ts +2 -0
  80. package/lib/__tests__/indexed_tree.d.ts.map +1 -0
  81. package/lib/__tests__/indexed_tree.js +45 -0
  82. package/lib/__tests__/indexed_tree.js.map +1 -0
  83. package/lib/__tests__/key_exchange.d.ts +2 -0
  84. package/lib/__tests__/key_exchange.d.ts.map +1 -0
  85. package/lib/__tests__/key_exchange.js +129 -0
  86. package/lib/__tests__/key_exchange.js.map +1 -0
  87. package/lib/__tests__/seedId.d.ts +2 -0
  88. package/lib/__tests__/seedId.d.ts.map +1 -0
  89. package/lib/__tests__/seedId.js +92 -0
  90. package/lib/__tests__/seedId.js.map +1 -0
  91. package/lib/__tests__/shared_object.d.ts +2 -0
  92. package/lib/__tests__/shared_object.d.ts.map +1 -0
  93. package/lib/__tests__/shared_object.js +78 -0
  94. package/lib/__tests__/shared_object.js.map +1 -0
  95. package/lib/index.d.ts +35 -0
  96. package/lib/index.d.ts.map +1 -0
  97. package/lib/index.js +81 -0
  98. package/lib/index.js.map +1 -0
  99. package/lib/tlv.d.ts +99 -0
  100. package/lib/tlv.d.ts.map +1 -0
  101. package/lib/tlv.js +150 -0
  102. package/lib/tlv.js.map +1 -0
  103. package/lib-es/ApduDevice.d.ts +99 -0
  104. package/lib-es/ApduDevice.d.ts.map +1 -0
  105. package/lib-es/ApduDevice.js +522 -0
  106. package/lib-es/ApduDevice.js.map +1 -0
  107. package/lib-es/BigEndian.d.ts +7 -0
  108. package/lib-es/BigEndian.d.ts.map +1 -0
  109. package/lib-es/BigEndian.js +23 -0
  110. package/lib-es/BigEndian.js.map +1 -0
  111. package/lib-es/CommandBlock.d.ts +114 -0
  112. package/lib-es/CommandBlock.d.ts.map +1 -0
  113. package/lib-es/CommandBlock.js +143 -0
  114. package/lib-es/CommandBlock.js.map +1 -0
  115. package/lib-es/CommandStream.d.ts +38 -0
  116. package/lib-es/CommandStream.d.ts.map +1 -0
  117. package/lib-es/CommandStream.js +187 -0
  118. package/lib-es/CommandStream.js.map +1 -0
  119. package/lib-es/CommandStreamDecoder.d.ts +15 -0
  120. package/lib-es/CommandStreamDecoder.d.ts.map +1 -0
  121. package/lib-es/CommandStreamDecoder.js +97 -0
  122. package/lib-es/CommandStreamDecoder.js.map +1 -0
  123. package/lib-es/CommandStreamEncoder.d.ts +16 -0
  124. package/lib-es/CommandStreamEncoder.d.ts.map +1 -0
  125. package/lib-es/CommandStreamEncoder.js +127 -0
  126. package/lib-es/CommandStreamEncoder.js.map +1 -0
  127. package/lib-es/CommandStreamJsonifier.d.ts +6 -0
  128. package/lib-es/CommandStreamJsonifier.d.ts.map +1 -0
  129. package/lib-es/CommandStreamJsonifier.js +72 -0
  130. package/lib-es/CommandStreamJsonifier.js.map +1 -0
  131. package/lib-es/CommandStreamResolver.d.ts +53 -0
  132. package/lib-es/CommandStreamResolver.d.ts.map +1 -0
  133. package/lib-es/CommandStreamResolver.js +216 -0
  134. package/lib-es/CommandStreamResolver.js.map +1 -0
  135. package/lib-es/Crypto.d.ts +38 -0
  136. package/lib-es/Crypto.d.ts.map +1 -0
  137. package/lib-es/Crypto.js +43 -0
  138. package/lib-es/Crypto.js.map +1 -0
  139. package/lib-es/Device.d.ts +43 -0
  140. package/lib-es/Device.d.ts.map +1 -0
  141. package/lib-es/Device.js +187 -0
  142. package/lib-es/Device.js.map +1 -0
  143. package/lib-es/IndexedTree.d.ts +13 -0
  144. package/lib-es/IndexedTree.d.ts.map +1 -0
  145. package/lib-es/IndexedTree.js +71 -0
  146. package/lib-es/IndexedTree.js.map +1 -0
  147. package/lib-es/NobleCrypto.d.ts +39 -0
  148. package/lib-es/NobleCrypto.d.ts.map +1 -0
  149. package/lib-es/NobleCrypto.js +209 -0
  150. package/lib-es/NobleCrypto.js.map +1 -0
  151. package/lib-es/PublicKey.d.ts +5 -0
  152. package/lib-es/PublicKey.d.ts.map +1 -0
  153. package/lib-es/PublicKey.js +6 -0
  154. package/lib-es/PublicKey.js.map +1 -0
  155. package/lib-es/SeedId.d.ts +80 -0
  156. package/lib-es/SeedId.d.ts.map +1 -0
  157. package/lib-es/SeedId.js +235 -0
  158. package/lib-es/SeedId.js.map +1 -0
  159. package/lib-es/StreamTree.d.ts +50 -0
  160. package/lib-es/StreamTree.d.ts.map +1 -0
  161. package/lib-es/StreamTree.js +165 -0
  162. package/lib-es/StreamTree.js.map +1 -0
  163. package/lib-es/StreamTreeCipher.d.ts +46 -0
  164. package/lib-es/StreamTreeCipher.d.ts.map +1 -0
  165. package/lib-es/StreamTreeCipher.js +171 -0
  166. package/lib-es/StreamTreeCipher.js.map +1 -0
  167. package/lib-es/__tests__/codec.d.ts +2 -0
  168. package/lib-es/__tests__/codec.d.ts.map +1 -0
  169. package/lib-es/__tests__/codec.js +106 -0
  170. package/lib-es/__tests__/codec.js.map +1 -0
  171. package/lib-es/__tests__/crypto.d.ts +2 -0
  172. package/lib-es/__tests__/crypto.d.ts.map +1 -0
  173. package/lib-es/__tests__/crypto.js +44 -0
  174. package/lib-es/__tests__/crypto.js.map +1 -0
  175. package/lib-es/__tests__/indexed_tree.d.ts +2 -0
  176. package/lib-es/__tests__/indexed_tree.d.ts.map +1 -0
  177. package/lib-es/__tests__/indexed_tree.js +43 -0
  178. package/lib-es/__tests__/indexed_tree.js.map +1 -0
  179. package/lib-es/__tests__/key_exchange.d.ts +2 -0
  180. package/lib-es/__tests__/key_exchange.d.ts.map +1 -0
  181. package/lib-es/__tests__/key_exchange.js +124 -0
  182. package/lib-es/__tests__/key_exchange.js.map +1 -0
  183. package/lib-es/__tests__/seedId.d.ts +2 -0
  184. package/lib-es/__tests__/seedId.d.ts.map +1 -0
  185. package/lib-es/__tests__/seedId.js +90 -0
  186. package/lib-es/__tests__/seedId.js.map +1 -0
  187. package/lib-es/__tests__/shared_object.d.ts +2 -0
  188. package/lib-es/__tests__/shared_object.d.ts.map +1 -0
  189. package/lib-es/__tests__/shared_object.js +76 -0
  190. package/lib-es/__tests__/shared_object.js.map +1 -0
  191. package/lib-es/index.d.ts +35 -0
  192. package/lib-es/index.d.ts.map +1 -0
  193. package/lib-es/index.js +32 -0
  194. package/lib-es/index.js.map +1 -0
  195. package/lib-es/tlv.d.ts +99 -0
  196. package/lib-es/tlv.d.ts.map +1 -0
  197. package/lib-es/tlv.js +144 -0
  198. package/lib-es/tlv.js.map +1 -0
  199. package/package.json +63 -0
  200. package/src/ApduDevice.ts +688 -0
  201. package/src/BigEndian.ts +25 -0
  202. package/src/CommandBlock.ts +244 -0
  203. package/src/CommandStream.ts +260 -0
  204. package/src/CommandStreamDecoder.ts +142 -0
  205. package/src/CommandStreamEncoder.ts +144 -0
  206. package/src/CommandStreamJsonifier.ts +82 -0
  207. package/src/CommandStreamResolver.ts +284 -0
  208. package/src/Crypto.ts +78 -0
  209. package/src/Device.ts +246 -0
  210. package/src/IndexedTree.ts +80 -0
  211. package/src/NobleCrypto.ts +255 -0
  212. package/src/PublicKey.ts +6 -0
  213. package/src/SeedId.ts +338 -0
  214. package/src/StreamTree.ts +212 -0
  215. package/src/StreamTreeCipher.ts +207 -0
  216. package/src/__tests__/codec.ts +146 -0
  217. package/src/__tests__/crypto.ts +44 -0
  218. package/src/__tests__/indexed_tree.ts +51 -0
  219. package/src/__tests__/key_exchange.ts +167 -0
  220. package/src/__tests__/seedId.ts +120 -0
  221. package/src/__tests__/shared_object.ts +118 -0
  222. package/src/index.ts +43 -0
  223. package/src/tlv.ts +210 -0
  224. package/tsconfig.json +14 -0
package/lib/tlv.d.ts ADDED
@@ -0,0 +1,99 @@
1
+ export declare enum TLVTypes {
2
+ Null = 0,
3
+ VarInt = 1,
4
+ Hash = 2,
5
+ Signature = 3,
6
+ String = 4,
7
+ Bytes = 5,
8
+ PublicKey = 6
9
+ }
10
+ export interface TLVField {
11
+ type: number;
12
+ value: Uint8Array;
13
+ }
14
+ export type TLVReaderParams = {
15
+ tlv: TLVField;
16
+ offset: number;
17
+ };
18
+ declare function pushTLV(a: Uint8Array, t: number, l: number, v: Uint8Array): Uint8Array;
19
+ declare function push(a: Uint8Array, b: Uint8Array): Uint8Array;
20
+ export declare const TLV: {
21
+ readTLV: (buffer: Uint8Array, offset: number) => {
22
+ tlv: TLVField;
23
+ offset: number;
24
+ };
25
+ readAllTLV: (buffer: Uint8Array, offset: number) => TLVField[];
26
+ readVarInt: (read: {
27
+ tlv: TLVField;
28
+ offset: number;
29
+ }) => {
30
+ value: number;
31
+ offset: number;
32
+ };
33
+ readBytes: (read: {
34
+ tlv: TLVField;
35
+ offset: number;
36
+ }) => {
37
+ value: Uint8Array;
38
+ offset: number;
39
+ };
40
+ readDerivationPath: (read: {
41
+ tlv: TLVField;
42
+ offset: number;
43
+ }) => {
44
+ value: number[];
45
+ offset: number;
46
+ };
47
+ readString: (read: {
48
+ tlv: TLVField;
49
+ offset: number;
50
+ }) => {
51
+ value: string;
52
+ offset: number;
53
+ };
54
+ readHash: (read: {
55
+ tlv: TLVField;
56
+ offset: number;
57
+ }) => {
58
+ value: Uint8Array;
59
+ offset: number;
60
+ };
61
+ readSignature: (read: {
62
+ tlv: TLVField;
63
+ offset: number;
64
+ }) => {
65
+ value: Uint8Array;
66
+ offset: number;
67
+ };
68
+ readPublicKey: (read: {
69
+ tlv: TLVField;
70
+ offset: number;
71
+ }) => {
72
+ value: Uint8Array;
73
+ offset: number;
74
+ };
75
+ readNullOr: <Type>(read: {
76
+ tlv: TLVField;
77
+ offset: number;
78
+ }, func: (read: TLVReaderParams) => {
79
+ value: Type;
80
+ offset: number;
81
+ }) => {
82
+ value: Type | null;
83
+ offset: number;
84
+ };
85
+ push: typeof push;
86
+ pushTLV: typeof pushTLV;
87
+ pushString: (a: Uint8Array, b: string) => Uint8Array;
88
+ pushByte: (a: Uint8Array, b: number) => Uint8Array;
89
+ pushInt16: (a: Uint8Array, b: number) => Uint8Array;
90
+ pushInt32: (a: Uint8Array, b: number) => Uint8Array;
91
+ pushHash: (a: Uint8Array, b: Uint8Array) => Uint8Array;
92
+ pushSignature: (a: Uint8Array, b: Uint8Array) => Uint8Array;
93
+ pushBytes: (a: Uint8Array, b: Uint8Array) => Uint8Array;
94
+ pushNull: (a: Uint8Array) => Uint8Array;
95
+ pushPublicKey: (a: Uint8Array, b: Uint8Array) => Uint8Array;
96
+ pushDerivationPath: (a: Uint8Array, b: number[]) => Uint8Array;
97
+ };
98
+ export {};
99
+ //# sourceMappingURL=tlv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tlv.d.ts","sourceRoot":"","sources":["../src/tlv.ts"],"names":[],"mappings":"AAEA,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,MAAM,IAAI;IACV,IAAI,IAAI;IACR,SAAS,IAAI;IACb,MAAM,IAAI;IACV,KAAK,IAAI;IACT,SAAS,IAAI;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GAAG;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,iBAAS,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAM/E;AAED,iBAAS,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAKtD;AAGD,eAAO,MAAM,GAAG;sBACa,UAAU,UAAU,MAAM;aAAU,QAAQ;gBAAU,MAAM;;yBAUzD,UAAU,UAAU,MAAM,KAAG,QAAQ,EAAE;uBAWzC;QAAE,GAAG,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;eACpD,MAAM;gBACL,MAAM;;sBAaW;QAAE,GAAG,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;eACnD,UAAU;gBACT,MAAM;;+BAWoB;QAAE,GAAG,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;eAC5D,MAAM,EAAE;gBACP,MAAM;;uBAWY;QAAE,GAAG,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;eACpD,MAAM;gBACL,MAAM;;qBAWU;QAAE,GAAG,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;eAClD,UAAU;gBACT,MAAM;;0BAWe;QAAE,GAAG,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;eACvD,UAAU;gBACT,MAAM;;0BAWe;QAAE,GAAG,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;eACvD,UAAU;gBACT,MAAM;;6BAYR;QAAE,GAAG,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,eAC1B,eAAe,KAAK;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAC/D;QAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;;;oBAUhB,UAAU,KAAK,MAAM,KAAG,UAAU;kBAKpC,UAAU,KAAK,MAAM,KAAG,UAAU;mBAIjC,UAAU,KAAK,MAAM,KAAG,UAAU;mBAKlC,UAAU,KAAK,MAAM,KAAG,UAAU;kBAKnC,UAAU,KAAK,UAAU,KAAG,UAAU;uBAIjC,UAAU,KAAK,UAAU,KAAG,UAAU;mBAI1C,UAAU,KAAK,UAAU,KAAG,UAAU;kBAIvC,UAAU,KAAG,UAAU;uBAIlB,UAAU,KAAK,UAAU,KAAG,UAAU;4BAIjC,UAAU,KAAK,MAAM,EAAE,KAAG,UAAU;CAOtE,CAAC"}
package/lib/tlv.js ADDED
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TLV = exports.TLVTypes = void 0;
7
+ const BigEndian_1 = __importDefault(require("./BigEndian"));
8
+ var TLVTypes;
9
+ (function (TLVTypes) {
10
+ TLVTypes[TLVTypes["Null"] = 0] = "Null";
11
+ TLVTypes[TLVTypes["VarInt"] = 1] = "VarInt";
12
+ TLVTypes[TLVTypes["Hash"] = 2] = "Hash";
13
+ TLVTypes[TLVTypes["Signature"] = 3] = "Signature";
14
+ TLVTypes[TLVTypes["String"] = 4] = "String";
15
+ TLVTypes[TLVTypes["Bytes"] = 5] = "Bytes";
16
+ TLVTypes[TLVTypes["PublicKey"] = 6] = "PublicKey";
17
+ })(TLVTypes || (exports.TLVTypes = TLVTypes = {}));
18
+ function pushTLV(a, t, l, v) {
19
+ const c = new Uint8Array(a.length + 2 + l);
20
+ c.set(a);
21
+ c.set(new Uint8Array([t, l]), a.length);
22
+ c.set(v, a.length + 2);
23
+ return c;
24
+ }
25
+ function push(a, b) {
26
+ const c = new Uint8Array(a.length + b.length);
27
+ c.set(a);
28
+ c.set(b, a.length);
29
+ return c;
30
+ }
31
+ // Generic part of the TLV encoding/decoding
32
+ exports.TLV = {
33
+ readTLV: function (buffer, offset) {
34
+ const type = buffer[offset];
35
+ offset += 1;
36
+ const length = buffer[offset];
37
+ offset += 1;
38
+ const value = buffer.slice(offset, offset + length);
39
+ offset += length;
40
+ return { tlv: { type, value }, offset };
41
+ },
42
+ readAllTLV: function (buffer, offset) {
43
+ const result = [];
44
+ while (offset < buffer.length) {
45
+ const tlv = exports.TLV.readTLV(buffer, offset);
46
+ offset = tlv.offset;
47
+ result.push(tlv.tlv);
48
+ }
49
+ return result;
50
+ },
51
+ readVarInt: function (read) {
52
+ if (read.tlv.type != TLVTypes.VarInt) {
53
+ throw new Error(`Invalid type for var int (at offset ${read.offset - 2 - read.tlv.value.length}))`);
54
+ }
55
+ const fill = 4 - read.tlv.value.length;
56
+ const normalized = exports.TLV.push(new Uint8Array([0, 0, 0, 0].slice(0, fill)), read.tlv.value);
57
+ const value = BigEndian_1.default.arrayToNumber(normalized);
58
+ return { value, offset: read.offset };
59
+ },
60
+ readBytes: function (read) {
61
+ if (read.tlv.type != TLVTypes.Bytes) {
62
+ throw new Error(`Invalid type for bytes (at offset ${read.offset - 2 - read.tlv.value.length}))`);
63
+ }
64
+ const value = read.tlv.value;
65
+ return { value, offset: read.offset };
66
+ },
67
+ readDerivationPath: function (read) {
68
+ const bytes = exports.TLV.readBytes(read);
69
+ const view = new DataView(bytes.value.buffer);
70
+ const value = [];
71
+ for (let offset = 0; offset < bytes.value.length; offset += 4) {
72
+ value.push(view.getUint32(offset, false));
73
+ }
74
+ return { value, offset: bytes.offset };
75
+ },
76
+ readString: function (read) {
77
+ if (read.tlv.type != TLVTypes.String) {
78
+ throw new Error(`Invalid type for string (at offset ${read.offset - 2 - read.tlv.value.length}))`);
79
+ }
80
+ const value = new TextDecoder().decode(read.tlv.value);
81
+ return { value, offset: read.offset };
82
+ },
83
+ readHash: function (read) {
84
+ if (read.tlv.type != TLVTypes.Hash) {
85
+ throw new Error(`Invalid type for hash (at offset ${read.offset - 2 - read.tlv.value.length}))`);
86
+ }
87
+ const value = read.tlv.value;
88
+ return { value, offset: read.offset };
89
+ },
90
+ readSignature: function (read) {
91
+ if (read.tlv.type != TLVTypes.Signature) {
92
+ throw new Error(`Invalid type for signature (at offset ${read.offset - 2 - read.tlv.value.length}))`);
93
+ }
94
+ const value = read.tlv.value;
95
+ return { value, offset: read.offset };
96
+ },
97
+ readPublicKey: function (read) {
98
+ if (read.tlv.type != TLVTypes.PublicKey) {
99
+ throw new Error(`Invalid type for public key (at offset ${read.offset - 2 - read.tlv.value.length}))`);
100
+ }
101
+ const value = read.tlv.value;
102
+ return { value, offset: read.offset };
103
+ },
104
+ readNullOr: function (read, func) {
105
+ if (read.tlv.type == TLVTypes.Null) {
106
+ return { value: null, offset: read.offset };
107
+ }
108
+ return func(read);
109
+ },
110
+ push,
111
+ pushTLV,
112
+ pushString: function (a, b) {
113
+ const encoded = new TextEncoder().encode(b);
114
+ return pushTLV(a, 0x04, encoded.length, encoded);
115
+ },
116
+ pushByte: function (a, b) {
117
+ return pushTLV(a, 0x01, 1, new Uint8Array([b]));
118
+ },
119
+ pushInt16: function (a, b) {
120
+ const bytes = BigEndian_1.default.shortToArray(b);
121
+ return pushTLV(a, 0x01, 2, bytes);
122
+ },
123
+ pushInt32: function (a, b) {
124
+ const bytes = BigEndian_1.default.numberToArray(b);
125
+ return pushTLV(a, 0x01, 4, bytes);
126
+ },
127
+ pushHash: function (a, b) {
128
+ return pushTLV(a, 0x02, b.length, b);
129
+ },
130
+ pushSignature: function (a, b) {
131
+ return pushTLV(a, 0x03, b.length, b);
132
+ },
133
+ pushBytes: function (a, b) {
134
+ return pushTLV(a, 0x05, b.length, b);
135
+ },
136
+ pushNull: function (a) {
137
+ return pushTLV(a, 0x00, 0, new Uint8Array(0));
138
+ },
139
+ pushPublicKey: function (a, b) {
140
+ return pushTLV(a, 0x06, b.length, b);
141
+ },
142
+ pushDerivationPath: function (a, b) {
143
+ let bytes = new Uint8Array();
144
+ for (let i = 0; i < b.length; i++) {
145
+ bytes = push(bytes, BigEndian_1.default.numberToArray(b[i]));
146
+ }
147
+ return exports.TLV.pushBytes(a, bytes);
148
+ },
149
+ };
150
+ //# sourceMappingURL=tlv.js.map
package/lib/tlv.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tlv.js","sourceRoot":"","sources":["../src/tlv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /// <reference types="node" />
2
+ import { Command, CommandBlock } from "./CommandBlock";
3
+ import { Device } from "./Device";
4
+ import { PublicKey } from "./PublicKey";
5
+ import Transport from "@ledgerhq/hw-transport";
6
+ import { StreamTree } from "./StreamTree";
7
+ import { TLVField } from "./tlv";
8
+ import { SeedIdResult } from "./SeedId";
9
+ export declare const TRUSTCHAIN_APP_NAME = "Ledger Sync";
10
+ interface TrustedMember {
11
+ iv: Uint8Array;
12
+ data: Uint8Array;
13
+ }
14
+ interface SignatureResponse {
15
+ signature: Uint8Array;
16
+ sessionKey: Uint8Array;
17
+ }
18
+ interface SignBlockHeaderResponse {
19
+ iv: Uint8Array;
20
+ issuer: Uint8Array;
21
+ }
22
+ interface SeedCommandResponse {
23
+ iv: Uint8Array;
24
+ xpriv: Uint8Array;
25
+ commandIv: Uint8Array;
26
+ ephemeralPublicKey: Uint8Array;
27
+ groupKey: Uint8Array;
28
+ trustedMember: Uint8Array | null;
29
+ }
30
+ interface EmptyCommandResponse {
31
+ }
32
+ interface AddMemberCommandResponse {
33
+ iv: Uint8Array;
34
+ trustedMember: Uint8Array;
35
+ }
36
+ interface PublishKeyCommandResponse {
37
+ trustedMember: Uint8Array | null;
38
+ iv: Uint8Array;
39
+ xpriv: Uint8Array;
40
+ commandIv: Uint8Array;
41
+ ephemeralPublicKey: Uint8Array;
42
+ }
43
+ type CommandResponse = SeedCommandResponse | AddMemberCommandResponse | PublishKeyCommandResponse | EmptyCommandResponse;
44
+ /**
45
+ *
46
+ */
47
+ export declare class APDU {
48
+ static CLA: number;
49
+ static INS_GET_PUBLIC_KEY: number;
50
+ static INS_PARSE_STREAM: number;
51
+ static INS_SIGN_BLOCK: number;
52
+ static INS_INIT: number;
53
+ static INS_SET_TRUSTED_MEMBER: number;
54
+ static setTrustedMember(transport: Transport, member: TrustedMember): Promise<void>;
55
+ static parseBlockHeader(transport: Transport, header: Uint8Array): Promise<Uint8Array>;
56
+ static parseCommand(transport: Transport, command: Uint8Array, outputTrustedParam?: boolean): Promise<Buffer>;
57
+ static parseSignature(transport: Transport, signature: Uint8Array): Promise<Buffer>;
58
+ static initFlow(transport: Transport, sessionKey: Uint8Array): Promise<void>;
59
+ static parseEmptyStream(transport: Transport): Promise<void>;
60
+ static signBlockHeader(transport: Transport, header: Uint8Array): Promise<SignBlockHeaderResponse>;
61
+ static signCommand(transport: Transport, command: Uint8Array): Promise<Uint8Array>;
62
+ static finalizeSignature(transport: Transport): Promise<SignatureResponse>;
63
+ static getPublicKey(transport: Transport): Promise<Uint8Array>;
64
+ /**
65
+ * allows to sign a challenge and get the seed id
66
+ */
67
+ static getSeedId(transport: Transport, challenge: Uint8Array): Promise<SeedIdResult>;
68
+ static getResponseData(response: Buffer): Uint8Array;
69
+ static getStatusWord(response: Buffer): number;
70
+ static parseTrustedSeed(tlvs: TLVField[]): SeedCommandResponse;
71
+ static parseTrustedAddMember(tlvs: TLVField[]): AddMemberCommandResponse;
72
+ static parseTrustedPublishKey(tlvs: TLVField[]): PublishKeyCommandResponse;
73
+ static parseTrustedProperties(command: Command, rawProperties: Uint8Array): CommandResponse;
74
+ }
75
+ export declare class ApduDevice implements Device {
76
+ private transport;
77
+ private sessionKeyPair;
78
+ constructor(transport: Transport);
79
+ isPublicKeyAvailable(): boolean;
80
+ getPublicKey(): Promise<PublicKey>;
81
+ getSeedId(data: Uint8Array): Promise<SeedIdResult>;
82
+ private assertStreamIsValid;
83
+ private recordTrustedMember;
84
+ private hasTrustedMember;
85
+ private getTrustedMember;
86
+ private setTrustedMember;
87
+ private parseBlock;
88
+ private parseStream;
89
+ sign(stream: CommandBlock[]): Promise<CommandBlock>;
90
+ readKey(tree: StreamTree, path: number[]): Promise<Uint8Array>;
91
+ isConnected(): Promise<boolean>;
92
+ close(): Promise<void>;
93
+ }
94
+ /**
95
+ *
96
+ */
97
+ export declare function createApduDevice(transport: Transport): ApduDevice;
98
+ export {};
99
+ //# sourceMappingURL=ApduDevice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApduDevice.d.ts","sourceRoot":"","sources":["../src/ApduDevice.ts"],"names":[],"mappings":"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"}