Closed zhenfeizhang closed 5 years ago
There's no need to standardize serialization of secret keys and sub secret key, since these are internal to the implementation.
For public keys and signatures, I don't really have an opinion, but it'd make sense to follow whatever is done for BLS signatures, etc. :)
For h, h0, h1, etc, we should fix some special string, and then run hash_to_Gx(string | counter).
Thanks! Will follow BLS signature's encoding. And also use hash to group to generate the public parameters.
Use the serialization method in the main body of this ticket.
Group elements
ciphersuite id
Maps a
u8
to a set of parametersExample (to be decided):
0x00
Parameters
|ciphersuite id| d | serialize(g2) | serialize(h) | serialize(h0) | ... | serialize(hd)
public key
|ciphersuite id|serial(pk)|
subsecretkey
|time stamp|hv_length (i.e., t+1) | serial(g2r) | serial(hpoly) | serial(h0) ... | serial(ht)
secret key
|ciphersuite id| number of ssk-s | prng |serial(first ssk) | serial(second ssk)| ...
note: the time stamp is not stored for secret key. It can be obtained from its first ssk.
signature
|ciphersuite id| time |sigma1|sigma2|