bech32: sanity checks.
This commit is contained in:
parent
c1dbac3a4a
commit
d64bffdd17
@ -260,7 +260,16 @@ function convert(data, output, frombits, tobits, pad, off) {
|
|||||||
|
|
||||||
function encode(hrp, version, hash) {
|
function encode(hrp, version, hash) {
|
||||||
var output = POOL65;
|
var output = POOL65;
|
||||||
var data = convert(hash, output, 8, 5, version, 0);
|
var data;
|
||||||
|
|
||||||
|
if (version < 0 || version > 16)
|
||||||
|
throw new Error('Invalid bech32 version.');
|
||||||
|
|
||||||
|
if (hash.length < 2 || hash.length > 40)
|
||||||
|
throw new Error('Invalid bech32 data length.');
|
||||||
|
|
||||||
|
data = convert(hash, output, 8, 5, version, 0);
|
||||||
|
|
||||||
return serialize(hrp, data);
|
return serialize(hrp, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,13 +288,19 @@ function decode(str) {
|
|||||||
var data = result.data;
|
var data = result.data;
|
||||||
var version, hash, output;
|
var version, hash, output;
|
||||||
|
|
||||||
if (data.length < 1)
|
if (data.length === 0 || data.length > 65)
|
||||||
throw new Error('Invalid bech32 data length.');
|
throw new Error('Invalid bech32 data length.');
|
||||||
|
|
||||||
|
if (data[0] > 16)
|
||||||
|
throw new Error('Invalid bech32 version.');
|
||||||
|
|
||||||
version = data[0];
|
version = data[0];
|
||||||
output = data;
|
output = data;
|
||||||
hash = convert(data, output, 5, 8, -1, 1);
|
hash = convert(data, output, 5, 8, -1, 1);
|
||||||
|
|
||||||
|
if (hash.length < 2 || hash.length > 40)
|
||||||
|
throw new Error('Invalid bech32 data length.');
|
||||||
|
|
||||||
return new AddrResult(hrp, version, hash);
|
return new AddrResult(hrp, version, hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user