ceremonyclient/nekryptology/pkg/ted25519/frost/challenge_derive.go
2023-07-05 00:32:28 -05:00

28 lines
691 B
Go

//
// Copyright Coinbase, Inc. All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
package frost
import (
"crypto/sha512"
"source.quilibrium.com/quilibrium/monorepo/nekryptology/pkg/core/curves"
)
type ChallengeDerive interface {
DeriveChallenge(msg []byte, pubKey curves.Point, r curves.Point) (curves.Scalar, error)
}
type Ed25519ChallengeDeriver struct{}
func (ed Ed25519ChallengeDeriver) DeriveChallenge(msg []byte, pubKey curves.Point, r curves.Point) (curves.Scalar, error) {
h := sha512.New()
_, _ = h.Write(r.ToAffineCompressed())
_, _ = h.Write(pubKey.ToAffineCompressed())
_, _ = h.Write(msg)
return new(curves.ScalarEd25519).SetBytesWide(h.Sum(nil))
}