refresh

package
v0.15.2 Latest Latest
Warning

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

Go to latest
Published: Mar 9, 2024 License: GPL-3.0 Imports: 8 Imported by: 0

Documentation

Overview

This file implements the key refresh protocol of [DKLs18](https://eprint.iacr.org/2018/499.pdf). The key refresh protocol is defined as follows:

  1. Key Share: 1.1. alice generates k_A <-- F_q; writes it to merlin transcript. sends it to bob. 1.2. bob receives k_A and writes it to merlin transcript. generates k_B <-- F_q and writes it to merlin transcript. reads k out of merlin transcript. overwrites sk_B *= k. sends k_B to Alice. 1.3. alice writes k_B to merlin transcript. reads k from it. overwrites sk_A *= k^{-1}.
  2. OT: Redo OT (as it is done in the DKG)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Alice

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

Alice struct encoding Alice's state during one execution of the overall signing algorithm. At the end of the joint computation, Alice will NOT obtain the signature.

func NewAlice

func NewAlice(curve *curves.Curve, dkgOutput *dkg.AliceOutput) *Alice

NewAliceRefresh creates a party that can participate in 2-of-2 key refresh.

func (*Alice) Output

func (alice *Alice) Output() *dkg.AliceOutput

func (*Alice) Round1RefreshGenerateSeed

func (alice *Alice) Round1RefreshGenerateSeed() curves.Scalar

func (*Alice) Round3RefreshMultiplyRound2Ot

func (alice *Alice) Round3RefreshMultiplyRound2Ot(input *RefreshRound2Output) ([]simplest.ReceiversMaskedChoices, error)

func (*Alice) Round5RefreshRound4Ot

func (alice *Alice) Round5RefreshRound4Ot(challenge []simplest.OtChallenge) ([]simplest.OtChallengeResponse, error)

func (*Alice) Round7DkgRound6Ot

func (alice *Alice) Round7DkgRound6Ot(challengeOpenings []simplest.ChallengeOpening) error

type Bob

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

Bob struct encoding Bob's state during one execution of the overall signing algorithm. At the end of the joint computation, Bob will obtain the signature.

func NewBob

func NewBob(curve *curves.Curve, dkgOutput *dkg.BobOutput) *Bob

NewBobRefresh creates a party that can participate in 2-of-2 key refresh.

func (*Bob) Output

func (bob *Bob) Output() *dkg.BobOutput

func (*Bob) Round2RefreshProduceSeedAndMultiplyAndStartOT

func (bob *Bob) Round2RefreshProduceSeedAndMultiplyAndStartOT(aliceSeed curves.Scalar) (*RefreshRound2Output, error)

func (*Bob) Round4RefreshRound3Ot

func (bob *Bob) Round4RefreshRound3Ot(compressedReceiversMaskedChoice []simplest.ReceiversMaskedChoices) ([]simplest.OtChallenge, error)

func (*Bob) Round6RefreshRound5Ot

func (bob *Bob) Round6RefreshRound5Ot(challengeResponses []simplest.OtChallengeResponse) ([]simplest.ChallengeOpening, error)

type RefreshRound2Output

type RefreshRound2Output struct {
	SeedOTRound1Output *schnorr.Proof
	BobMultiplier      curves.Scalar
}

Jump to

Keyboard shortcuts

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