mirror of
https://github.com/btcsuite/btcd.git
synced 2024-11-19 01:40:07 +01:00
btcutil/bech32: Added DecodeNoLimitWithVersion
This exposes publicly the ability to decode arbitrary-length bech32 strings and return the bech32 version that was used in the encoding. It provides the underlying functionality for both DecodeNoLimit and DecodeGeneric.
This commit is contained in:
parent
6b197d38d7
commit
2492b01f69
@ -165,11 +165,14 @@ func bech32VerifyChecksum(hrp string, data []byte) (Version, bool) {
|
||||
return VersionUnknown, false
|
||||
}
|
||||
|
||||
// DecodeNoLimit is a bech32 checksum version aware arbitrary string length
|
||||
// decoder. This function will return the version of the decoded checksum
|
||||
// constant so higher level validation can be performed to ensure the correct
|
||||
// version of bech32 was used when encoding.
|
||||
func decodeNoLimit(bech string) (string, []byte, Version, error) {
|
||||
// DecodeNoLimitWithVersion is a bech32 checksum version aware arbitrary string
|
||||
// length decoder. This function will return the version of the decoded
|
||||
// checksum constant so higher level validation can be performed to ensure the
|
||||
// correct version of bech32 was used when encoding.
|
||||
//
|
||||
// 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
|
||||
// needs a non-empty HRP, a separator, and a 6 character checksum.
|
||||
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
|
||||
// part will be lowercase.
|
||||
func DecodeNoLimit(bech string) (string, []byte, error) {
|
||||
hrp, data, _, err := decodeNoLimit(bech)
|
||||
hrp, data, _, err := DecodeNoLimitWithVersion(bech)
|
||||
return hrp, data, err
|
||||
}
|
||||
|
||||
@ -277,7 +280,7 @@ func Decode(bech string) (string, []byte, error) {
|
||||
return "", nil, ErrInvalidLength(len(bech))
|
||||
}
|
||||
|
||||
hrp, data, _, err := decodeNoLimit(bech)
|
||||
hrp, data, _, err := DecodeNoLimitWithVersion(bech)
|
||||
return hrp, data, err
|
||||
}
|
||||
|
||||
@ -291,7 +294,7 @@ func DecodeGeneric(bech string) (string, []byte, Version, error) {
|
||||
return "", nil, VersionUnknown, ErrInvalidLength(len(bech))
|
||||
}
|
||||
|
||||
return decodeNoLimit(bech)
|
||||
return DecodeNoLimitWithVersion(bech)
|
||||
}
|
||||
|
||||
// encodeGeneric is the base bech32 encoding function that is aware of the
|
||||
|
Loading…
Reference in New Issue
Block a user