Skip to content

[CODEC-340] Fix Base58 custom alphabet handling#437

Open
OldTruckDriver wants to merge 1 commit into
apache:masterfrom
OldTruckDriver:fix/CODEC-340_base58_custom_alphabet
Open

[CODEC-340] Fix Base58 custom alphabet handling#437
OldTruckDriver wants to merge 1 commit into
apache:masterfrom
OldTruckDriver:fix/CODEC-340_base58_custom_alphabet

Conversation

@OldTruckDriver

Copy link
Copy Markdown

Summary

Fix Base58.Builder#setEncodeTable(byte...) so custom Base58 alphabets are used consistently for encoding, decoding, leading zero handling, and alphabet checks.

Details

Previously, the builder accepted a custom encode table, but Base58 still used the built-in static encode/decode tables internally. This meant custom alphabets were silently ignored.

This change derives a matching decode table from custom 58-byte alphabets, validates alphabet length and duplicate entries, and uses the configured alphabet throughout Base58 operations.

Tests

  • mvn -q -Dtest=org.apache.commons.codec.binary.Base58Test test
  • mvn -q '-Dtest=org.apache.commons.codec.binary.Base58*Test' test
  • mvn -q javadoc:javadoc
  • mvn -q

Derive a matching decode table from custom Base58 encode tables and use the configured tables when encoding, decoding, and checking the alphabet.

Handle leading zero bytes with the first entry of the configured alphabet instead of hard-coding '1'.

Reviewed-by: OpenAI Codex
Reviewed-by: Anthropic Claude Code
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant