bbs12381g2pub

package
v0.0.0-...-64dd8ac Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2024 License: Apache-2.0 Imports: 10 Imported by: 6

Documentation

Overview

Package bbs12381g2pub contains BBS+ signing primitives and keys. Although it can be used directly, it is recommended to use BBS+ keys created by the kms along with the framework's Crypto service.

The default local Crypto service is found at: "github.com/hyperledger/aries-framework-go/component/kmscrypto/crypto/tinkcrypto"

While the remote Crypto service is found at: "github.com/hyperledger/aries-framework-go/component/kmscrypto/crypto/webkms"

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenerateKeyPair

func GenerateKeyPair(h func() hash.Hash, seed []byte) (*PublicKey, *PrivateKey, error)

GenerateKeyPair generates BBS+ PublicKey and PrivateKey pair.

Types

type BBSG2Pub

type BBSG2Pub struct{}

BBSG2Pub defines BBS+ signature scheme where public key is a point in the field of G2. BBS+ signature scheme (as defined in https://eprint.iacr.org/2016/663.pdf, section 4.3).

func New

func New() *BBSG2Pub

New creates a new BBSG2Pub.

func (*BBSG2Pub) DeriveProof

func (bbs *BBSG2Pub) DeriveProof(messages [][]byte, sigBytes, nonce, pubKeyBytes []byte,
	revealedIndexes []int) ([]byte, error)

DeriveProof derives a proof of BBS+ signature with some messages disclosed.

func (*BBSG2Pub) Sign

func (bbs *BBSG2Pub) Sign(messages [][]byte, privKeyBytes []byte) ([]byte, error)

Sign signs the one or more messages using private key in compressed form.

func (*BBSG2Pub) SignWithKey

func (bbs *BBSG2Pub) SignWithKey(messages [][]byte, privKey *PrivateKey) ([]byte, error)

SignWithKey signs the one or more messages using BBS+ key pair.

func (*BBSG2Pub) Verify

func (bbs *BBSG2Pub) Verify(messages [][]byte, sigBytes, pubKeyBytes []byte) error

Verify makes BLS BBS12-381 signature verification.

func (*BBSG2Pub) VerifyProof

func (bbs *BBSG2Pub) VerifyProof(messagesBytes [][]byte, proof, nonce, pubKeyBytes []byte) error

VerifyProof verifies BBS+ signature proof for one ore more revealed messages.

type PoKOfSignature

type PoKOfSignature struct {
	// contains filtered or unexported fields
}

PoKOfSignature is Proof of Knowledge of a Signature that is used by the prover to construct PoKOfSignatureProof.

func NewPoKOfSignature

func NewPoKOfSignature(signature *Signature, messages []*SignatureMessage, revealedIndexes []int,
	pubKey *PublicKeyWithGenerators) (*PoKOfSignature, error)

NewPoKOfSignature creates a new PoKOfSignature.

func (*PoKOfSignature) GenerateProof

func (pos *PoKOfSignature) GenerateProof(challengeHash *ml.Zr) *PoKOfSignatureProof

GenerateProof generates PoKOfSignatureProof proof from PoKOfSignature signature.

func (*PoKOfSignature) ToBytes

func (pos *PoKOfSignature) ToBytes() []byte

ToBytes converts PoKOfSignature to bytes.

type PoKOfSignatureProof

type PoKOfSignatureProof struct {
	// contains filtered or unexported fields
}

PoKOfSignatureProof defines BLS signature proof. It is the actual proof that is sent from prover to verifier.

func ParseSignatureProof

func ParseSignatureProof(sigProofBytes []byte) (*PoKOfSignatureProof, error)

ParseSignatureProof parses a signature proof.

func (*PoKOfSignatureProof) GetBytesForChallenge

func (sp *PoKOfSignatureProof) GetBytesForChallenge(revealedMessages map[int]*SignatureMessage,
	pubKey *PublicKeyWithGenerators) []byte

GetBytesForChallenge creates bytes for proof challenge.

func (*PoKOfSignatureProof) ToBytes

func (sp *PoKOfSignatureProof) ToBytes() []byte

ToBytes converts PoKOfSignatureProof to bytes.

func (*PoKOfSignatureProof) Verify

func (sp *PoKOfSignatureProof) Verify(challenge *ml.Zr, pubKey *PublicKeyWithGenerators,
	revealedMessages map[int]*SignatureMessage, messages []*SignatureMessage) error

Verify verifies PoKOfSignatureProof.

type PrivateKey

type PrivateKey struct {
	FR *ml.Zr
}

PrivateKey defines BLS Public Key.

func UnmarshalPrivateKey

func UnmarshalPrivateKey(privKeyBytes []byte) (*PrivateKey, error)

UnmarshalPrivateKey unmarshals PrivateKey.

func (*PrivateKey) Marshal

func (k *PrivateKey) Marshal() ([]byte, error)

Marshal marshals PrivateKey.

func (*PrivateKey) PublicKey

func (k *PrivateKey) PublicKey() *PublicKey

PublicKey returns a Public Key as G2 point generated from the Private Key.

type ProofG1

type ProofG1 struct {
	// contains filtered or unexported fields
}

ProofG1 is a proof of knowledge of a signature and hidden messages.

func NewProofG1

func NewProofG1(commitment *ml.G1, responses []*ml.Zr) *ProofG1

NewProofG1 creates a new ProofG1.

func ParseProofG1

func ParseProofG1(bytes []byte) (*ProofG1, error)

ParseProofG1 parses ProofG1 from bytes.

func (*ProofG1) ToBytes

func (pg1 *ProofG1) ToBytes() []byte

ToBytes converts ProofG1 to bytes.

func (*ProofG1) Verify

func (pg1 *ProofG1) Verify(bases []*ml.G1, commitment *ml.G1, challenge *ml.Zr) error

Verify verifies the ProofG1.

type ProofNonce

type ProofNonce struct {
	// contains filtered or unexported fields
}

ProofNonce is a nonce for Proof of Knowledge proof.

func ParseProofNonce

func ParseProofNonce(proofNonceBytes []byte) *ProofNonce

ParseProofNonce creates a new ProofNonce from bytes.

func (*ProofNonce) ToBytes

func (pn *ProofNonce) ToBytes() []byte

ToBytes converts ProofNonce into bytes.

type ProverCommittedG1

type ProverCommittedG1 struct {
	// contains filtered or unexported fields
}

ProverCommittedG1 helps to generate a ProofG1.

func (*ProverCommittedG1) GenerateProof

func (g *ProverCommittedG1) GenerateProof(challenge *ml.Zr, secrets []*ml.Zr) *ProofG1

GenerateProof generates proof ProofG1 for all secrets.

func (*ProverCommittedG1) ToBytes

func (g *ProverCommittedG1) ToBytes() []byte

ToBytes converts ProverCommittedG1 to bytes.

type ProverCommittingG1

type ProverCommittingG1 struct {
	// contains filtered or unexported fields
}

ProverCommittingG1 is a proof of knowledge of messages in a vector commitment.

func NewProverCommittingG1

func NewProverCommittingG1() *ProverCommittingG1

NewProverCommittingG1 creates a new ProverCommittingG1.

func (*ProverCommittingG1) Commit

func (pc *ProverCommittingG1) Commit(base *ml.G1)

Commit append a base point and randomly generated blinding factor.

func (*ProverCommittingG1) Finish

func (pc *ProverCommittingG1) Finish() *ProverCommittedG1

Finish helps to generate ProverCommittedG1 after commitment of all base points.

type PublicKey

type PublicKey struct {
	PointG2 *ml.G2
}

PublicKey defines BLS Public Key.

func UnmarshalPublicKey

func UnmarshalPublicKey(pubKeyBytes []byte) (*PublicKey, error)

UnmarshalPublicKey parses a PublicKey from bytes.

func (*PublicKey) Marshal

func (pk *PublicKey) Marshal() ([]byte, error)

Marshal marshals PublicKey.

func (*PublicKey) ToPublicKeyWithGenerators

func (pk *PublicKey) ToPublicKeyWithGenerators(messagesCount int) (*PublicKeyWithGenerators, error)

ToPublicKeyWithGenerators creates PublicKeyWithGenerators from the PublicKey.

type PublicKeyWithGenerators

type PublicKeyWithGenerators struct {
	// contains filtered or unexported fields
}

PublicKeyWithGenerators extends PublicKey with a blinding generator h0, a commitment to the secret key w, and a generator for each message h.

type Signature

type Signature struct {
	A *ml.G1
	E *ml.Zr
	S *ml.Zr
}

Signature defines BLS signature.

func ParseSignature

func ParseSignature(sigBytes []byte) (*Signature, error)

ParseSignature parses a Signature from bytes.

func (*Signature) ToBytes

func (s *Signature) ToBytes() ([]byte, error)

ToBytes converts signature to bytes using compression of G1 point and E, S FR points.

func (*Signature) Verify

func (s *Signature) Verify(messages []*SignatureMessage, pubKey *PublicKeyWithGenerators) error

Verify is used for signature verification.

type SignatureMessage

type SignatureMessage struct {
	FR *ml.Zr
}

SignatureMessage defines a message to be used for a signature check.

func ParseSignatureMessage

func ParseSignatureMessage(message []byte) *SignatureMessage

ParseSignatureMessage parses SignatureMessage from bytes.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL