From ccac24a5b0a4d07a4b639c1c4d0a44703e32d418 Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Tue, 2 Jan 2024 19:11:11 -0500 Subject: [PATCH] Fix Base58 padding for string representation of binary data (#4527). --- src.ts/utils/base58.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src.ts/utils/base58.ts b/src.ts/utils/base58.ts index eac103477c..b71f99d377 100644 --- a/src.ts/utils/base58.ts +++ b/src.ts/utils/base58.ts @@ -42,12 +42,21 @@ const BN_58 = BigInt(58); * Encode %%value%% as a Base58-encoded string. */ export function encodeBase58(_value: BytesLike): string { - let value = toBigInt(getBytes(_value)); + const bytes = getBytes(_value); + + let value = toBigInt(bytes); let result = ""; while (value) { result = Alphabet[Number(value % BN_58)] + result; value /= BN_58; } + + // Account for leading padding zeros + for (let i = 0; i < bytes.length; i++) { + if (bytes[i]) { break; } + result = Alphabet[0] + result; + } + return result; }