mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-24 21:56:43 +00:00
Apply felix diff
Co-authored-by: Felix Lange <fjl@twurst.com>
This commit is contained in:
parent
5fc7fcdbf8
commit
d2bcbab38d
2 changed files with 10 additions and 22 deletions
|
|
@ -51,12 +51,10 @@ func (g *G1) Unmarshal(buf []byte) (int, error) {
|
|||
return 64, nil
|
||||
}
|
||||
|
||||
err := g.inner.X.SetBytesCanonical(buf[:32])
|
||||
if err != nil {
|
||||
if err := g.inner.X.SetBytesCanonical(buf[:32]); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
err = g.inner.Y.SetBytesCanonical(buf[32:64])
|
||||
if err != nil {
|
||||
if err := g.inner.Y.SetBytesCanonical(buf[32:64]); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
|
|
@ -66,7 +64,6 @@ func (g *G1) Unmarshal(buf []byte) (int, error) {
|
|||
if !g.inner.IsInSubGroup() {
|
||||
return 0, errors.New("point is not in correct subgroup")
|
||||
}
|
||||
|
||||
return 64, nil
|
||||
}
|
||||
|
||||
|
|
@ -88,12 +85,10 @@ func (p *G1) Marshal() []byte {
|
|||
}
|
||||
|
||||
func allZeroes(buf []byte) bool {
|
||||
isZero := true
|
||||
for i := 0; i < len(buf); i++ {
|
||||
for i := range buf {
|
||||
if buf[i] != 0 {
|
||||
isZero = false
|
||||
break
|
||||
return false
|
||||
}
|
||||
}
|
||||
return isZero
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,41 +31,34 @@ func (g *G2) Unmarshal(buf []byte) (int, error) {
|
|||
return 0, errors.New("invalid G2 point size")
|
||||
}
|
||||
|
||||
// Check if all coordinates are zero (point at infinity)
|
||||
isZero := allZeroes(buf[0:128])
|
||||
if isZero {
|
||||
// point at infinity
|
||||
g.inner.X.A0.SetZero()
|
||||
g.inner.X.A1.SetZero()
|
||||
g.inner.Y.A0.SetZero()
|
||||
g.inner.Y.A1.SetZero()
|
||||
return 128, nil
|
||||
}
|
||||
|
||||
err := g.inner.X.A0.SetBytesCanonical(buf[0:32])
|
||||
if err != nil {
|
||||
if err := g.inner.X.A0.SetBytesCanonical(buf[0:32]); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
err = g.inner.X.A1.SetBytesCanonical(buf[32:64])
|
||||
if err != nil {
|
||||
if err := g.inner.X.A1.SetBytesCanonical(buf[32:64]); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
err = g.inner.Y.A0.SetBytesCanonical(buf[64:96])
|
||||
if err != nil {
|
||||
if err := g.inner.Y.A0.SetBytesCanonical(buf[64:96]); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
err = g.inner.Y.A1.SetBytesCanonical(buf[96:128])
|
||||
if err != nil {
|
||||
if err := g.inner.Y.A1.SetBytesCanonical(buf[96:128]); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if !g.inner.IsOnCurve() {
|
||||
return 0, errors.New("point is not on curve")
|
||||
}
|
||||
|
||||
if !g.inner.IsInSubGroup() {
|
||||
return 0, errors.New("point is not in correct subgroup")
|
||||
}
|
||||
|
||||
return 128, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue