pub struct SigningBuilder<'r, E, L = SecurityLevel128, D = Sha256>where
E: Curve,
L: SecurityLevel,
D: Digest,{ /* private fields */ }Expand description
Signing entry point
Implementations§
Source§impl<'r, E, L, D> SigningBuilder<'r, E, L, D>where
E: Curve,
NonZero<Point<E>>: AlwaysHasAffineX<E>,
L: SecurityLevel,
D: Digest + Clone + 'static,
impl<'r, E, L, D> SigningBuilder<'r, E, L, D>where
E: Curve,
NonZero<Point<E>>: AlwaysHasAffineX<E>,
L: SecurityLevel,
D: Digest + Clone + 'static,
Sourcepub fn new(
eid: ExecutionId<'r>,
i: PartyIndex,
parties_indexes_at_keygen: &'r [PartyIndex],
secret_key_share: &'r KeyShare<E, L>,
) -> Self
pub fn new( eid: ExecutionId<'r>, i: PartyIndex, parties_indexes_at_keygen: &'r [PartyIndex], secret_key_share: &'r KeyShare<E, L>, ) -> Self
Construct a signing builder
Sourcepub fn set_digest<D2>(self) -> SigningBuilder<'r, E, L, D2>where
D2: Digest,
pub fn set_digest<D2>(self) -> SigningBuilder<'r, E, L, D2>where
D2: Digest,
Specifies another hash function to use
Sourcepub fn set_progress_tracer(self, tracer: &'r mut dyn Tracer) -> Self
pub fn set_progress_tracer(self, tracer: &'r mut dyn Tracer) -> Self
Specifies a tracer that tracks progress of protocol execution
Sourcepub fn enforce_reliable_broadcast(self, v: bool) -> Self
pub fn enforce_reliable_broadcast(self, v: bool) -> Self
Ensures reliability of broadcast channel by adding one extra communication round
CGGMP24 protocol requires message in the first round to be sent over reliable broadcast channel. We ensure reliability of the broadcast channel by introducing extra communication round (at cost of additional latency). You may disable it, for instance, if your transport layer is reliable by construction (e.g. you use blockchain for communications).
Default: true.
Sourcepub fn set_derivation_path<Index>(
self,
path: impl IntoIterator<Item = Index>,
) -> Result<Self, HdError<<Index as TryInto<NonHardenedIndex>>::Error>>where
Slip10: HdWallet<E>,
NonHardenedIndex: TryFrom<Index>,
Available on crate features hd-wallet and hd-slip10 only.
pub fn set_derivation_path<Index>(
self,
path: impl IntoIterator<Item = Index>,
) -> Result<Self, HdError<<Index as TryInto<NonHardenedIndex>>::Error>>where
Slip10: HdWallet<E>,
NonHardenedIndex: TryFrom<Index>,
hd-wallet and hd-slip10 only.Specifies HD derivation path
§Example
Set derivation path to m/1/999
cggmp24::signing(eid, i, &parties_indexes_at_keygen, &key_share)
.set_derivation_path([1, 999])?§Derivation algorithm
This method uses [hd_wallet::Slip10] derivation algorithm, which can only be used with secp256k1
and secp256r1 curves. If you need to use another one, see
set_derivation_path_with_algo
Sourcepub fn set_derivation_path_with_algo<Hd: HdWallet<E>, Index>(
self,
path: impl IntoIterator<Item = Index>,
) -> Result<Self, HdError<<Index as TryInto<NonHardenedIndex>>::Error>>where
NonHardenedIndex: TryFrom<Index>,
Available on crate feature hd-wallet only.
pub fn set_derivation_path_with_algo<Hd: HdWallet<E>, Index>(
self,
path: impl IntoIterator<Item = Index>,
) -> Result<Self, HdError<<Index as TryInto<NonHardenedIndex>>::Error>>where
NonHardenedIndex: TryFrom<Index>,
hd-wallet only.Specifies HD derivation path, using HD derivation algorithm [hd_wallet::HdWallet]
Sourcepub async fn generate_presignature<R, M>(
self,
rng: &mut R,
party: M,
) -> Result<(Presignature<E>, PresignaturePublicData<E>), SigningError>
pub async fn generate_presignature<R, M>( self, rng: &mut R, party: M, ) -> Result<(Presignature<E>, PresignaturePublicData<E>), SigningError>
Starts presignature generation protocol
Sourcepub fn generate_presignature_sync<R>(
self,
rng: &'r mut R,
) -> impl StateMachine<Output = Result<(Presignature<E>, PresignaturePublicData<E>), SigningError>, Msg = Msg<E, D>> + 'r
Available on crate feature state-machine only.
pub fn generate_presignature_sync<R>( self, rng: &'r mut R, ) -> impl StateMachine<Output = Result<(Presignature<E>, PresignaturePublicData<E>), SigningError>, Msg = Msg<E, D>> + 'r
state-machine only.Returns a state machine that can be used to carry out the presignature generation protocol
See [round_based::state_machine] for details on how that can be done.
Sourcepub async fn sign<R, M>(
self,
rng: &mut R,
party: M,
message_to_sign: &dyn AnyDataToSign<E>,
) -> Result<Signature<E>, SigningError>
pub async fn sign<R, M>( self, rng: &mut R, party: M, message_to_sign: &dyn AnyDataToSign<E>, ) -> Result<Signature<E>, SigningError>
Starts signing protocol
message_to_sign can be either DataToSign (original message being signed is known) or
PrehashedDataToSign (only hash of the message being signed is known), protocol is secure
regardless. However, the best practice is to use DataToSign whenever possible.
Sourcepub fn sign_sync<R>(
self,
rng: &'r mut R,
message_to_sign: &'r dyn AnyDataToSign<E>,
) -> impl StateMachine<Output = Result<Signature<E>, SigningError>, Msg = Msg<E, D>> + 'r
Available on crate feature state-machine only.
pub fn sign_sync<R>( self, rng: &'r mut R, message_to_sign: &'r dyn AnyDataToSign<E>, ) -> impl StateMachine<Output = Result<Signature<E>, SigningError>, Msg = Msg<E, D>> + 'r
state-machine only.Returns a state machine that can be used to carry out the signing protocol
See [round_based::state_machine] for details on how that can be done.
message_to_sign can be either DataToSign (original message being signed is known) or
PrehashedDataToSign (only hash of the message being signed is known), protocol is secure
regardless. However, the best practice is to use DataToSign whenever possible.
Auto Trait Implementations§
impl<'r, E, L, D> Freeze for SigningBuilder<'r, E, L, D>
impl<'r, E, L = SecurityLevel128, D = CoreWrapper<CtVariableCoreWrapper<Sha256VarCore, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, OidSha256>>> !RefUnwindSafe for SigningBuilder<'r, E, L, D>
impl<'r, E, L, D> Send for SigningBuilder<'r, E, L, D>where
D: Send,
impl<'r, E, L, D> Sync for SigningBuilder<'r, E, L, D>where
D: Sync,
impl<'r, E, L, D> Unpin for SigningBuilder<'r, E, L, D>where
D: Unpin,
impl<'r, E, L, D> UnsafeUnpin for SigningBuilder<'r, E, L, D>
impl<'r, E, L = SecurityLevel128, D = CoreWrapper<CtVariableCoreWrapper<Sha256VarCore, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, OidSha256>>> !UnwindSafe for SigningBuilder<'r, E, L, D>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.