AntelopeIO / cdt

Contract Development Toolkit (CDT) is a suite of tools to facilitate C/C++ development of contracts for Antelope blockchains
Other
30 stars 30 forks source link

IF: CDT support for BLS public keys and signatures #215

Closed arhag closed 11 months ago

arhag commented 1 year ago

Depends on https://github.com/AntelopeIO/cdt/issues/202 and https://github.com/AntelopeIO/cdt/issues/251.

This issue doesn't necessarily depend on https://github.com/AntelopeIO/leap/issues/1525, but it may be easier to generate signatures and keys to use for unit tests for this issue if https://github.com/AntelopeIO/leap/issues/1525 was already completed.

Add utility to encode a BLS public key and a BLS signature from binary to a text encoding and to decode in the other direction as well. (There is no need to support encoding/decoding or BLS private keys.)

Add function to verify a proof of possession (PoP) for a public key; see https://github.com/mschoenebeck/aggsigtest/blob/1c4d326e461d5b7c3930f3936494bdbc53f4436d/aggsigtest.cpp#L209-L230. Verify this function can be used to verify the PoPs generated by the leap-util tool (see https://github.com/AntelopeIO/leap/issues/1525).

Nice to have (though not required for this issue): Provide convenient method to verify a signature on some message using the public key. Ensure that the BLS signatures generated from the BLS implementation used in Leap (or the sign function in the bls12-381 library) are able to be verified by this signature verification function in CDT.

arhag commented 1 year ago

Implementation for encoding/decoding BLS public keys can be shared with https://github.com/AntelopeIO/leap/issues/1532.