def test_fast_aggregate_verify(SKs, message): PKs = [G2ProofOfPossession.PrivToPub(sk) for sk in SKs] signatures = [G2ProofOfPossession.Sign(sk, message) for sk in SKs] aggregate_signature = G2ProofOfPossession.Aggregate(signatures) assert G2ProofOfPossession.FastAggregateVerify(PKs, message, aggregate_signature)
def compute_aggregate_signature(SKs, message): PKs = [G2ProofOfPossession.SkToPk(sk) for sk in SKs] signatures = [G2ProofOfPossession.Sign(sk, message) for sk in SKs] aggregate_signature = G2ProofOfPossession.Aggregate(signatures) return (PKs, aggregate_signature)
def Aggregate(signatures: Sequence[BLSSignature]) -> BLSSignature: # py_ecc use a different EMPTY_SIGNATURE. Return the Trinity one here: if len(signatures) == 0: return EMPTY_SIGNATURE return G2ProofOfPossession.Aggregate(signatures)
def Aggregate(signatures): return bls.Aggregate(signatures)