mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-25 06:06:44 +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
|
return 64, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
err := g.inner.X.SetBytesCanonical(buf[:32])
|
if err := g.inner.X.SetBytesCanonical(buf[:32]); err != nil {
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
err = g.inner.Y.SetBytesCanonical(buf[32:64])
|
if err := g.inner.Y.SetBytesCanonical(buf[32:64]); err != nil {
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -66,7 +64,6 @@ func (g *G1) Unmarshal(buf []byte) (int, error) {
|
||||||
if !g.inner.IsInSubGroup() {
|
if !g.inner.IsInSubGroup() {
|
||||||
return 0, errors.New("point is not in correct subgroup")
|
return 0, errors.New("point is not in correct subgroup")
|
||||||
}
|
}
|
||||||
|
|
||||||
return 64, nil
|
return 64, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -88,12 +85,10 @@ func (p *G1) Marshal() []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
func allZeroes(buf []byte) bool {
|
func allZeroes(buf []byte) bool {
|
||||||
isZero := true
|
for i := range buf {
|
||||||
for i := 0; i < len(buf); i++ {
|
|
||||||
if buf[i] != 0 {
|
if buf[i] != 0 {
|
||||||
isZero = false
|
return false
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return isZero
|
return true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,41 +31,34 @@ func (g *G2) Unmarshal(buf []byte) (int, error) {
|
||||||
return 0, errors.New("invalid G2 point size")
|
return 0, errors.New("invalid G2 point size")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if all coordinates are zero (point at infinity)
|
|
||||||
isZero := allZeroes(buf[0:128])
|
isZero := allZeroes(buf[0:128])
|
||||||
if isZero {
|
if isZero {
|
||||||
|
// point at infinity
|
||||||
g.inner.X.A0.SetZero()
|
g.inner.X.A0.SetZero()
|
||||||
g.inner.X.A1.SetZero()
|
g.inner.X.A1.SetZero()
|
||||||
g.inner.Y.A0.SetZero()
|
g.inner.Y.A0.SetZero()
|
||||||
g.inner.Y.A1.SetZero()
|
g.inner.Y.A1.SetZero()
|
||||||
return 128, nil
|
return 128, nil
|
||||||
}
|
}
|
||||||
|
if err := g.inner.X.A0.SetBytesCanonical(buf[0:32]); err != nil {
|
||||||
err := g.inner.X.A0.SetBytesCanonical(buf[0:32])
|
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
err = g.inner.X.A1.SetBytesCanonical(buf[32:64])
|
if err := g.inner.X.A1.SetBytesCanonical(buf[32:64]); err != nil {
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
err = g.inner.Y.A0.SetBytesCanonical(buf[64:96])
|
if err := g.inner.Y.A0.SetBytesCanonical(buf[64:96]); err != nil {
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
err = g.inner.Y.A1.SetBytesCanonical(buf[96:128])
|
if err := g.inner.Y.A1.SetBytesCanonical(buf[96:128]); err != nil {
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if !g.inner.IsOnCurve() {
|
if !g.inner.IsOnCurve() {
|
||||||
return 0, errors.New("point is not on curve")
|
return 0, errors.New("point is not on curve")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !g.inner.IsInSubGroup() {
|
if !g.inner.IsInSubGroup() {
|
||||||
return 0, errors.New("point is not in correct subgroup")
|
return 0, errors.New("point is not in correct subgroup")
|
||||||
}
|
}
|
||||||
|
|
||||||
return 128, nil
|
return 128, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue