Skip to content

Commit 81ced92

Browse files
committed
Add SetUint64 to Group.Scalar.
1 parent 0518755 commit 81ced92

File tree

4 files changed

+17
-1
lines changed

4 files changed

+17
-1
lines changed

group/group.go

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ type Element interface {
4545
// Scalar represents an integer scalar.
4646
type Scalar interface {
4747
IsEqual(Scalar) bool
48+
SetUint64(uint64)
4849
Add(Scalar, Scalar) Scalar
4950
Sub(Scalar, Scalar) Scalar
5051
Mul(Scalar, Scalar) Scalar

group/group_test.go

+11
Original file line numberDiff line numberDiff line change
@@ -183,18 +183,22 @@ func testScalar(t *testing.T, testTimes int, g group.Group) {
183183
d := g.NewScalar()
184184
e := g.NewScalar()
185185
f := g.NewScalar()
186+
one := g.NewScalar()
187+
one.SetUint64(1)
186188
params := g.Params()
187189
for i := 0; i < testTimes; i++ {
188190
a := g.RandomScalar(rand.Reader)
189191
b := g.RandomScalar(rand.Reader)
190192
c.Add(a, b)
191193
d.Sub(a, b)
192194
e.Mul(c, d)
195+
e.Add(e, one)
193196

194197
c.Mul(a, a)
195198
d.Mul(b, b)
196199
d.Neg(d)
197200
f.Add(c, d)
201+
f.Add(f, one)
198202
enc1, err1 := e.MarshalBinary()
199203
enc2, err2 := f.MarshalBinary()
200204
if err1 != nil || err2 != nil || !bytes.Equal(enc1, enc2) {
@@ -204,6 +208,13 @@ func testScalar(t *testing.T, testTimes int, g group.Group) {
204208
test.ReportError(t, l, params.ScalarLength)
205209
}
206210
}
211+
212+
a := g.RandomScalar(rand.Reader)
213+
c.Inv(a)
214+
c.Mul(c, a)
215+
if !one.IsEqual(c) {
216+
test.ReportError(t, c, one, a)
217+
}
207218
}
208219

209220
func BenchmarkElement(b *testing.B) {

group/ristretto255.go

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"crypto"
55
_ "crypto/sha512" // to link libraries
66
"io"
7+
"math/big"
78

89
r255 "github.com/bwesterb/go-ristretto"
910
)
@@ -145,6 +146,8 @@ func (e *ristrettoElement) UnmarshalBinary(data []byte) error {
145146
return e.p.UnmarshalBinary(data)
146147
}
147148

149+
func (s *ristrettoScalar) SetUint64(n uint64) { s.s.SetBigInt(new(big.Int).SetUint64(n)) }
150+
148151
func (s *ristrettoScalar) IsEqual(x Scalar) bool {
149152
return s.s.Equals(&x.(*ristrettoScalar).s)
150153
}

group/short.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,8 @@ type wScl struct {
195195
k []byte
196196
}
197197

198-
func (s *wScl) String() string { return fmt.Sprintf("0x%x", s.k) }
198+
func (s *wScl) String() string { return fmt.Sprintf("0x%x", s.k) }
199+
func (s *wScl) SetUint64(n uint64) { s.fromBig(new(big.Int).SetUint64(n)) }
199200
func (s *wScl) IsEqual(a Scalar) bool {
200201
aa := s.cvtScl(a)
201202
return subtle.ConstantTimeCompare(s.k, aa.k) == 1

0 commit comments

Comments
 (0)