Skip to content

Commit 3ffac6c

Browse files
committed
add witnessPubKeyHash compressed policy
1 parent 5057d8d commit 3ffac6c

File tree

2 files changed

+43
-7
lines changed

2 files changed

+43
-7
lines changed

src/templates/pubkeyhash/input.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// {signature} {pubKey}
22

33
var bscript = require('../../script')
4-
var types = require('../../types')
54
var typeforce = require('typeforce')
65

76
function check (script) {
@@ -15,9 +14,11 @@ check.toJSON = function () { return 'pubKeyHash input' }
1514

1615
function encodeStack (signature, pubKey) {
1716
typeforce({
18-
signature: types.Buffer, pubKey: types.Buffer
17+
signature: bscript.isCanonicalSignature,
18+
pubKey: bscript.isCanonicalPubKey
1919
}, {
20-
signature: signature, pubKey: pubKey
20+
signature: signature,
21+
pubKey: pubKey
2122
})
2223

2324
return [signature, pubKey]
Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,44 @@
11
// {signature} {pubKey}
22

3-
var pkh = require('../pubkeyhash/input')
3+
var bscript = require('../../script')
4+
var typeforce = require('typeforce')
5+
6+
function isCompressedCanonicalPubKey (pubKey) {
7+
return bscript.isCanonicalPubKey(pubKey) && pubKey.length === 33
8+
}
9+
10+
function check (script) {
11+
var chunks = bscript.decompile(script)
12+
13+
return chunks.length === 2 &&
14+
bscript.isCanonicalSignature(chunks[0]) &&
15+
isCompressedCanonicalPubKey(chunks[1])
16+
}
17+
check.toJSON = function () { return 'witnessPubKeyHash input' }
18+
19+
function encodeStack (signature, pubKey) {
20+
typeforce({
21+
signature: bscript.isCanonicalSignature,
22+
pubKey: isCompressedCanonicalPubKey
23+
}, {
24+
signature: signature,
25+
pubKey: pubKey
26+
})
27+
28+
return [signature, pubKey]
29+
}
30+
31+
function decodeStack (stack) {
32+
typeforce(check, stack)
33+
34+
return {
35+
signature: stack[0],
36+
pubKey: stack[1]
37+
}
38+
}
439

540
module.exports = {
6-
check: pkh.check,
7-
decodeStack: pkh.decodeStack,
8-
encodeStack: pkh.encodeStack
41+
check: check,
42+
decodeStack: decodeStack,
43+
encodeStack: encodeStack
944
}

0 commit comments

Comments
 (0)