Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clarify that PopVerify is a precondition for FastAggregateVerify #29

Merged
merged 2 commits into from
Jun 23, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions draft-irtf-cfrg-bls-signature.md
Original file line number Diff line number Diff line change
Expand Up @@ -940,7 +940,7 @@ the standard API ((#blsapi)):

All public keys used by Verify, AggregateVerify, and FastAggregateVerify
MUST be accompanied by a proof of possession, and the result of evaluating
PopVerify on the public key and proof MUST be VALID.
PopVerify on each public key and its proof MUST be VALID.

### Parameters {#popparams}

Expand Down Expand Up @@ -1022,6 +1022,13 @@ Procedure:

FastAggregateVerify uses several functions defined in (#coreops).

All public keys passed as arguments to this algorithm MUST have a
corresponding proof of possession, and the result of evaluating
PopVerify on each public key and its proof MUST be VALID.
The caller is responsible for ensuring that this precondition is met.
If it is violated, this scheme provides no security against aggregate
signature forgery.

~~~
result = FastAggregateVerify((PK_1, ..., PK_n), message, signature)

Expand All @@ -1033,7 +1040,11 @@ Inputs:
Outputs:
- result, either VALID or INVALID.

Precondition: n >= 1, otherwise return INVALID.
Preconditions:
- n >= 1, otherwise return INVALID.
- The caller MUST know a proof of possession for all PK_i, and the
result of evaluating PopVerify on PK_i and this proof MUST be VALID.
See discussion above.

Procedure:
1. aggregate = pubkey_to_point(PK_1)
Expand Down