crypto/elliptic:尝试在无效点上操作

问题描述 投票:0回答:0

我在对有效负载进行签名后使用

r
s
值,然后将其解码回签名。 首先,我使用

将字符串值转换为 bigInt
myBigInt := new(big.Int)
myBigInt.SetString(byteValue, 16)

然后我转换为签名

elliptic.Marshal(elliptic.P256(), &myBigIntR, &myBigIntS)

当我在本地执行此操作时,我没有任何问题。然后我将其推送到 github 并由 render.com 获取。但是在服务器上,我得到:

我收到:

Mar 15 05:36:31 PM  2023/03/15 17:36:31 http: panic serving : crypto/elliptic: attempted operation on invalid point
Mar 15 05:36:31 PM  goroutine 1252 [running]:
Mar 15 05:36:31 PM  net/http.(*conn).serve.func1()
Mar 15 05:36:31 PM      /usr/local/go/src/net/http/server.go:1854 +0xbf
Mar 15 05:36:31 PM  panic({0xc5ff40, 0xfaae70})
Mar 15 05:36:31 PM      /usr/local/go/src/runtime/panic.go:890 +0x263
Mar 15 05:36:31 PM  crypto/elliptic.panicIfNotOnCurve({0xfbc088?, 0x15d3950?}, 0x40?, 0xc000100400?)
Mar 15 05:36:31 PM      /usr/local/go/src/crypto/elliptic/elliptic.go:215 +0xa5
Mar 15 05:36:31 PM  crypto/elliptic.Marshal({0xfbc088, 0x15d3950}, 0x15d3950?, 0xc0002c2020?)
Mar 15 05:36:31 PM      /usr/local/go/src/crypto/elliptic/elliptic.go:105 +0x31

我不知道服务器版本和本地版本之间有什么不同。 有没有人遇到过这个。谷歌并没有太多阻碍我可能会提出的明显问题。

go cryptography elliptic-curve
© www.soinside.com 2019 - 2024. All rights reserved.