Skip to content

Commit a51d7d6

Browse files
authored
Merge pull request #1884 from jafri/master
Handle custom signature hash type - sig length
2 parents 52559f8 + 37e3478 commit a51d7d6

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

src/payments/p2tr.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@ function p2tr(a, opts) {
3131
internalPubkey: types_1.typeforce.maybe(types_1.typeforce.BufferN(32)),
3232
hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(32)),
3333
pubkey: types_1.typeforce.maybe(types_1.typeforce.BufferN(32)),
34-
signature: types_1.typeforce.maybe(types_1.typeforce.BufferN(64)),
34+
signature: types_1.typeforce.maybe(
35+
types_1.typeforce.anyOf(
36+
types_1.typeforce.BufferN(64),
37+
types_1.typeforce.BufferN(65),
38+
),
39+
),
3540
witness: types_1.typeforce.maybe(
3641
types_1.typeforce.arrayOf(types_1.typeforce.Buffer),
3742
),

test/fixtures/psbt.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -767,6 +767,19 @@
767767
"WIF": "KxnAnQh6UJBxLF8Weup77yn8tWhLHhDhnXeyJuzmmcZA5aRdMJni"
768768
}
769769
},
770+
{
771+
"description": "checks taproot signing works when using custom signature type of 65 bytes",
772+
"isTaproot": true,
773+
"shouldSign": {
774+
"psbt": "cHNidP8BAF4CAAAAAf17fGksrz9eKGx1nSU3RX4vcwr7bfNdQzPZ9dSEkWBcAAAAAAD/////AZBBBgAAAAAAIlEgPLBe/d3922lmXjTIt52b9NG1HFDC9jzPCTn111AG8TQAAAAAAAEBK6BoBgAAAAAAIlEgPLBe/d3922lmXjTIt52b9NG1HFDC9jzPCTn111AG8TQBAwSDAAAAARcgWzC4qnD37J3WaDEbZPRihBXdI0gN68BGutJykDcHR6wBGCDlDrX1cnzwZvmcyLBH8M6NiS9lk7JVwM58wZZVOzmuMwAA",
775+
"sighashTypes": [
776+
131
777+
],
778+
"inputToCheck": 0,
779+
"WIF": "KypUz2y1jdgzM8HGDUx9DYLmyzd8EWhruvLX2J5iSL7MiAcc7dBG",
780+
"result": "cHNidP8BAF4CAAAAAf17fGksrz9eKGx1nSU3RX4vcwr7bfNdQzPZ9dSEkWBcAAAAAAD/////AZBBBgAAAAAAIlEgPLBe/d3922lmXjTIt52b9NG1HFDC9jzPCTn111AG8TQAAAAAAAEBK6BoBgAAAAAAIlEgPLBe/d3922lmXjTIt52b9NG1HFDC9jzPCTn111AG8TQBAwSDAAAAARNBqgjqjSQVTf41zgZ1H9Lq3CKQt0nq1APST8FpwGifNjyUHMS0MbFnIxA70SXTEOoSJePyOXTW+u59fzLpxekL2oMBFyBbMLiqcPfsndZoMRtk9GKEFd0jSA3rwEa60nKQNwdHrAEYIOUOtfVyfPBm+ZzIsEfwzo2JL2WTslXAznzBllU7Oa4zAAA="
781+
}
782+
},
770783
{
771784
"description": "checks taproot key-path signer (tweaked key) matches internal tap key",
772785
"isTaproot": true,
@@ -908,4 +921,4 @@
908921
"clone": {
909922
"psbt": "cHNidP8BAKYCAAAAAlwKQ3suPWwEJ/zQ9sZsIioOcHKU1KoLMxlMNSXVIkEWAAAAAAD/////YYDJMap+mYgbTrCNAdpWHN+EkKvl+XYao/6co/EQfwMAAAAAAP////8CkF8BAAAAAAAWABRnPBAmVHz2HL+8/1U+QG5L2thjmjhKAAAAAAAAIgAg700yfFRyhWzQnPHIUb/XQqsjlpf4A0uw682pCVWuQ8IAAAAAAAEBKzB1AAAAAAAAIgAgth9oE4cDfC5aV58VgkW5CptHsIxppYzJV8C5kT6aTo8iAgNfNgnFnEPS9s4PY/I5bezpWiAEzQ4DRTASgdSdeMM06UgwRQIhALO0xRpuqP3aVkm+DPykrtqe6fPNSgNblp9K9MAwmtHJAiAHV5ZvZN8Vi49n/o9ISFyvtHsPXXPKqBxC9m2m2HlpYgEBBSMhA182CcWcQ9L2zg9j8jlt7OlaIATNDgNFMBKB1J14wzTprAABASuAOAEAAAAAACIAILYfaBOHA3wuWlefFYJFuQqbR7CMaaWMyVfAuZE+mk6PIgIDXzYJxZxD0vbOD2PyOW3s6VogBM0OA0UwEoHUnXjDNOlIMEUCIQC6XN6tpo9mYlZej4BXSSh5D1K6aILBfQ4WBWXUrISx6wIgVaxFUsz8y59xJ1V4sZ1qarHX9pZ+MJmLKbl2ZSadisoBAQUjIQNfNgnFnEPS9s4PY/I5bezpWiAEzQ4DRTASgdSdeMM06awAAAA="
910923
}
911-
}
924+
}

ts_src/payments/p2tr.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export function p2tr(a: Payment, opts?: PaymentOpts): Payment {
4040
internalPubkey: typef.maybe(typef.BufferN(32)),
4141
hash: typef.maybe(typef.BufferN(32)), // merkle root hash, the tweak
4242
pubkey: typef.maybe(typef.BufferN(32)), // tweaked with `hash` from `internalPubkey`
43-
signature: typef.maybe(typef.BufferN(64)),
43+
signature: typef.maybe(typef.anyOf(typef.BufferN(64), typef.BufferN(65))),
4444
witness: typef.maybe(typef.arrayOf(typef.Buffer)),
4545
scriptTree: typef.maybe(isTaptree),
4646
redeem: typef.maybe({

0 commit comments

Comments
 (0)