mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-08 20:29:23 +00:00
The prior-present `Ciphersuite::hash_to_F` was a sin. Implementations took a DST, yet were not require to securely handle it. It was also biased towards the requirements of `modular-frost` as `ciphersuite` was originally written all those years ago, when `modular-frost` had needs exceeding what `ff`, `group` satisfied. Now, the hash is bound to produce an output which can be converted to a scalar with `ff::FromUniformBytes`. A new `hash_to_F`, which accepts a single argument of the value to hash (removing the potential to insecurely handle the DST by removing the DST entirely). Due to `digest` yielding a `GenericArray`, yet `FromUniformBytes` taking a `const usize`, the `ciphersuite` crate now defines a `FromUniformBytes` trait taking an array (then implemented for all satisfiers of `ff::FromUniformBytes`). In order to get the array type from the `GenericArray`, the output of the hash, `digest` is updated to the `0.11` release candidate which moves to `flexible-array` which solves that problem. The existing, specific `hash_to_F` functions have been moved to `modular-frost` as necessary. `flexible-array` itself is patched to a fork due to https://github.com/RustCrypto/hybrid-array/issues/131.
Message Log
A message log for various services to communicate over.
Each message is checked to be of the claimed origin. Then, it's added to the recipient's message queue. This queue is sequentially handled, FIFO, only dropping messages once the recipient acknowledges it's been handled.
A client which publishes an event specifies its own ID for the publication. If multiple publications with the same ID occur, they are assumed repeats and dropped.
This library always panics as its error-cases should be unreachable, given its intranet status.