Merge pull request #2186 from MarcoEzekiel/DecodeNoLimitVersioned

Added DecodeNoLimitGeneric to bech32.go
This commit is contained in:
Oliver Gugger 2024-05-24 08:38:32 +02:00 committed by GitHub
commit d2d286f683
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -165,11 +165,14 @@ func bech32VerifyChecksum(hrp string, data []byte) (Version, bool) {
return VersionUnknown, false return VersionUnknown, false
} }
// DecodeNoLimit is a bech32 checksum version aware arbitrary string length // DecodeNoLimitWithVersion is a bech32 checksum version aware arbitrary string
// decoder. This function will return the version of the decoded checksum // length decoder. This function will return the version of the decoded
// constant so higher level validation can be performed to ensure the correct // checksum constant so higher level validation can be performed to ensure the
// version of bech32 was used when encoding. // correct version of bech32 was used when encoding.
func decodeNoLimit(bech string) (string, []byte, Version, error) { //
// Note that the returned data is 5-bit (base32) encoded and the human-readable
// part will be lowercase.
func DecodeNoLimitWithVersion(bech string) (string, []byte, Version, error) {
// The minimum allowed size of a bech32 string is 8 characters, since it // The minimum allowed size of a bech32 string is 8 characters, since it
// needs a non-empty HRP, a separator, and a 6 character checksum. // needs a non-empty HRP, a separator, and a 6 character checksum.
if len(bech) < 8 { if len(bech) < 8 {
@ -262,7 +265,7 @@ func decodeNoLimit(bech string) (string, []byte, Version, error) {
// Note that the returned data is 5-bit (base32) encoded and the human-readable // Note that the returned data is 5-bit (base32) encoded and the human-readable
// part will be lowercase. // part will be lowercase.
func DecodeNoLimit(bech string) (string, []byte, error) { func DecodeNoLimit(bech string) (string, []byte, error) {
hrp, data, _, err := decodeNoLimit(bech) hrp, data, _, err := DecodeNoLimitWithVersion(bech)
return hrp, data, err return hrp, data, err
} }
@ -277,7 +280,7 @@ func Decode(bech string) (string, []byte, error) {
return "", nil, ErrInvalidLength(len(bech)) return "", nil, ErrInvalidLength(len(bech))
} }
hrp, data, _, err := decodeNoLimit(bech) hrp, data, _, err := DecodeNoLimitWithVersion(bech)
return hrp, data, err return hrp, data, err
} }
@ -291,7 +294,7 @@ func DecodeGeneric(bech string) (string, []byte, Version, error) {
return "", nil, VersionUnknown, ErrInvalidLength(len(bech)) return "", nil, VersionUnknown, ErrInvalidLength(len(bech))
} }
return decodeNoLimit(bech) return DecodeNoLimitWithVersion(bech)
} }
// encodeGeneric is the base bech32 encoding function that is aware of the // encodeGeneric is the base bech32 encoding function that is aware of the