mirror of
https://github.com/pseXperiments/icicle.git
synced 2026-01-07 22:53:56 -05:00
77 lines
1.1 KiB
Go
77 lines
1.1 KiB
Go
package internal
|
|
|
|
type MockProjective struct {
|
|
X, Y, Z MockField
|
|
}
|
|
|
|
func (p MockProjective) Size() int {
|
|
return p.X.Size() * 3
|
|
}
|
|
|
|
func (p MockProjective) AsPointer() *uint32 {
|
|
return p.X.AsPointer()
|
|
}
|
|
|
|
func (p *MockProjective) Zero() MockProjective {
|
|
p.X.Zero()
|
|
p.Y.One()
|
|
p.Z.Zero()
|
|
|
|
return *p
|
|
}
|
|
|
|
func (p *MockProjective) FromLimbs(x, y, z []uint32) MockProjective {
|
|
p.X.FromLimbs(x)
|
|
p.Y.FromLimbs(y)
|
|
p.Z.FromLimbs(z)
|
|
|
|
return *p
|
|
}
|
|
|
|
func (p *MockProjective) FromAffine(a MockAffine) MockProjective {
|
|
z := MockField{}
|
|
z.One()
|
|
|
|
p.X = a.X
|
|
p.Y = a.Y
|
|
p.Z = z
|
|
|
|
return *p
|
|
}
|
|
|
|
type MockAffine struct {
|
|
X, Y MockField
|
|
}
|
|
|
|
func (a MockAffine) Size() int {
|
|
return a.X.Size() * 2
|
|
}
|
|
|
|
func (a MockAffine) AsPointer() *uint32 {
|
|
return a.X.AsPointer()
|
|
}
|
|
|
|
func (a *MockAffine) Zero() MockAffine {
|
|
a.X.Zero()
|
|
a.Y.Zero()
|
|
|
|
return *a
|
|
}
|
|
|
|
func (a *MockAffine) FromLimbs(x, y []uint32) MockAffine {
|
|
a.X.FromLimbs(x)
|
|
a.Y.FromLimbs(y)
|
|
|
|
return *a
|
|
}
|
|
|
|
func (a MockAffine) ToProjective() MockProjective {
|
|
var z MockField
|
|
|
|
return MockProjective{
|
|
X: a.X,
|
|
Y: a.Y,
|
|
Z: z.One(),
|
|
}
|
|
}
|