Compare commits

..

1 Commits
v0.0.3 ... main

Author SHA1 Message Date
anon
54bdad99f1 check checksum in NewFromBase58 2024-12-28 17:25:50 -03:00

View File

@ -1,6 +1,7 @@
package address
import (
"bytes"
"crypto/ecdsa"
"crypto/sha256"
"encoding/hex"
@ -77,16 +78,22 @@ func NewFromHex(s string) (Address, error) {
}
func NewFromBase58(s string) (Address, error) {
bytes, err := base58.Decode(s)
b, err := base58.Decode(s)
if err != nil {
return Address{}, err
}
if len(bytes) != 25 {
return Address{}, fmt.Errorf("tron address is not 25 bytes but %d", len(bytes))
if len(b) != 25 {
return Address{}, fmt.Errorf("tron address is not 25 bytes but %d", len(b))
}
return *(*[21]byte)(bytes[:21]), nil
hash := SHA256(SHA256(b[:21]))
checksum := hash[:4]
if !bytes.Equal(checksum, b[21:]) {
return Address{}, fmt.Errorf("invalid checksum")
}
return *(*[21]byte)(b[:21]), nil
}
func NewFromString(s string) (Address, error) {