Files
icicle/wrappers/golang/core/internal/curve.go
2024-02-22 20:52:48 +02:00

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(),
}
}