pub trait NonAggregatable: Pair {
// Provided method
fn proof_of_possession_statement(pk: &impl Public) -> Vec<u8> ⓘ { ... }
}
Expand description
Marker trait to identify whether the scheme is not aggregatable.
Aggregatable schemes may change/optimize implementation parts such as Proof Of Possession or other specifics.
This is specifically because implementation of proof of possession for aggregatable schemes is security critical.
We would like to prevent aggregatable scheme from unknowingly generating signatures which aggregate to false albeit valid proof of possession aka rogue key attack. We ensure that by separating signing and generating proof_of_possession at the API level.
Rogue key attack however is not immediately applicable to non-aggregatable scheme when even if an honest signing oracle is tricked to sign a rogue proof_of_possession, it is not possible to aggregate it to generate a valid proof for a key the attack does not possess. Therefore we do not require non-aggregatable schemes to prevent proof_of_possession confirming signatures at API level
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.