Skip to content

Commit 2c87de7

Browse files
chris-woodarmfazh
authored andcommitted
Export Group and Hash for each OPRF suite
1 parent b38981c commit 2c87de7

File tree

5 files changed

+45
-45
lines changed

5 files changed

+45
-45
lines changed

oprf/client.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func (c client) Blind(inputs [][]byte) (*FinalizeData, *EvaluationRequest, error
3030

3131
blinds := make([]blind, len(inputs))
3232
for i := range inputs {
33-
blinds[i] = c.params.g.RandomScalar(rand.Reader)
33+
blinds[i] = c.params.Group.RandomScalar(rand.Reader)
3434
}
3535

3636
return c.blind(inputs, blinds)
@@ -40,11 +40,11 @@ func (c client) blind(inputs [][]byte, blinds []blind) (*FinalizeData, *Evaluati
4040
blindedElements := make([]Blinded, len(inputs))
4141
dst := c.params.getDST(hashToGroupDST)
4242
for i := range inputs {
43-
point := c.params.g.HashToElement(inputs[i], dst)
43+
point := c.params.Group.HashToElement(inputs[i], dst)
4444
if point.IsIdentity() {
4545
return nil, nil, ErrInvalidInput
4646
}
47-
blindedElements[i] = c.params.g.NewElement().Mul(point, blinds[i])
47+
blindedElements[i] = c.params.Group.NewElement().Mul(point, blinds[i])
4848
}
4949

5050
evalReq := &EvaluationRequest{blindedElements}
@@ -55,8 +55,8 @@ func (c client) blind(inputs [][]byte, blinds []blind) (*FinalizeData, *Evaluati
5555

5656
func (c client) unblind(serUnblindeds [][]byte, blindeds []group.Element, blind []blind) error {
5757
var err error
58-
invBlind := c.params.g.NewScalar()
59-
U := c.params.g.NewElement()
58+
invBlind := c.params.Group.NewScalar()
59+
U := c.params.Group.NewElement()
6060

6161
for i := range blindeds {
6262
invBlind.Inv(blind[i])
@@ -85,7 +85,7 @@ func (c client) finalize(f *FinalizeData, e *Evaluation, info []byte) ([][]byte,
8585
return nil, err
8686
}
8787

88-
h := c.params.h.New()
88+
h := c.params.Hash.New()
8989
outputs := make([][]byte, len(f.inputs))
9090
for i := range f.inputs {
9191
outputs[i] = c.params.finalizeHash(h, f.inputs[i], info, unblindedElements[i])
@@ -108,7 +108,7 @@ func (c VerifiableClient) Finalize(f *FinalizeData, e *Evaluation) (outputs [][]
108108
}
109109

110110
if !(dleq.Verifier{Params: c.getDLEQParams()}).VerifyBatch(
111-
c.params.g.Generator(),
111+
c.params.Group.Generator(),
112112
c.pkS.e,
113113
f.evalReq.Elements,
114114
e.Elements,
@@ -131,7 +131,7 @@ func (c PartialObliviousClient) Finalize(f *FinalizeData, e *Evaluation, info []
131131
}
132132

133133
if !(dleq.Verifier{Params: c.getDLEQParams()}).VerifyBatch(
134-
c.params.g.Generator(),
134+
c.params.Group.Generator(),
135135
tweakedKey,
136136
e.Elements,
137137
f.evalReq.Elements,
@@ -149,8 +149,8 @@ func (c PartialObliviousClient) pointFromInfo(info []byte) (group.Element, error
149149
return nil, err
150150
}
151151

152-
T := c.params.g.NewElement().MulGen(m)
153-
tweakedKey := c.params.g.NewElement().Add(T, c.pkS.e)
152+
T := c.params.Group.NewElement().MulGen(m)
153+
tweakedKey := c.params.Group.NewElement().Add(T, c.pkS.e)
154154
if tweakedKey.IsIdentity() {
155155
return nil, ErrInvalidInfo
156156
}

oprf/keys.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func (k *PrivateKey) UnmarshalBinary(s Suite, data []byte) error {
2727
return ErrInvalidSuite
2828
}
2929
k.p = p
30-
k.k = k.p.g.NewScalar()
30+
k.k = k.p.Group.NewScalar()
3131

3232
return k.k.UnmarshalBinary(data)
3333
}
@@ -38,14 +38,14 @@ func (k *PublicKey) UnmarshalBinary(s Suite, data []byte) error {
3838
return ErrInvalidSuite
3939
}
4040
k.p = p
41-
k.e = k.p.g.NewElement()
41+
k.e = k.p.Group.NewElement()
4242

4343
return k.e.UnmarshalBinary(data)
4444
}
4545

4646
func (k *PrivateKey) Public() *PublicKey {
4747
if k.pub == nil {
48-
k.pub = &PublicKey{k.p, k.p.g.NewElement().MulGen(k.k)}
48+
k.pub = &PublicKey{k.p, k.p.Group.NewElement().MulGen(k.k)}
4949
}
5050

5151
return k.pub
@@ -61,7 +61,7 @@ func GenerateKey(s Suite, rnd io.Reader) (*PrivateKey, error) {
6161
if !ok {
6262
return nil, ErrInvalidSuite
6363
}
64-
privateKey := p.g.RandomScalar(rnd)
64+
privateKey := p.Group.RandomScalar(rnd)
6565

6666
return &PrivateKey{p, privateKey, nil}, nil
6767
}
@@ -83,13 +83,13 @@ func DeriveKey(s Suite, mode Mode, seed, info []byte) (*PrivateKey, error) {
8383
deriveInput := append(append(append([]byte{}, seed...), lenInfo...), info...)
8484

8585
dst := p.getDST(deriveKeyPairDST)
86-
zero := p.g.NewScalar()
87-
privateKey := p.g.NewScalar()
86+
zero := p.Group.NewScalar()
87+
privateKey := p.Group.NewScalar()
8888
for counter := byte(0); privateKey.IsEqual(zero); counter++ {
8989
if counter > maxTries {
9090
return nil, ErrDeriveKeyPairError
9191
}
92-
privateKey = p.g.HashToScalar(append(deriveInput, counter), dst)
92+
privateKey = p.Group.HashToScalar(append(deriveInput, counter), dst)
9393
}
9494

9595
return &PrivateKey{p, privateKey, nil}, nil

oprf/oprf.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ type Suite interface{ cannotBeImplementedExternally() }
8686

8787
var (
8888
// SuiteP256 represents the OPRF with P-256 and SHA-256.
89-
SuiteP256 Suite = params{ID: 3, g: group.P256, h: crypto.SHA256}
89+
SuiteP256 Suite = params{ID: 3, Group: group.P256, Hash: crypto.SHA256}
9090
// SuiteP384 represents the OPRF with P-384 and SHA-384.
91-
SuiteP384 Suite = params{ID: 4, g: group.P384, h: crypto.SHA384}
91+
SuiteP384 Suite = params{ID: 4, Group: group.P384, Hash: crypto.SHA384}
9292
// SuiteP521 represents the OPRF with P-521 and SHA-512.
93-
SuiteP521 Suite = params{ID: 5, g: group.P521, h: crypto.SHA512}
93+
SuiteP521 Suite = params{ID: 5, Group: group.P521, Hash: crypto.SHA512}
9494
)
9595

9696
func GetSuite(id int) (Suite, error) {
@@ -164,15 +164,15 @@ func NewPartialObliviousServer(s Suite, key *PrivateKey) PartialObliviousServer
164164
}
165165

166166
type params struct {
167-
ID uint16
168-
m Mode
169-
g group.Group
170-
h crypto.Hash
167+
ID uint16
168+
m Mode
169+
Group group.Group
170+
Hash crypto.Hash
171171
}
172172

173173
func (p params) cannotBeImplementedExternally() {}
174174

175-
func (p params) String() string { return fmt.Sprintf("Suite%v", p.g) }
175+
func (p params) String() string { return fmt.Sprintf("Suite%v", p.Group) }
176176

177177
func (p params) getDST(name string) []byte {
178178
return append(append(append([]byte{},
@@ -192,7 +192,7 @@ func (p params) scalarFromInfo(info []byte) (group.Scalar, error) {
192192
lenInfo...),
193193
info...)
194194

195-
return p.g.HashToScalar(framedInfo, p.getDST(hashToScalarDST)), nil
195+
return p.Group.HashToScalar(framedInfo, p.getDST(hashToScalarDST)), nil
196196
}
197197

198198
func (p params) finalizeHash(h hash.Hash, input, info, element []byte) []byte {
@@ -219,8 +219,8 @@ func (p params) finalizeHash(h hash.Hash, input, info, element []byte) []byte {
219219
}
220220

221221
func (p params) getDLEQParams() (out dleq.Params) {
222-
out.G = p.g
223-
out.H = p.h
222+
out.G = p.Group
223+
out.H = p.Hash
224224
out.DST = p.getDST("")
225225

226226
return

oprf/server.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func (s server) PublicKey() *PublicKey { return s.privateKey.Public() }
2424
func (s server) evaluate(elements []Blinded, secret blind) []Evaluated {
2525
evaluations := make([]Evaluated, len(elements))
2626
for i := range elements {
27-
evaluations[i] = s.params.g.NewElement().Mul(elements[i], secret)
27+
evaluations[i] = s.params.Group.NewElement().Mul(elements[i], secret)
2828
}
2929

3030
return evaluations
@@ -41,7 +41,7 @@ func (s VerifiableServer) Evaluate(req *EvaluationRequest) (*Evaluation, error)
4141

4242
proof, err := dleq.Prover{Params: s.getDLEQParams()}.ProveBatch(
4343
s.privateKey.k,
44-
s.params.g.Generator(),
44+
s.params.Group.Generator(),
4545
s.PublicKey().e,
4646
req.Elements,
4747
evaluations,
@@ -64,8 +64,8 @@ func (s PartialObliviousServer) Evaluate(req *EvaluationRequest, info []byte) (*
6464

6565
proof, err := dleq.Prover{Params: s.getDLEQParams()}.ProveBatch(
6666
keyProof,
67-
s.params.g.Generator(),
68-
s.params.g.NewElement().MulGen(keyProof),
67+
s.params.Group.Generator(),
68+
s.params.Group.NewElement().MulGen(keyProof),
6969
evaluations,
7070
req.Elements,
7171
rand.Reader,
@@ -82,12 +82,12 @@ func (s server) secretFromInfo(info []byte) (t, tInv group.Scalar, err error) {
8282
if err != nil {
8383
return nil, nil, err
8484
}
85-
t = s.params.g.NewScalar().Add(m, s.privateKey.k)
85+
t = s.params.Group.NewScalar().Add(m, s.privateKey.k)
8686

87-
if zero := s.params.g.NewScalar(); t.IsEqual(zero) {
87+
if zero := s.params.Group.NewScalar(); t.IsEqual(zero) {
8888
return nil, nil, ErrInverseZero
8989
}
90-
tInv = s.params.g.NewScalar().Inv(t)
90+
tInv = s.params.Group.NewScalar().Inv(t)
9191

9292
return t, tInv, nil
9393
}
@@ -102,14 +102,14 @@ func (s server) fullEvaluate(input, info []byte) ([]byte, error) {
102102
}
103103
}
104104

105-
element := s.params.g.HashToElement(input, s.params.getDST(hashToGroupDST))
106-
evaluation := s.params.g.NewElement().Mul(element, evalSecret)
105+
element := s.params.Group.HashToElement(input, s.params.getDST(hashToGroupDST))
106+
evaluation := s.params.Group.NewElement().Mul(element, evalSecret)
107107
serEval, err := evaluation.MarshalBinaryCompress()
108108
if err != nil {
109109
return nil, err
110110
}
111111

112-
return s.finalizeHash(s.params.h.New(), input, info, serEval), nil
112+
return s.finalizeHash(s.params.Hash.New(), input, info, serEval), nil
113113
}
114114

115115
func (s Server) FullEvaluate(input []byte) (output []byte, err error) {

oprf/vectors_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -164,33 +164,33 @@ func (v *vector) test(t *testing.T) {
164164

165165
blinds := make([]blind, len(blindsBytes))
166166
for j := range blindsBytes {
167-
blinds[j] = params.g.NewScalar()
167+
blinds[j] = params.Group.NewScalar()
168168
err := blinds[j].UnmarshalBinary(blindsBytes[j])
169169
test.CheckNoErr(t, err, "invalid blind")
170170
}
171171

172172
finData, evalReq, err := client.blind(inputs, blinds)
173173
test.CheckNoErr(t, err, "invalid client request")
174-
evalReqBytes, err := elementsMarshalBinary(params.g, evalReq.Elements)
174+
evalReqBytes, err := elementsMarshalBinary(params.Group, evalReq.Elements)
175175
test.CheckNoErr(t, err, "bad serialization")
176176
v.compareBytes(t, evalReqBytes, flattenList(t, vi.BlindedElement, "blindedElement"))
177177

178178
eval, err := server.Evaluate(evalReq)
179179
test.CheckNoErr(t, err, "invalid evaluation")
180-
elemBytes, err := elementsMarshalBinary(params.g, eval.Elements)
180+
elemBytes, err := elementsMarshalBinary(params.Group, eval.Elements)
181181
test.CheckNoErr(t, err, "invalid evaluations marshaling")
182182
v.compareBytes(t, elemBytes, flattenList(t, vi.EvaluationElement, "evaluation"))
183183

184184
if v.Mode == VerifiableMode || v.Mode == PartialObliviousMode {
185-
randomness := toScalar(t, params.g, vi.Proof.R, "invalid proof random scalar")
185+
randomness := toScalar(t, params.Group, vi.Proof.R, "invalid proof random scalar")
186186
var proof encoding.BinaryMarshaler
187187
switch v.Mode {
188188
case VerifiableMode:
189189
ss := server.(VerifiableServer)
190190
prover := dleq.Prover{Params: ss.getDLEQParams()}
191191
proof, err = prover.ProveBatchWithRandomness(
192192
ss.privateKey.k,
193-
ss.params.g.Generator(),
193+
ss.params.Group.Generator(),
194194
server.PublicKey().e,
195195
evalReq.Elements,
196196
eval.Elements,
@@ -201,8 +201,8 @@ func (v *vector) test(t *testing.T) {
201201
prover := dleq.Prover{Params: ss.getDLEQParams()}
202202
proof, err = prover.ProveBatchWithRandomness(
203203
keyProof,
204-
ss.params.g.Generator(),
205-
ss.params.g.NewElement().MulGen(keyProof),
204+
ss.params.Group.Generator(),
205+
ss.params.Group.NewElement().MulGen(keyProof),
206206
eval.Elements,
207207
evalReq.Elements,
208208
randomness)

0 commit comments

Comments
 (0)