bech32: sanity checks.

This commit is contained in:
Christopher Jeffrey 2017-05-13 16:23:32 -07:00
parent c1dbac3a4a
commit d64bffdd17
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -260,7 +260,16 @@ function convert(data, output, frombits, tobits, pad, off) {
function encode(hrp, version, hash) {
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);
}
@ -279,13 +288,19 @@ function decode(str) {
var data = result.data;
var version, hash, output;
if (data.length < 1)
if (data.length === 0 || data.length > 65)
throw new Error('Invalid bech32 data length.');
if (data[0] > 16)
throw new Error('Invalid bech32 version.');
version = data[0];
output = data;
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);
}