base58

Pure Haskell base58, base58check encoding/decoding (docs.ppad.tech/base58).
git clone git://git.ppad.tech/base58.git
Log | Files | Refs | README | LICENSE

commit b36e36e9dfbd793dec2908b3640394b8f47860db
parent 6cfa6b51774c195c6c637483593b08e3885eb352
Author: Jared Tobin <jared@jtobin.io>
Date:   Sat, 10 Oct 2026 15:24:32 +0400

lib: require a full checksum in base58check decode

Diffstat:
Mlib/Data/ByteString/Base58Check.hs | 3++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/Data/ByteString/Base58Check.hs b/lib/Data/ByteString/Base58Check.hs @@ -40,7 +40,8 @@ decode :: BS.ByteString -> Maybe BS.ByteString decode mb = do bs <- B58.decode mb let len = BS.length bs - (pay, kek) = BS.splitAt (len - 4) bs + guard (len >= 4) + let (pay, kek) = BS.splitAt (len - 4) bs man = BS.take 4 (SHA256.hash (SHA256.hash pay)) guard (kek == man) pure pay