Apply felix diff

Co-authored-by: Felix Lange <fjl@twurst.com>
This commit is contained in:
Kevaundray Wedderburn 2025-06-17 15:49:56 +02:00
parent 5fc7fcdbf8
commit d2bcbab38d
2 changed files with 10 additions and 22 deletions

View file

@ -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
} }

View file

@ -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
} }