w3f / bls

Aggregatable BLS sigantures
65 stars 15 forks source link

implement verification for Schnorr PoP #25

Closed drskalman closed 3 years ago

drskalman commented 3 years ago

verify_pok defined at https://github.com/w3f/bls/blob/skalman-schnorr-pok/src/bls_pop.rs#L83 need to be implemented.

burdges commented 3 years ago

We should implement the Schnorr DLEQ proof as a general signature optimizsation, which then shrinks to BLS, not as some special proof-of-possession tool, and then maybe support using that in the proof-of-possession.

We'll check proofs-of-possession only when starting the node, and once per epoch, so the Schnorr DLEQ proof optimization makes little sense for proofs-of-possession. It makes sense for regular signatures which come all the time however.

We should explore doing some ProofsOfPossession trait but not quite sure how it works actually since it's a property of an entire key infrastructure. It's logical methods look like an iteration over all public keys, BLS signatures, and Schnorr DLEQ proofs, and then some free function checks all these, so the ProofsOfPossession trait itself cannot ensure the ProofsOfPossession were checked, only that users wrote the code to check them.

The problem here is that you cannot really make a trait for users inserting data into their own database.

drskalman commented 3 years ago

This is done in 7e2aaa3 but the verification test doesn't pass yet.

drskalman commented 3 years ago

Signing problem due to random integer bigger than mod is temproraly solved, but the signature still does not verify.

drskalman commented 3 years ago

a8761d8 fixed verification bug do to bogus schnorr formula and zeroing more randomness byte to make deserialize to field works.