referrerpolicy=no-referrer-when-downgrade
sp_core::proof_of_possession

Trait NonAggregatable

Source
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§

Source

fn proof_of_possession_statement(pk: &impl Public) -> Vec<u8>

Default proof_of_possession statement.

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.

Implementors§

Source§

impl NonAggregatable for sp_core::bandersnatch::Pair

Source§

impl NonAggregatable for sp_core::ecdsa::Pair

Source§

impl NonAggregatable for sp_core::ed25519::Pair

Source§

impl NonAggregatable for sp_core::sr25519::Pair