@ledgerhq/hw-app-btc 6.9.1-taproot.0 → 6.11.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.
- package/README.md +602 -107
- package/lib/Btc.d.ts +11 -7
- package/lib/Btc.d.ts.map +1 -1
- package/lib/Btc.js +113 -31
- package/lib/Btc.js.map +1 -1
- package/lib/BtcNew.d.ts +81 -32
- package/lib/BtcNew.d.ts.map +1 -1
- package/lib/BtcNew.js +296 -99
- package/lib/BtcNew.js.map +1 -1
- package/lib/BtcOld.d.ts +3 -1
- package/lib/BtcOld.d.ts.map +1 -1
- package/lib/BtcOld.js +22 -6
- package/lib/BtcOld.js.map +1 -1
- package/lib/constants.d.ts +1 -0
- package/lib/constants.d.ts.map +1 -1
- package/lib/constants.js +2 -1
- package/lib/constants.js.map +1 -1
- package/lib/getAppAndVersion.d.ts +3 -2
- package/lib/getAppAndVersion.d.ts.map +1 -1
- package/lib/getAppAndVersion.js.map +1 -1
- package/lib/newops/appClient.d.ts +6 -2
- package/lib/newops/appClient.d.ts.map +1 -1
- package/lib/newops/appClient.js +9 -5
- package/lib/newops/appClient.js.map +1 -1
- package/lib/newops/clientCommands.d.ts +18 -2
- package/lib/newops/clientCommands.d.ts.map +1 -1
- package/lib/newops/clientCommands.js +20 -3
- package/lib/newops/clientCommands.js.map +1 -1
- package/lib/newops/merkelizedPsbt.d.ts +11 -0
- package/lib/newops/merkelizedPsbt.d.ts.map +1 -1
- package/lib/newops/merkelizedPsbt.js +11 -0
- package/lib/newops/merkelizedPsbt.js.map +1 -1
- package/lib/newops/merkle.d.ts +5 -0
- package/lib/newops/merkle.d.ts.map +1 -1
- package/lib/newops/merkle.js +5 -0
- package/lib/newops/merkle.js.map +1 -1
- package/lib/newops/merkleMap.d.ts +10 -0
- package/lib/newops/merkleMap.d.ts.map +1 -1
- package/lib/newops/merkleMap.js +10 -0
- package/lib/newops/merkleMap.js.map +1 -1
- package/lib/newops/policy.d.ts +8 -0
- package/lib/newops/policy.d.ts.map +1 -1
- package/lib/newops/policy.js +9 -1
- package/lib/newops/policy.js.map +1 -1
- package/lib/newops/psbtExtractor.d.ts +6 -0
- package/lib/newops/psbtExtractor.d.ts.map +1 -1
- package/lib/newops/psbtExtractor.js +6 -0
- package/lib/newops/psbtExtractor.js.map +1 -1
- package/lib/newops/psbtFinalizer.d.ts +11 -1
- package/lib/newops/psbtFinalizer.d.ts.map +1 -1
- package/lib/newops/psbtFinalizer.js +28 -4
- package/lib/newops/psbtFinalizer.js.map +1 -1
- package/lib/newops/psbtv2.d.ts +22 -2
- package/lib/newops/psbtv2.d.ts.map +1 -1
- package/lib/newops/psbtv2.js +37 -8
- package/lib/newops/psbtv2.js.map +1 -1
- package/lib-es/Btc.d.ts +11 -7
- package/lib-es/Btc.d.ts.map +1 -1
- package/lib-es/Btc.js +94 -31
- package/lib-es/Btc.js.map +1 -1
- package/lib-es/BtcNew.d.ts +81 -32
- package/lib-es/BtcNew.d.ts.map +1 -1
- package/lib-es/BtcNew.js +293 -101
- package/lib-es/BtcNew.js.map +1 -1
- package/lib-es/BtcOld.d.ts +3 -1
- package/lib-es/BtcOld.d.ts.map +1 -1
- package/lib-es/BtcOld.js +22 -6
- package/lib-es/BtcOld.js.map +1 -1
- package/lib-es/constants.d.ts +1 -0
- package/lib-es/constants.d.ts.map +1 -1
- package/lib-es/constants.js +1 -0
- package/lib-es/constants.js.map +1 -1
- package/lib-es/getAppAndVersion.d.ts +3 -2
- package/lib-es/getAppAndVersion.d.ts.map +1 -1
- package/lib-es/getAppAndVersion.js.map +1 -1
- package/lib-es/newops/appClient.d.ts +6 -2
- package/lib-es/newops/appClient.d.ts.map +1 -1
- package/lib-es/newops/appClient.js +9 -5
- package/lib-es/newops/appClient.js.map +1 -1
- package/lib-es/newops/clientCommands.d.ts +18 -2
- package/lib-es/newops/clientCommands.d.ts.map +1 -1
- package/lib-es/newops/clientCommands.js +20 -3
- package/lib-es/newops/clientCommands.js.map +1 -1
- package/lib-es/newops/merkelizedPsbt.d.ts +11 -0
- package/lib-es/newops/merkelizedPsbt.d.ts.map +1 -1
- package/lib-es/newops/merkelizedPsbt.js +11 -0
- package/lib-es/newops/merkelizedPsbt.js.map +1 -1
- package/lib-es/newops/merkle.d.ts +5 -0
- package/lib-es/newops/merkle.d.ts.map +1 -1
- package/lib-es/newops/merkle.js +5 -0
- package/lib-es/newops/merkle.js.map +1 -1
- package/lib-es/newops/merkleMap.d.ts +10 -0
- package/lib-es/newops/merkleMap.d.ts.map +1 -1
- package/lib-es/newops/merkleMap.js +10 -0
- package/lib-es/newops/merkleMap.js.map +1 -1
- package/lib-es/newops/policy.d.ts +8 -0
- package/lib-es/newops/policy.d.ts.map +1 -1
- package/lib-es/newops/policy.js +10 -2
- package/lib-es/newops/policy.js.map +1 -1
- package/lib-es/newops/psbtExtractor.d.ts +6 -0
- package/lib-es/newops/psbtExtractor.d.ts.map +1 -1
- package/lib-es/newops/psbtExtractor.js +6 -0
- package/lib-es/newops/psbtExtractor.js.map +1 -1
- package/lib-es/newops/psbtFinalizer.d.ts +11 -1
- package/lib-es/newops/psbtFinalizer.d.ts.map +1 -1
- package/lib-es/newops/psbtFinalizer.js +28 -4
- package/lib-es/newops/psbtFinalizer.js.map +1 -1
- package/lib-es/newops/psbtv2.d.ts +22 -2
- package/lib-es/newops/psbtv2.d.ts.map +1 -1
- package/lib-es/newops/psbtv2.js +37 -8
- package/lib-es/newops/psbtv2.js.map +1 -1
- package/package.json +4 -4
- package/src/Btc.ts +92 -21
- package/src/BtcNew.ts +295 -77
- package/src/BtcOld.ts +13 -9
- package/src/bip32.ts +1 -1
- package/src/constants.ts +1 -0
- package/src/getAppAndVersion.ts +7 -4
- package/src/newops/appClient.ts +13 -5
- package/src/newops/clientCommands.ts +19 -3
- package/src/newops/merkelizedPsbt.ts +11 -0
- package/src/newops/merkle.ts +5 -0
- package/src/newops/merkleMap.ts +10 -0
- package/src/newops/policy.ts +10 -2
- package/src/newops/psbtExtractor.ts +6 -0
- package/src/newops/psbtFinalizer.ts +28 -4
- package/src/newops/psbtv2.ts +38 -14
- package/tests/Btc.integration.test.ts +125 -15
- package/tests/Btc.test.ts +83 -0
- package/tests/newops/BtcNew.test.ts +75 -508
- package/tests/newops/integrationtools.ts +174 -0
- package/tests/newops/testtx.ts +676 -0
- package/tests/speculosclient.ts +47 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psbtExtractor.d.ts","sourceRoot":"","sources":["../../src/newops/psbtExtractor.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA6B5C"}
|
|
1
|
+
{"version":3,"file":"psbtExtractor.d.ts","sourceRoot":"","sources":["../../src/newops/psbtExtractor.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA6B5C"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { BufferWriter } from "../buffertools";
|
|
2
|
+
/**
|
|
3
|
+
* This implements the "Transaction Extractor" role of BIP370 (PSBTv2
|
|
4
|
+
* https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki#transaction-extractor). However
|
|
5
|
+
* the role is partially documented in BIP174 (PSBTv0
|
|
6
|
+
* https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#transaction-extractor).
|
|
7
|
+
*/
|
|
2
8
|
export function extract(psbt) {
|
|
3
9
|
var _a, _b;
|
|
4
10
|
var tx = new BufferWriter();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psbtExtractor.js","sourceRoot":"","sources":["../../src/newops/psbtExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,MAAM,UAAU,OAAO,CAAC,IAAY;;IAClC,IAAM,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;IAC9B,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAE1C,IAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,QAAQ,EAAE;QACZ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAChC;IACD,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC9C,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC3B,IAAM,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;QACnC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,EAAE,CAAC,aAAa,CAAC,MAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,mCAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAChE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,QAAQ,EAAE;YACZ,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D;KACF;IACD,IAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChD,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;QACpC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3C;IACD,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,EAAE,CAAC,WAAW,CAAC,MAAA,IAAI,CAAC,yBAAyB,EAAE,mCAAI,CAAC,CAAC,CAAC;IACtD,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC;AACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"psbtExtractor.js","sourceRoot":"","sources":["../../src/newops/psbtExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;;IAClC,IAAM,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;IAC9B,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAE1C,IAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,QAAQ,EAAE;QACZ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAChC;IACD,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC9C,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC3B,IAAM,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;QACnC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,EAAE,CAAC,aAAa,CAAC,MAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,mCAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAChE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,QAAQ,EAAE;YACZ,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D;KACF;IACD,IAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChD,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;QACpC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3C;IACD,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,EAAE,CAAC,WAAW,CAAC,MAAA,IAAI,CAAC,yBAAyB,EAAE,mCAAI,CAAC,CAAC,CAAC;IACtD,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC;AACrB,CAAC"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { PsbtV2 } from "./psbtv2";
|
|
2
2
|
/**
|
|
3
|
+
* This roughly implements the "input finalizer" role of BIP370 (PSBTv2
|
|
4
|
+
* https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki). However
|
|
5
|
+
* the role is documented in BIP174 (PSBTv0
|
|
6
|
+
* https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki).
|
|
3
7
|
*
|
|
4
|
-
*
|
|
8
|
+
* Verify that all inputs have a signature, and set inputFinalScriptwitness
|
|
9
|
+
* and/or inputFinalScriptSig depending on the type of the spent outputs. Clean
|
|
10
|
+
* fields that aren't useful anymore, partial signatures, redeem script and
|
|
11
|
+
* derivation paths.
|
|
12
|
+
*
|
|
13
|
+
* @param psbt The psbt with all signatures added as partial sigs, either
|
|
14
|
+
* through PSBT_IN_PARTIAL_SIG or PSBT_IN_TAP_KEY_SIG
|
|
5
15
|
*/
|
|
6
16
|
export declare function finalize(psbt: PsbtV2): void;
|
|
7
17
|
//# sourceMappingURL=psbtFinalizer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psbtFinalizer.d.ts","sourceRoot":"","sources":["../../src/newops/psbtFinalizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,MAAM,EAAE,MAAM,UAAU,CAAC;AAE1C
|
|
1
|
+
{"version":3,"file":"psbtFinalizer.d.ts","sourceRoot":"","sources":["../../src/newops/psbtFinalizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,MAAM,EAAE,MAAM,UAAU,CAAC;AAE1C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAoE3C"}
|
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
import { BufferWriter } from "../buffertools";
|
|
2
2
|
import { psbtIn } from "./psbtv2";
|
|
3
3
|
/**
|
|
4
|
+
* This roughly implements the "input finalizer" role of BIP370 (PSBTv2
|
|
5
|
+
* https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki). However
|
|
6
|
+
* the role is documented in BIP174 (PSBTv0
|
|
7
|
+
* https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki).
|
|
4
8
|
*
|
|
5
|
-
*
|
|
9
|
+
* Verify that all inputs have a signature, and set inputFinalScriptwitness
|
|
10
|
+
* and/or inputFinalScriptSig depending on the type of the spent outputs. Clean
|
|
11
|
+
* fields that aren't useful anymore, partial signatures, redeem script and
|
|
12
|
+
* derivation paths.
|
|
13
|
+
*
|
|
14
|
+
* @param psbt The psbt with all signatures added as partial sigs, either
|
|
15
|
+
* through PSBT_IN_PARTIAL_SIG or PSBT_IN_TAP_KEY_SIG
|
|
6
16
|
*/
|
|
7
17
|
export function finalize(psbt) {
|
|
8
18
|
// First check that each input has a signature
|
|
@@ -59,18 +69,24 @@ export function finalize(psbt) {
|
|
|
59
69
|
if (!signature) {
|
|
60
70
|
throw Error("No taproot signature found");
|
|
61
71
|
}
|
|
62
|
-
if (signature.length != 64) {
|
|
72
|
+
if (signature.length != 64 && signature.length != 65) {
|
|
63
73
|
throw Error("Unexpected length of schnorr signature.");
|
|
64
74
|
}
|
|
65
75
|
var witnessBuf = new BufferWriter();
|
|
66
76
|
witnessBuf.writeVarInt(1);
|
|
67
|
-
witnessBuf.
|
|
68
|
-
witnessBuf.writeSlice(signature);
|
|
77
|
+
witnessBuf.writeVarSlice(signature);
|
|
69
78
|
psbt.setInputFinalScriptwitness(i, witnessBuf.buffer());
|
|
70
79
|
}
|
|
71
80
|
clearFinalizedInput(psbt, i);
|
|
72
81
|
}
|
|
73
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Deletes fields that are no longer neccesary from the psbt.
|
|
85
|
+
*
|
|
86
|
+
* Note, the spec doesn't say anything about removing ouput fields
|
|
87
|
+
* like PSBT_OUT_BIP32_DERIVATION_PATH and others, so we keep them
|
|
88
|
+
* without actually knowing why. I think we should remove them too.
|
|
89
|
+
*/
|
|
74
90
|
function clearFinalizedInput(psbt, inputIndex) {
|
|
75
91
|
var keyTypes = [
|
|
76
92
|
psbtIn.BIP32_DERIVATION,
|
|
@@ -88,6 +104,14 @@ function clearFinalizedInput(psbt, inputIndex) {
|
|
|
88
104
|
}
|
|
89
105
|
psbt.deleteInputEntries(inputIndex, keyTypes);
|
|
90
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Writes a script push operation to buf, which looks different
|
|
109
|
+
* depending on the size of the data. See
|
|
110
|
+
* https://en.bitcoin.it/wiki/Script#Constants
|
|
111
|
+
*
|
|
112
|
+
* @param buf the BufferWriter to write to
|
|
113
|
+
* @param data the Buffer to be pushed.
|
|
114
|
+
*/
|
|
91
115
|
function writePush(buf, data) {
|
|
92
116
|
if (data.length <= 75) {
|
|
93
117
|
buf.writeUInt8(data.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psbtFinalizer.js","sourceRoot":"","sources":["../../src/newops/psbtFinalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAU,MAAM,UAAU,CAAC;AAE1C
|
|
1
|
+
{"version":3,"file":"psbtFinalizer.js","sourceRoot":"","sources":["../../src/newops/psbtFinalizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export declare enum psbtIn {
|
|
|
11
11
|
NON_WITNESS_UTXO = 0,
|
|
12
12
|
WITNESS_UTXO = 1,
|
|
13
13
|
PARTIAL_SIG = 2,
|
|
14
|
+
SIGHASH_TYPE = 3,
|
|
14
15
|
REDEEM_SCRIPT = 4,
|
|
15
16
|
BIP32_DERIVATION = 6,
|
|
16
17
|
FINAL_SCRIPTSIG = 7,
|
|
@@ -30,6 +31,24 @@ export declare enum psbtOut {
|
|
|
30
31
|
}
|
|
31
32
|
export declare class NoSuchEntry extends Error {
|
|
32
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Implements Partially Signed Bitcoin Transaction version 2, BIP370, as
|
|
36
|
+
* documented at https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki
|
|
37
|
+
* and https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki
|
|
38
|
+
*
|
|
39
|
+
* A psbt is a data structure that can carry all relevant information about a
|
|
40
|
+
* transaction through all stages of the signing process. From constructing an
|
|
41
|
+
* unsigned transaction to extracting the final serialized transaction ready for
|
|
42
|
+
* broadcast.
|
|
43
|
+
*
|
|
44
|
+
* This implementation is limited to what's needed in ledgerjs to carry out its
|
|
45
|
+
* duties, which means that support for features like multisig or taproot script
|
|
46
|
+
* path spending are not implemented. Specifically, it supports p2pkh,
|
|
47
|
+
* p2wpkhWrappedInP2sh, p2wpkh and p2tr key path spending.
|
|
48
|
+
*
|
|
49
|
+
* This class is made purposefully dumb, so it's easy to add support for
|
|
50
|
+
* complemantary fields as needed in the future.
|
|
51
|
+
*/
|
|
33
52
|
export declare class PsbtV2 {
|
|
34
53
|
protected globalMap: Map<string, Buffer>;
|
|
35
54
|
protected inputMaps: Map<string, Buffer>[];
|
|
@@ -55,6 +74,8 @@ export declare class PsbtV2 {
|
|
|
55
74
|
} | undefined;
|
|
56
75
|
setInputPartialSig(inputIndex: number, pubkey: Buffer, signature: Buffer): void;
|
|
57
76
|
getInputPartialSig(inputIndex: number, pubkey: Buffer): Buffer | undefined;
|
|
77
|
+
setInputSighashType(inputIndex: number, sigHashtype: number): void;
|
|
78
|
+
getInputSighashType(inputIndex: number): number | undefined;
|
|
58
79
|
setInputRedeemScript(inputIndex: number, redeemScript: Buffer): void;
|
|
59
80
|
getInputRedeemScript(inputIndex: number): Buffer | undefined;
|
|
60
81
|
setInputBip32Derivation(inputIndex: number, pubkey: Buffer, masterFingerprint: Buffer, path: number[]): void;
|
|
@@ -111,12 +132,11 @@ export declare class PsbtV2 {
|
|
|
111
132
|
private getGlobal;
|
|
112
133
|
private getGlobalOptional;
|
|
113
134
|
private setInput;
|
|
114
|
-
private getMap;
|
|
115
135
|
private getInput;
|
|
116
136
|
private getInputOptional;
|
|
117
137
|
private setOutput;
|
|
118
138
|
private getOutput;
|
|
119
|
-
private
|
|
139
|
+
private getMap;
|
|
120
140
|
private encodeBip32Derivation;
|
|
121
141
|
private decodeBip32Derivation;
|
|
122
142
|
private writeBip32Derivation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psbtv2.d.ts","sourceRoot":"","sources":["../../src/newops/psbtv2.ts"],"names":[],"mappings":";AAIA,oBAAY,UAAU;IACpB,UAAU,IAAO;IACjB,iBAAiB,IAAO;IACxB,WAAW,IAAO;IAClB,YAAY,IAAO;IACnB,aAAa,IAAO;IACpB,OAAO,MAAO;CACf;AACD,oBAAY,MAAM;IAChB,gBAAgB,IAAO;IACvB,YAAY,IAAO;IACnB,WAAW,IAAO;IAClB,aAAa,IAAO;IACpB,gBAAgB,IAAO;IACvB,eAAe,IAAO;IACtB,mBAAmB,IAAO;IAC1B,aAAa,KAAO;IACpB,YAAY,KAAO;IACnB,QAAQ,KAAO;IACf,WAAW,KAAO;IAClB,oBAAoB,KAAO;CAC5B;AACD,oBAAY,OAAO;IACjB,aAAa,IAAO;IACpB,iBAAiB,IAAO;IACxB,MAAM,IAAO;IACb,MAAM,IAAO;IACb,oBAAoB,IAAO;CAC5B;AAID,qBAAa,WAAY,SAAQ,KAAK;CAAG;AAEzC,qBAAa,MAAM;IACjB,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IACrD,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAM;IAChD,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAM;IAEjD,kBAAkB,CAAC,OAAO,EAAE,MAAM;IAGlC,kBAAkB,IAAI,MAAM;IAG5B,yBAAyB,CAAC,QAAQ,EAAE,MAAM;IAG1C,yBAAyB,IAAI,MAAM,GAAG,SAAS;IAK/C,mBAAmB,CAAC,UAAU,EAAE,MAAM;IAGtC,mBAAmB,IAAI,MAAM;IAG7B,oBAAoB,CAAC,WAAW,EAAE,MAAM;IAGxC,oBAAoB,IAAI,MAAM;IAG9B,qBAAqB,CAAC,IAAI,EAAE,MAAM;IAGlC,qBAAqB,IAAI,MAAM,GAAG,SAAS;IAG3C,oBAAoB,CAAC,WAAW,EAAE,MAAM;IAGxC,oBAAoB,IAAI,MAAM;IAI9B,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAG9D,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAG9D,mBAAmB,CACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM;IAOtB,mBAAmB,CACjB,UAAU,EAAE,MAAM,GACjB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAMvD,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAGxE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAG1E,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAG7D,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAG5D,uBAAuB,CACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,MAAM,EACzB,IAAI,EAAE,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"psbtv2.d.ts","sourceRoot":"","sources":["../../src/newops/psbtv2.ts"],"names":[],"mappings":"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"}
|
package/lib-es/newops/psbtv2.js
CHANGED
|
@@ -41,6 +41,7 @@ export var psbtIn;
|
|
|
41
41
|
psbtIn[psbtIn["NON_WITNESS_UTXO"] = 0] = "NON_WITNESS_UTXO";
|
|
42
42
|
psbtIn[psbtIn["WITNESS_UTXO"] = 1] = "WITNESS_UTXO";
|
|
43
43
|
psbtIn[psbtIn["PARTIAL_SIG"] = 2] = "PARTIAL_SIG";
|
|
44
|
+
psbtIn[psbtIn["SIGHASH_TYPE"] = 3] = "SIGHASH_TYPE";
|
|
44
45
|
psbtIn[psbtIn["REDEEM_SCRIPT"] = 4] = "REDEEM_SCRIPT";
|
|
45
46
|
psbtIn[psbtIn["BIP32_DERIVATION"] = 6] = "BIP32_DERIVATION";
|
|
46
47
|
psbtIn[psbtIn["FINAL_SCRIPTSIG"] = 7] = "FINAL_SCRIPTSIG";
|
|
@@ -68,6 +69,24 @@ var NoSuchEntry = /** @class */ (function (_super) {
|
|
|
68
69
|
return NoSuchEntry;
|
|
69
70
|
}(Error));
|
|
70
71
|
export { NoSuchEntry };
|
|
72
|
+
/**
|
|
73
|
+
* Implements Partially Signed Bitcoin Transaction version 2, BIP370, as
|
|
74
|
+
* documented at https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki
|
|
75
|
+
* and https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki
|
|
76
|
+
*
|
|
77
|
+
* A psbt is a data structure that can carry all relevant information about a
|
|
78
|
+
* transaction through all stages of the signing process. From constructing an
|
|
79
|
+
* unsigned transaction to extracting the final serialized transaction ready for
|
|
80
|
+
* broadcast.
|
|
81
|
+
*
|
|
82
|
+
* This implementation is limited to what's needed in ledgerjs to carry out its
|
|
83
|
+
* duties, which means that support for features like multisig or taproot script
|
|
84
|
+
* path spending are not implemented. Specifically, it supports p2pkh,
|
|
85
|
+
* p2wpkhWrappedInP2sh, p2wpkh and p2tr key path spending.
|
|
86
|
+
*
|
|
87
|
+
* This class is made purposefully dumb, so it's easy to add support for
|
|
88
|
+
* complemantary fields as needed in the future.
|
|
89
|
+
*/
|
|
71
90
|
var PsbtV2 = /** @class */ (function () {
|
|
72
91
|
function PsbtV2() {
|
|
73
92
|
this.globalMap = new Map();
|
|
@@ -136,6 +155,15 @@ var PsbtV2 = /** @class */ (function () {
|
|
|
136
155
|
PsbtV2.prototype.getInputPartialSig = function (inputIndex, pubkey) {
|
|
137
156
|
return this.getInputOptional(inputIndex, psbtIn.PARTIAL_SIG, pubkey);
|
|
138
157
|
};
|
|
158
|
+
PsbtV2.prototype.setInputSighashType = function (inputIndex, sigHashtype) {
|
|
159
|
+
this.setInput(inputIndex, psbtIn.SIGHASH_TYPE, b(), uint32LE(sigHashtype));
|
|
160
|
+
};
|
|
161
|
+
PsbtV2.prototype.getInputSighashType = function (inputIndex) {
|
|
162
|
+
var result = this.getInputOptional(inputIndex, psbtIn.SIGHASH_TYPE, b());
|
|
163
|
+
if (!result)
|
|
164
|
+
return undefined;
|
|
165
|
+
return result.readUInt32LE(0);
|
|
166
|
+
};
|
|
139
167
|
PsbtV2.prototype.setInputRedeemScript = function (inputIndex, redeemScript) {
|
|
140
168
|
this.setInput(inputIndex, psbtIn.REDEEM_SCRIPT, b(), redeemScript);
|
|
141
169
|
};
|
|
@@ -143,6 +171,8 @@ var PsbtV2 = /** @class */ (function () {
|
|
|
143
171
|
return this.getInputOptional(inputIndex, psbtIn.REDEEM_SCRIPT, b());
|
|
144
172
|
};
|
|
145
173
|
PsbtV2.prototype.setInputBip32Derivation = function (inputIndex, pubkey, masterFingerprint, path) {
|
|
174
|
+
if (pubkey.length != 33)
|
|
175
|
+
throw new Error("Invalid pubkey length: " + pubkey.length);
|
|
146
176
|
this.setInput(inputIndex, psbtIn.BIP32_DERIVATION, pubkey, this.encodeBip32Derivation(masterFingerprint, path));
|
|
147
177
|
};
|
|
148
178
|
PsbtV2.prototype.getInputBip32Derivation = function (inputIndex, pubkey) {
|
|
@@ -189,6 +219,8 @@ var PsbtV2 = /** @class */ (function () {
|
|
|
189
219
|
return this.getInputOptional(inputIndex, psbtIn.TAP_KEY_SIG, b());
|
|
190
220
|
};
|
|
191
221
|
PsbtV2.prototype.setInputTapBip32Derivation = function (inputIndex, pubkey, hashes, masterFingerprint, path) {
|
|
222
|
+
if (pubkey.length != 32)
|
|
223
|
+
throw new Error("Invalid pubkey length: " + pubkey.length);
|
|
192
224
|
var buf = this.encodeTapBip32Derivation(hashes, masterFingerprint, path);
|
|
193
225
|
this.setInput(inputIndex, psbtIn.TAP_BIP32_DERIVATION, pubkey, buf);
|
|
194
226
|
};
|
|
@@ -325,12 +357,6 @@ var PsbtV2 = /** @class */ (function () {
|
|
|
325
357
|
PsbtV2.prototype.setInput = function (index, keyType, keyData, value) {
|
|
326
358
|
set(this.getMap(index, this.inputMaps), keyType, keyData, value);
|
|
327
359
|
};
|
|
328
|
-
PsbtV2.prototype.getMap = function (index, maps) {
|
|
329
|
-
if (maps[index]) {
|
|
330
|
-
return maps[index];
|
|
331
|
-
}
|
|
332
|
-
return (maps[index] = new Map());
|
|
333
|
-
};
|
|
334
360
|
PsbtV2.prototype.getInput = function (index, keyType, keyData) {
|
|
335
361
|
return get(this.inputMaps[index], keyType, keyData, false);
|
|
336
362
|
};
|
|
@@ -343,8 +369,11 @@ var PsbtV2 = /** @class */ (function () {
|
|
|
343
369
|
PsbtV2.prototype.getOutput = function (index, keyType, keyData) {
|
|
344
370
|
return get(this.outputMaps[index], keyType, keyData, false);
|
|
345
371
|
};
|
|
346
|
-
PsbtV2.prototype.
|
|
347
|
-
|
|
372
|
+
PsbtV2.prototype.getMap = function (index, maps) {
|
|
373
|
+
if (maps[index]) {
|
|
374
|
+
return maps[index];
|
|
375
|
+
}
|
|
376
|
+
return (maps[index] = new Map());
|
|
348
377
|
};
|
|
349
378
|
PsbtV2.prototype.encodeBip32Derivation = function (masterFingerprint, path) {
|
|
350
379
|
var buf = new BufferWriter();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psbtv2.js","sourceRoot":"","sources":["../../src/newops/psbtv2.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"psbtv2.js","sourceRoot":"","sources":["../../src/newops/psbtv2.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/hw-app-btc",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.11.1",
|
|
4
4
|
"description": "Ledger Hardware Wallet Bitcoin Application API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"types": "lib/Btc.d.ts",
|
|
28
28
|
"license": "Apache-2.0",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@ledgerhq/hw-transport": "^6.
|
|
31
|
-
"@ledgerhq/logs": "^6.
|
|
30
|
+
"@ledgerhq/hw-transport": "^6.11.0",
|
|
31
|
+
"@ledgerhq/logs": "^6.10.0",
|
|
32
32
|
"bip32-path": "^0.4.2",
|
|
33
33
|
"bitcoinjs-lib": "^5.2.0",
|
|
34
34
|
"bs58": "^4.0.1",
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"watch": "bash ../../script/watch.sh",
|
|
46
46
|
"doc": "bash ../../script/doc.sh"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "483aa0521782ca2380c5b78db7559cdd6ec210c6"
|
|
49
49
|
}
|
package/src/Btc.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type Transport from "@ledgerhq/hw-transport";
|
|
2
|
-
import
|
|
3
|
-
import BtcNew from "./BtcNew";
|
|
2
|
+
import { pathStringToArray } from "./bip32";
|
|
3
|
+
import BtcNew, { canSupportApp } from "./BtcNew";
|
|
4
4
|
import BtcOld from "./BtcOld";
|
|
5
5
|
import type { CreateTransactionArg } from "./createTransaction";
|
|
6
6
|
import { getAppAndVersion } from "./getAppAndVersion";
|
|
@@ -66,7 +66,7 @@ export default class Btc {
|
|
|
66
66
|
*
|
|
67
67
|
* - p2sh format with 49' paths
|
|
68
68
|
*
|
|
69
|
-
* - bech32 format with
|
|
69
|
+
* - bech32 format with 84' paths
|
|
70
70
|
*
|
|
71
71
|
* - cashaddr in case of Bitcoin Cash
|
|
72
72
|
*
|
|
@@ -99,7 +99,39 @@ export default class Btc {
|
|
|
99
99
|
options = opts || {};
|
|
100
100
|
}
|
|
101
101
|
return this.getCorrectImpl().then((impl) => {
|
|
102
|
-
|
|
102
|
+
/**
|
|
103
|
+
* Definition: A "normal path" is a prefix of a standard path where all
|
|
104
|
+
* the hardened steps of the standard path are included. For example, the
|
|
105
|
+
* paths m/44'/1'/17' and m/44'/1'/17'/1 are normal paths, but m/44'/1'
|
|
106
|
+
* is not. m/'199/1'/17'/0/1 is not a normal path either.
|
|
107
|
+
*
|
|
108
|
+
* There's a compatiblity issue between old and new app: When exporting
|
|
109
|
+
* the key of a non-normal path with verify=false, the new app would
|
|
110
|
+
* return an error, whereas the old app would return the key.
|
|
111
|
+
*
|
|
112
|
+
* See
|
|
113
|
+
* https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md#get_extended_pubkey
|
|
114
|
+
*
|
|
115
|
+
* If format bech32m is used, we'll not use old, because it doesn't
|
|
116
|
+
* support it.
|
|
117
|
+
*
|
|
118
|
+
* When to use new (given the app supports it)
|
|
119
|
+
* * format is bech32m or
|
|
120
|
+
* * path is normal or
|
|
121
|
+
* * verify is true
|
|
122
|
+
*
|
|
123
|
+
* Otherwise use old.
|
|
124
|
+
*/
|
|
125
|
+
if (
|
|
126
|
+
impl instanceof BtcNew &&
|
|
127
|
+
options.format != "bech32m" &&
|
|
128
|
+
(!options.verify || options.verify == false) &&
|
|
129
|
+
!isPathNormal(path)
|
|
130
|
+
) {
|
|
131
|
+
return this.old().getWalletPublicKey(path, options);
|
|
132
|
+
} else {
|
|
133
|
+
return impl.getWalletPublicKey(path, options);
|
|
134
|
+
}
|
|
103
135
|
});
|
|
104
136
|
}
|
|
105
137
|
|
|
@@ -133,20 +165,21 @@ export default class Btc {
|
|
|
133
165
|
* * sequence is the sequence number to use for this input (when using RBF), or non present
|
|
134
166
|
* @param associatedKeysets is an array of BIP 32 paths pointing to the path to the private key used for each UTXO
|
|
135
167
|
* @param changePath is an optional BIP 32 path pointing to the path to the public key used to compute the change address
|
|
136
|
-
* @param outputScriptHex is the hexadecimal serialized outputs of the transaction to sign
|
|
168
|
+
* @param outputScriptHex is the hexadecimal serialized outputs of the transaction to sign, including leading vararg voutCount
|
|
137
169
|
* @param lockTime is the optional lockTime of the transaction to sign, or default (0)
|
|
138
170
|
* @param sigHashType is the hash type of the transaction to sign, or default (all)
|
|
139
|
-
* @param segwit is an optional boolean indicating wether to use segwit or not
|
|
171
|
+
* @param segwit is an optional boolean indicating wether to use segwit or not. This includes wrapped segwit.
|
|
140
172
|
* @param initialTimestamp is an optional timestamp of the function call to use for coins that necessitate timestamps only, (not the one that the tx will include)
|
|
141
173
|
* @param additionals list of additionnal options
|
|
142
174
|
*
|
|
143
175
|
* - "bech32" for spending native segwit outputs
|
|
176
|
+
* - "bech32m" for spending segwit v1+ outputs
|
|
144
177
|
* - "abc" for bch
|
|
145
178
|
* - "gold" for btg
|
|
146
179
|
* - "bipxxx" for using BIPxxx
|
|
147
180
|
* - "sapling" to indicate a zec transaction is supporting sapling (to be set over block 419200)
|
|
148
181
|
* @param expiryHeight is an optional Buffer for zec overwinter / sapling Txs
|
|
149
|
-
* @param useTrustedInputForSegwit trust inputs for segwit transactions
|
|
182
|
+
* @param useTrustedInputForSegwit trust inputs for segwit transactions. If app version >= 1.4.0 this should be true.
|
|
150
183
|
* @return the signed transaction ready to be broadcast
|
|
151
184
|
* @example
|
|
152
185
|
btc.createTransaction({
|
|
@@ -245,27 +278,65 @@ export default class Btc {
|
|
|
245
278
|
);
|
|
246
279
|
}
|
|
247
280
|
|
|
248
|
-
//
|
|
281
|
+
// cache the underlying implementation (only once)
|
|
282
|
+
private _lazyImpl: BtcOld | BtcNew | null = null;
|
|
249
283
|
private async getCorrectImpl(): Promise<BtcOld | BtcNew> {
|
|
250
|
-
const
|
|
251
|
-
if (
|
|
252
|
-
|
|
253
|
-
|
|
284
|
+
const { _lazyImpl } = this;
|
|
285
|
+
if (_lazyImpl) return _lazyImpl;
|
|
286
|
+
const impl = await this.inferCorrectImpl();
|
|
287
|
+
this._lazyImpl = impl;
|
|
288
|
+
return impl;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
private async inferCorrectImpl(): Promise<BtcOld | BtcNew> {
|
|
292
|
+
const appAndVersion = await getAppAndVersion(this.transport);
|
|
293
|
+
const canUseNewImplementation = canSupportApp(appAndVersion);
|
|
294
|
+
if (!canUseNewImplementation) {
|
|
254
295
|
return this.old();
|
|
296
|
+
} else {
|
|
297
|
+
return this.new();
|
|
255
298
|
}
|
|
256
299
|
}
|
|
257
|
-
|
|
300
|
+
|
|
301
|
+
protected old(): BtcOld {
|
|
258
302
|
return new BtcOld(this.transport);
|
|
259
303
|
}
|
|
260
|
-
|
|
304
|
+
|
|
305
|
+
protected new(): BtcNew {
|
|
261
306
|
return new BtcNew(new AppClient(this.transport));
|
|
262
307
|
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
function isPathNormal(path: string): boolean {
|
|
311
|
+
//path is not deepest hardened node of a standard path or deeper, use BtcOld
|
|
312
|
+
const h = 0x80000000;
|
|
313
|
+
const pathElems = pathStringToArray(path);
|
|
314
|
+
|
|
315
|
+
const hard = (n: number) => n > h;
|
|
316
|
+
const soft = (n: number | undefined) => !n || n < h;
|
|
317
|
+
|
|
318
|
+
if (
|
|
319
|
+
pathElems.length >= 3 &&
|
|
320
|
+
pathElems.length <= 5 &&
|
|
321
|
+
[44 + h, 49 + h, 84 + h, 86 + h].some((v) => v == pathElems[0]) &&
|
|
322
|
+
[0 + h, 1 + h].some((v) => v == pathElems[1]) &&
|
|
323
|
+
hard(pathElems[2]) &&
|
|
324
|
+
soft(pathElems[3]) &&
|
|
325
|
+
soft(pathElems[4])
|
|
326
|
+
) {
|
|
327
|
+
return true;
|
|
328
|
+
}
|
|
329
|
+
if (
|
|
330
|
+
pathElems.length >= 4 &&
|
|
331
|
+
pathElems.length <= 6 &&
|
|
332
|
+
48 + h == pathElems[0] &&
|
|
333
|
+
[0 + h, 1 + h].some((v) => v == pathElems[1]) &&
|
|
334
|
+
hard(pathElems[2]) &&
|
|
335
|
+
hard(pathElems[3]) &&
|
|
336
|
+
soft(pathElems[4]) &&
|
|
337
|
+
soft(pathElems[5])
|
|
338
|
+
) {
|
|
339
|
+
return true;
|
|
270
340
|
}
|
|
341
|
+
return false;
|
|
271
342
|
}
|