为什么以下使用go-secp256k1验证签名的代码失败?

时间:2019-04-30 20:38:40

标签: digital-signature go-ethereum

我正在测试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)

}

0 个答案:

没有答案