1. Overview
  2. Docs


A proof of possession scheme uses a separate public key validation step, called a proof of possession, to defend against rogue key attacks. This enables an optimization to aggregate signature verification for the case that all signatures are on the same message.

type proof = Bytes.t
val sign : sk -> Bytes.t -> signature

Equivalent to core_sign with the DST given in the specification

val verify : pk -> Bytes.t -> signature -> bool

Equivalent to core_verify with the DST given in the specification

val pop_prove : sk -> proof

pop_proof sk implements

val pop_verify : pk -> proof -> bool

pop_verify pk proof implements

val aggregate_verify : (pk * proof) list -> Bytes.t -> signature -> bool

aggregate_verify pks msg aggregated_signature performs a aggregate signature verification. It supposes the same message msg has been signed. It implements the FastAggregateVerify algorithm specified in