public class TwoSidedRangeProof extends DelegateFragment
lowerBound <= member <= upperBound.SendThenDelegateFragment.ProverSpec, SendThenDelegateFragment.ProverSpecBuilder, SendThenDelegateFragment.SendThenDelegateAnnouncement, SendThenDelegateFragment.SubprotocolSpec, SendThenDelegateFragment.SubprotocolSpecBuilder, SendThenDelegateFragment.WitnessValues| Constructor and Description |
|---|
TwoSidedRangeProof(org.cryptimeleon.math.expressions.exponent.ExponentExpr member,
java.math.BigInteger lowerBound,
java.math.BigInteger upperBound,
SetMembershipPublicParameters pp)
Instantiates the proof for member in [lowerBound, upperBound] (inclusive).
|
TwoSidedRangeProof(org.cryptimeleon.math.expressions.exponent.ExponentExpr member,
int lowerBound,
int upperBound,
SetMembershipPublicParameters pp)
Instantiates the proof for member in [lowerBound, upperBound] (inclusive).
|
TwoSidedRangeProof(org.cryptimeleon.math.expressions.exponent.ExponentExpr member,
org.cryptimeleon.math.structures.rings.zn.Zn.ZnElement lowerBound,
org.cryptimeleon.math.structures.rings.zn.Zn.ZnElement upperBound,
SetMembershipPublicParameters pp)
Instantiates the proof for member in [lowerBound, upperBound] (inclusive).
|
| Modifier and Type | Method and Description |
|---|---|
static SetMembershipPublicParameters |
generatePublicParameters(org.cryptimeleon.math.structures.groups.elliptic.BilinearGroup group,
int base)
Generates public parameters to use for this protocol (alternatively, these can be reused from
SmallerThanPowerFragment) |
protected SendThenDelegateFragment.ProverSpec |
provideProverSpecWithNoSendFirst(SchnorrVariableAssignment externalWitnesses,
SendThenDelegateFragment.ProverSpecBuilder builder)
Run by the prover to set up witness values for variables this fragment proves knowledge of itself (i.e.
|
protected SendThenDelegateFragment.SubprotocolSpec |
provideSubprotocolSpec(SendThenDelegateFragment.SubprotocolSpecBuilder builder) |
provideAdditionalCheck, provideProverSpec, provideSubprotocolSpec, restoreSendFirstValue, simulateSendFirstValuecheckTranscript, compressTranscript, debugFragment, decompressTranscript, generateAnnouncement, generateAnnouncementSecret, generateResponse, generateSimulatedTranscript, restoreAnnouncement, restoreResponsepublic TwoSidedRangeProof(org.cryptimeleon.math.expressions.exponent.ExponentExpr member,
org.cryptimeleon.math.structures.rings.zn.Zn.ZnElement lowerBound,
org.cryptimeleon.math.structures.rings.zn.Zn.ZnElement upperBound,
SetMembershipPublicParameters pp)
member - an expression whose value shall be in the given interval. In the easiest case, this is a SchnorrZnVariable,
but it can be any affine linear combination of SchnorrZnVariableslowerBound - lower bound (inclusive)upperBound - upper bound (inclusive)pp - honestly generated public parameters for a set membership proof for {0, ..., base} for an arbitrary integer base (large base means faster protocol).
Can be generated by generatePublicParameters(BilinearGroup, int)public TwoSidedRangeProof(org.cryptimeleon.math.expressions.exponent.ExponentExpr member,
int lowerBound,
int upperBound,
SetMembershipPublicParameters pp)
member - an expression whose value shall be in the given interval. In the easiest case, this is a SchnorrZnVariable,
but it can be any affine linear combination of SchnorrZnVariableslowerBound - lower bound (inclusive)upperBound - upper bound (inclusive)pp - honestly generated public parameters for a set membership proof for {0, ..., base} for an arbitrary integer base (large base means faster protocol).
Can be generated by generatePublicParameters(BilinearGroup, int)public TwoSidedRangeProof(org.cryptimeleon.math.expressions.exponent.ExponentExpr member,
java.math.BigInteger lowerBound,
java.math.BigInteger upperBound,
SetMembershipPublicParameters pp)
member - an expression whose value shall be in the given interval. In the easiest case, this is a SchnorrZnVariable,
but it can be any affine linear combination of SchnorrZnVariableslowerBound - lower bound (inclusive)upperBound - upper bound (inclusive)pp - honestly generated public parameters for a set membership proof for {0, ..., base} for an arbitrary integer base (large base means faster protocol).
Can be generated by generatePublicParameters(BilinearGroup, int)protected SendThenDelegateFragment.ProverSpec provideProverSpecWithNoSendFirst(SchnorrVariableAssignment externalWitnesses, SendThenDelegateFragment.ProverSpecBuilder builder)
DelegateFragment
Run by the prover to set up witness values for variables this fragment proves knowledge of itself (i.e. those specified in DelegateFragment#provideSubprotocolSpec(SubprotocolSpecBuilder)).
A typical example implementation can be found in SmallerThanPowerFragment.
provideProverSpecWithNoSendFirst in class DelegateFragmentexternalWitnesses - the witness values for external variablesbuilder - helper object to instantiate a ProverSpecProverSpecBuilder#build().protected SendThenDelegateFragment.SubprotocolSpec provideSubprotocolSpec(SendThenDelegateFragment.SubprotocolSpecBuilder builder)
provideSubprotocolSpec in class DelegateFragmentpublic static SetMembershipPublicParameters generatePublicParameters(org.cryptimeleon.math.structures.groups.elliptic.BilinearGroup group, int base)
SmallerThanPowerFragment)group - the group to use for this fragmentbase - the desired base (the bigger this is, the larger these parameters become storage-wise, but the faster and shorter the proof becomes)