Почему следующий код, который проверяет подпись с помощью go-secp256k1, не работает? - PullRequest
0 голосов
/ 30 апреля 2019

Я тестирую пакет 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)

}
...