github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/gomobile/walletutil/address.go (about) 1 package walletutil 2 3 import ( 4 "fmt" 5 "github.com/sixexorg/magnetic-ring/account" 6 "github.com/sixexorg/magnetic-ring/common" 7 "github.com/sixexorg/magnetic-ring/crypto" 8 ) 9 10 func ToAddress(pubkbufstr string) string { 11 12 pubkbuf,err := common.Hex2Bytes(pubkbufstr) 13 if err != nil { 14 return "hex 2 bytes error" 15 } 16 17 hash := common.Sha256Ripemd160(pubkbuf) 18 19 addr := common.BytesToAddress(hash,common.NormalAddress) 20 return addr.ToString() 21 } 22 23 24 func ToMagneticAddress(pubkbufstr string) string { 25 26 buf,err := common.Hex2Bytes(pubkbufstr) 27 if err != nil { 28 return "hex 2 bytes error" 29 } 30 31 pubk,err := crypto.UnmarshalPubkey(buf) 32 33 if err != nil { 34 return newErrorResp(err.Error()) 35 } 36 37 mult := account.MultiAccountUnit{1, []crypto.PublicKey{pubk}} 38 39 muls := make(account.MultiAccountUnits, 1) 40 muls[0] = mult 41 42 muladdress,err := muls.Address() 43 if err != nil { 44 return newErrorResp(err.Error()) 45 } 46 return newResp(fmt.Sprintf("%s", muladdress.ToString())) 47 }