SK=0 (point at infinity PK) is disallowed in -04 spec. Update KeyGen, KeyValidate correspondingly.
Add the missing KeyValidate to _CoreAggregateVerify: It wasn't a bug because _CoreAggregateVerify itself has checked pubkey_to_G1, but now it also needs to check the point at infinity PK.
Add input validations APIs _is_valid_privkey, _is_valid_pubkey, _is_valid_message, and _is_valid_signature. Reasons:
To check input types strictly since Python is a dynamically-typed language.
To follow the spec description more tightly.
As a workaround for PopVerify-able checks. e.g., ensure PK is not the point at infinity in FastAggregateVerify.
What was wrong?
Update to IETF BLS draft 04
How was it fixed?
SK=0
(point at infinity PK) is disallowed in -04 spec. UpdateKeyGen
,KeyValidate
correspondingly.KeyValidate
to_CoreAggregateVerify
: It wasn't a bug because_CoreAggregateVerify
itself has checkedpubkey_to_G1
, but now it also needs to check the point at infinity PK._is_valid_privkey
,_is_valid_pubkey
,_is_valid_message
, and_is_valid_signature
. Reasons:FastAggregateVerify
.Cute Animal Picture