diff --git a/frost-core/CHANGELOG.md b/frost-core/CHANGELOG.md index 515941b5..915ef475 100644 --- a/frost-core/CHANGELOG.md +++ b/frost-core/CHANGELOG.md @@ -6,6 +6,10 @@ Entries are listed in reverse chronological order. * Added refresh share functionality for trusted dealer: `frost_core::keys::refresh::{compute_refreshing_shares, refresh_share}` +* Added a `'static` bound to the `Ciphersuite` trait. This is a breaking change, + but it's likely to not require any code changes since most ciphersuite + implementations are probably just empty structs. The bound makes it possible + to use `frost_core::Error` in `Box`. ## 2.0.0-rc.0 diff --git a/frost-core/src/traits.rs b/frost-core/src/traits.rs index a1ff62fe..3e0d9365 100644 --- a/frost-core/src/traits.rs +++ b/frost-core/src/traits.rs @@ -138,7 +138,8 @@ pub type Element = <::Group as Group>::Element; /// function. /// /// [FROST ciphersuite]: https://datatracker.ietf.org/doc/html/rfc9591#name-ciphersuites -pub trait Ciphersuite: Copy + Clone + PartialEq + Debug { +// See https://github.com/ZcashFoundation/frost/issues/693 for reasoning about the 'static bound. +pub trait Ciphersuite: Copy + Clone + PartialEq + Debug + 'static { /// The ciphersuite ID string. It should be equal to the contextString in /// the spec. For new ciphersuites, this should be a string that identifies /// the ciphersuite; it's recommended to use a similar format to the