From 2f2f1c01113a89e1071327161f029ad5ce63bf9b Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 15 May 2019 14:26:17 -0400 Subject: [PATCH] ristretto255: add NewElement and NewScalar --- ristretto255.go | 8 +++++--- scalar.go | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ristretto255.go b/ristretto255.go index d8f9535..66d80d2 100644 --- a/ristretto255.go +++ b/ristretto255.go @@ -36,13 +36,15 @@ var ( ) // Element is an element of the ristretto255 prime-order group. -// -// The zero value of Element is not valid, but can be used as the receiver for -// any setting operation. type Element struct { r edwards25519.ProjP3 } +// NewElement returns a new Element set to the identity value. +func NewElement() *Element { + return (&Element{}).Zero() +} + // Equal returns 1 if e is equivalent to ee, and 0 otherwise. // // Note that Elements must not be compared in any other way. diff --git a/scalar.go b/scalar.go index 71b7f08..010fd6a 100644 --- a/scalar.go +++ b/scalar.go @@ -16,6 +16,11 @@ type Scalar struct { s scalar.Scalar } +// NewScalar returns a Scalar set to the value 0. +func NewScalar() *Scalar { + return (&Scalar{}).Zero() +} + // Add sets s = x + y mod l and returns s. func (s *Scalar) Add(x, y *Scalar) *Scalar { s.s.Add(&x.s, &y.s)