mirror of
https://github.com/sonr-io/crypto.git
synced 2026-08-02 23:41:37 +00:00
No commit suggestions generated
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
//
|
||||
// Copyright Coinbase, Inc. All Rights Reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
package common
|
||||
|
||||
import (
|
||||
"io"
|
||||
|
||||
"github.com/sonr-io/sonr/crypto/core/curves"
|
||||
)
|
||||
|
||||
// ProofMessage classifies how a message is presented in a proof
|
||||
// Either Revealed or Hidden. Hidden has two sub categories:
|
||||
// proof specific i.e. the message is only used for this proof or
|
||||
// shared i.e. the message should be proved to be common across proofs
|
||||
type ProofMessage interface {
|
||||
// IsHidden indicates the message should be hidden
|
||||
IsHidden() bool
|
||||
// GetBlinding is used for hidden messages
|
||||
// blindings can either be proof specific to a signature
|
||||
// or involved with other proofs like boundchecks,
|
||||
// set memberships, or inequalities so the blinding
|
||||
// factor is shared among proofs to produce a common
|
||||
// schnorr linking proof
|
||||
GetBlinding(reader io.Reader) curves.Scalar
|
||||
// GetMessage returns the underlying message
|
||||
GetMessage() curves.Scalar
|
||||
}
|
||||
|
||||
type RevealedMessage struct {
|
||||
Message curves.Scalar
|
||||
}
|
||||
|
||||
func (r RevealedMessage) IsHidden() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (r RevealedMessage) GetBlinding(reader io.Reader) curves.Scalar {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r RevealedMessage) GetMessage() curves.Scalar {
|
||||
return r.Message
|
||||
}
|
||||
|
||||
type ProofSpecificMessage struct {
|
||||
Message curves.Scalar
|
||||
}
|
||||
|
||||
func (ps ProofSpecificMessage) IsHidden() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (ps ProofSpecificMessage) GetBlinding(reader io.Reader) curves.Scalar {
|
||||
return ps.Message.Random(reader)
|
||||
}
|
||||
|
||||
func (ps ProofSpecificMessage) GetMessage() curves.Scalar {
|
||||
return ps.Message
|
||||
}
|
||||
|
||||
type SharedBlindingMessage struct {
|
||||
Message, Blinding curves.Scalar
|
||||
}
|
||||
|
||||
func (ps SharedBlindingMessage) IsHidden() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (ps SharedBlindingMessage) GetBlinding(reader io.Reader) curves.Scalar {
|
||||
return ps.Blinding
|
||||
}
|
||||
|
||||
func (ps SharedBlindingMessage) GetMessage() curves.Scalar {
|
||||
return ps.Message
|
||||
}
|
||||
Reference in New Issue
Block a user