Install Algorand SDK:
$ go get -u github.com/algorand/go-algorand-sdk/...
import (
"crypto/ed25519"
"crypto/sha512"
"encoding/base64"
algocrypto "github.com/algorand/go-algorand-sdk/crypto"
"github.com/algorand/go-algorand-sdk/types"
)
func algoAddrToPublicKey(address string) (ed25519.PublicKey, error) {
addr, err := types.DecodeAddress(address)
if err != nil {
return nil, err
}
bytes := [sha512.Size256]byte(addr)
return ed25519.PublicKey(bytes[:]), nil
}
func main() {
addr := "<wallet address, 58 characters>"
pubKey, _ := algoAddrToPublicKey(addr)
msg := "message to sign"
// if raw sigature is base64 encoded, we need to decode it
sig, _ := base64.StdEncoding.DecodeString(rawSig)
valid := algocrypto.VerifyBytes(pubKey, []byte(msg), sig)
}
Top comments (0)