@ledgerhq/hw-app-btc 10.0.1 → 10.0.2-nightly.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 (166) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +7 -0
  3. package/lib/Btc.d.ts.map +1 -1
  4. package/lib/Btc.js +72 -97
  5. package/lib/Btc.js.map +1 -1
  6. package/lib/BtcNew.js +217 -313
  7. package/lib/BtcNew.js.map +1 -1
  8. package/lib/BtcOld.js +46 -106
  9. package/lib/BtcOld.js.map +1 -1
  10. package/lib/bip32.js +12 -12
  11. package/lib/bip32.js.map +1 -1
  12. package/lib/buffertools.js +66 -69
  13. package/lib/buffertools.js.map +1 -1
  14. package/lib/compressPublicKey.js +3 -3
  15. package/lib/compressPublicKey.js.map +1 -1
  16. package/lib/constants.js +1 -1
  17. package/lib/createTransaction.d.ts +1 -1
  18. package/lib/createTransaction.d.ts.map +1 -1
  19. package/lib/createTransaction.js +285 -398
  20. package/lib/createTransaction.js.map +1 -1
  21. package/lib/debug.js +11 -13
  22. package/lib/debug.js.map +1 -1
  23. package/lib/finalizeInput.js +23 -62
  24. package/lib/finalizeInput.js.map +1 -1
  25. package/lib/getAppAndVersion.d.ts +1 -1
  26. package/lib/getAppAndVersion.d.ts.map +1 -1
  27. package/lib/getAppAndVersion.js +29 -72
  28. package/lib/getAppAndVersion.js.map +1 -1
  29. package/lib/getTrustedInput.js +108 -251
  30. package/lib/getTrustedInput.js.map +1 -1
  31. package/lib/getTrustedInputBIP143.js +9 -10
  32. package/lib/getTrustedInputBIP143.js.map +1 -1
  33. package/lib/getWalletPublicKey.d.ts +1 -1
  34. package/lib/getWalletPublicKey.d.ts.map +1 -1
  35. package/lib/getWalletPublicKey.js +27 -73
  36. package/lib/getWalletPublicKey.js.map +1 -1
  37. package/lib/hashPublicKey.js +4 -4
  38. package/lib/hashPublicKey.js.map +1 -1
  39. package/lib/index.js +3 -3
  40. package/lib/index.js.map +1 -1
  41. package/lib/newops/accounttype.d.ts +2 -2
  42. package/lib/newops/accounttype.d.ts.map +1 -1
  43. package/lib/newops/accounttype.js +85 -125
  44. package/lib/newops/accounttype.js.map +1 -1
  45. package/lib/newops/appClient.js +98 -205
  46. package/lib/newops/appClient.js.map +1 -1
  47. package/lib/newops/clientCommands.js +122 -213
  48. package/lib/newops/clientCommands.js.map +1 -1
  49. package/lib/newops/merkelizedPsbt.js +28 -75
  50. package/lib/newops/merkelizedPsbt.js.map +1 -1
  51. package/lib/newops/merkle.js +38 -67
  52. package/lib/newops/merkle.js.map +1 -1
  53. package/lib/newops/merkleMap.js +11 -12
  54. package/lib/newops/merkleMap.js.map +1 -1
  55. package/lib/newops/policy.d.ts +1 -1
  56. package/lib/newops/policy.d.ts.map +1 -1
  57. package/lib/newops/policy.js +17 -18
  58. package/lib/newops/policy.js.map +1 -1
  59. package/lib/newops/psbtExtractor.js +9 -9
  60. package/lib/newops/psbtExtractor.js.map +1 -1
  61. package/lib/newops/psbtFinalizer.js +22 -22
  62. package/lib/newops/psbtFinalizer.js.map +1 -1
  63. package/lib/newops/psbtv2.d.ts +1 -1
  64. package/lib/newops/psbtv2.d.ts.map +1 -1
  65. package/lib/newops/psbtv2.js +227 -286
  66. package/lib/newops/psbtv2.js.map +1 -1
  67. package/lib/serializeTransaction.js +13 -15
  68. package/lib/serializeTransaction.js.map +1 -1
  69. package/lib/shouldUseTrustedInputForSegwit.js +4 -5
  70. package/lib/shouldUseTrustedInputForSegwit.js.map +1 -1
  71. package/lib/signMessage.js +47 -99
  72. package/lib/signMessage.js.map +1 -1
  73. package/lib/signP2SHTransaction.d.ts +1 -1
  74. package/lib/signP2SHTransaction.d.ts.map +1 -1
  75. package/lib/signP2SHTransaction.js +91 -187
  76. package/lib/signP2SHTransaction.js.map +1 -1
  77. package/lib/signTransaction.js +8 -9
  78. package/lib/signTransaction.js.map +1 -1
  79. package/lib/splitTransaction.js +50 -54
  80. package/lib/splitTransaction.js.map +1 -1
  81. package/lib/startUntrustedHashTransactionInput.js +65 -167
  82. package/lib/startUntrustedHashTransactionInput.js.map +1 -1
  83. package/lib/types.js +1 -1
  84. package/lib/varint.js +10 -10
  85. package/lib/varint.js.map +1 -1
  86. package/lib-es/Btc.d.ts.map +1 -1
  87. package/lib-es/Btc.js +58 -84
  88. package/lib-es/Btc.js.map +1 -1
  89. package/lib-es/BtcNew.js +205 -302
  90. package/lib-es/BtcNew.js.map +1 -1
  91. package/lib-es/BtcOld.js +35 -96
  92. package/lib-es/BtcOld.js.map +1 -1
  93. package/lib-es/bip32.js +7 -7
  94. package/lib-es/bip32.js.map +1 -1
  95. package/lib-es/buffertools.js +62 -67
  96. package/lib-es/buffertools.js.map +1 -1
  97. package/lib-es/compressPublicKey.js +2 -2
  98. package/lib-es/compressPublicKey.js.map +1 -1
  99. package/lib-es/constants.js +12 -12
  100. package/lib-es/constants.js.map +1 -1
  101. package/lib-es/createTransaction.d.ts +1 -1
  102. package/lib-es/createTransaction.d.ts.map +1 -1
  103. package/lib-es/createTransaction.js +271 -384
  104. package/lib-es/createTransaction.js.map +1 -1
  105. package/lib-es/debug.js +10 -12
  106. package/lib-es/debug.js.map +1 -1
  107. package/lib-es/finalizeInput.js +20 -59
  108. package/lib-es/finalizeInput.js.map +1 -1
  109. package/lib-es/getAppAndVersion.d.ts +1 -1
  110. package/lib-es/getAppAndVersion.d.ts.map +1 -1
  111. package/lib-es/getAppAndVersion.js +27 -70
  112. package/lib-es/getAppAndVersion.js.map +1 -1
  113. package/lib-es/getTrustedInput.js +104 -247
  114. package/lib-es/getTrustedInput.js.map +1 -1
  115. package/lib-es/getTrustedInputBIP143.js +5 -6
  116. package/lib-es/getTrustedInputBIP143.js.map +1 -1
  117. package/lib-es/getWalletPublicKey.d.ts +1 -1
  118. package/lib-es/getWalletPublicKey.d.ts.map +1 -1
  119. package/lib-es/getWalletPublicKey.js +25 -71
  120. package/lib-es/getWalletPublicKey.js.map +1 -1
  121. package/lib-es/newops/accounttype.d.ts +2 -2
  122. package/lib-es/newops/accounttype.d.ts.map +1 -1
  123. package/lib-es/newops/accounttype.js +79 -123
  124. package/lib-es/newops/accounttype.js.map +1 -1
  125. package/lib-es/newops/appClient.js +92 -200
  126. package/lib-es/newops/appClient.js.map +1 -1
  127. package/lib-es/newops/clientCommands.js +117 -214
  128. package/lib-es/newops/clientCommands.js.map +1 -1
  129. package/lib-es/newops/merkelizedPsbt.js +25 -73
  130. package/lib-es/newops/merkelizedPsbt.js.map +1 -1
  131. package/lib-es/newops/merkle.js +36 -66
  132. package/lib-es/newops/merkle.js.map +1 -1
  133. package/lib-es/newops/merkleMap.js +8 -10
  134. package/lib-es/newops/merkleMap.js.map +1 -1
  135. package/lib-es/newops/policy.d.ts +1 -1
  136. package/lib-es/newops/policy.d.ts.map +1 -1
  137. package/lib-es/newops/policy.js +12 -14
  138. package/lib-es/newops/policy.js.map +1 -1
  139. package/lib-es/newops/psbtExtractor.js +7 -7
  140. package/lib-es/newops/psbtExtractor.js.map +1 -1
  141. package/lib-es/newops/psbtFinalizer.js +19 -19
  142. package/lib-es/newops/psbtFinalizer.js.map +1 -1
  143. package/lib-es/newops/psbtv2.d.ts +1 -1
  144. package/lib-es/newops/psbtv2.d.ts.map +1 -1
  145. package/lib-es/newops/psbtv2.js +225 -286
  146. package/lib-es/newops/psbtv2.js.map +1 -1
  147. package/lib-es/serializeTransaction.js +11 -13
  148. package/lib-es/serializeTransaction.js.map +1 -1
  149. package/lib-es/shouldUseTrustedInputForSegwit.js +1 -2
  150. package/lib-es/shouldUseTrustedInputForSegwit.js.map +1 -1
  151. package/lib-es/signMessage.js +44 -96
  152. package/lib-es/signMessage.js.map +1 -1
  153. package/lib-es/signP2SHTransaction.d.ts +1 -1
  154. package/lib-es/signP2SHTransaction.d.ts.map +1 -1
  155. package/lib-es/signP2SHTransaction.js +84 -180
  156. package/lib-es/signP2SHTransaction.js.map +1 -1
  157. package/lib-es/signTransaction.js +6 -7
  158. package/lib-es/signTransaction.js.map +1 -1
  159. package/lib-es/splitTransaction.js +46 -50
  160. package/lib-es/splitTransaction.js.map +1 -1
  161. package/lib-es/startUntrustedHashTransactionInput.js +62 -164
  162. package/lib-es/startUntrustedHashTransactionInput.js.map +1 -1
  163. package/lib-es/varint.js +9 -9
  164. package/lib-es/varint.js.map +1 -1
  165. package/package.json +5 -6
  166. package/src/Btc.ts +28 -5
package/src/Btc.ts CHANGED
@@ -269,12 +269,35 @@ export default class Btc {
269
269
  }
270
270
 
271
271
  async changeImplIfNecessary(): Promise<BtcOld | BtcNew> {
272
+ // if BtcOld was instantiated, stick with it
273
+ if (this._impl instanceof BtcOld) return this._impl;
274
+
272
275
  const appAndVersion = await getAppAndVersion(this._transport);
273
- if (appAndVersion.name === "Exchange" && this._impl instanceof BtcNew) {
274
- const isBtcLegacy = await checkIsBtcLegacy(this._transport);
275
- if (isBtcLegacy) {
276
- this._impl = new BtcOld(this._transport);
277
- }
276
+ let isBtcLegacy = true; // default for all altcoins
277
+
278
+ if (
279
+ appAndVersion.name === "Bitcoin" ||
280
+ appAndVersion.name === "Bitcoin Test"
281
+ ) {
282
+ const [major, minor] = appAndVersion.version.split(".");
283
+ // we use the legacy protocol for versions below 2.1.0 of the Bitcoin app.
284
+ isBtcLegacy =
285
+ parseInt(major) <= 1 || (parseInt(major) == 2 && parseInt(minor) == 0);
286
+ } else if (
287
+ appAndVersion.name === "Bitcoin Legacy" ||
288
+ appAndVersion.name === "Bitcoin Test Legacy"
289
+ ) {
290
+ // the "Bitcoin Legacy" and "Bitcoin Testnet Legacy" app use the legacy protocol, regardless of the version
291
+ isBtcLegacy = true;
292
+ } else if (appAndVersion.name === "Exchange") {
293
+ // We can't query the version of the Bitcoin app if we're coming from Exchange;
294
+ // therefore, we use a workaround to distinguish legacy and new versions.
295
+ // This can be removed once Ledger Live enforces minimum bitcoin version >= 2.1.0.
296
+ isBtcLegacy = await checkIsBtcLegacy(this._transport);
297
+ }
298
+
299
+ if (isBtcLegacy) {
300
+ this._impl = new BtcOld(this._transport);
278
301
  }
279
302
  return this._impl;
280
303
  }