Я тестирую пакет go-secp156k1 и каким-то образом следующий простой код, который проверяет подпись, не удалось. Кто-нибудь может помочь указать, что здесь пошло не так?
package main
import (
"crypto/ecdsa"
"crypto/rand"
"crypto/sha256"
"fmt"
"github.com/ethereum/go-ethereum/crypto"
)
func main() {
privateKey, err := ecdsa.GenerateKey(crypto.S256(), rand.Reader)
if err != nil {
panic(err)
}
msg := "hello, world"
hash := sha256.Sum256([]byte(msg))
sig, err := crypto.Sign(hash[:], privateKey)
if err != nil {
panic(err)
}
fmt.Printf("signature: (0x%x)\n", sig)
valid := crypto.VerifySignature(crypto.CompressPubkey(&privateKey.PublicKey), hash[:], sig)
fmt.Println("signature verified:", valid)
}