mirror of
https://github.com/bitcoin/bips.git
synced 2025-05-19 12:08:05 +00:00
Fail if any point is infinity when verifying
This commit is contained in:
parent
1f875a3706
commit
687198d72b
@ -74,6 +74,7 @@ Input:
|
||||
* An optional message ''m'': a 32-byte array<ref name="why_include_a_message"> ''' Why include a message as an input?''' This could be useful for protocols that want to authorize on a compound statement, not just knowledge of a scalar. This allows the protocol to combine knowledge of the scalar and the statement.</ref>
|
||||
|
||||
The algorithm ''VerifyProof(A, B, C, proof, G, m)'' is defined as:
|
||||
* Fail if any of ''is_infinite(A)'', ''is_infinite(B)'', ''is_infinite(C)'', ''is_infinite(G)''
|
||||
* Let ''e = int(proof[0:32])''.
|
||||
* Let ''s = int(proof[32:64])''; fail if ''s ≥ n''.
|
||||
* Let ''R<sub>1</sub> = s⋅G - e⋅A''.
|
||||
|
@ -75,6 +75,8 @@ def dleq_generate_proof(
|
||||
def dleq_verify_proof(
|
||||
A: GE, B: GE, C: GE, proof: bytes, G: GE = G, m: bytes | None = None
|
||||
) -> bool:
|
||||
if A.infinity or B.infinity or C.infinity or G.infinity:
|
||||
return False
|
||||
assert len(proof) == 64
|
||||
e = int.from_bytes(proof[:32], "big")
|
||||
s = int.from_bytes(proof[32:], "big")
|
||||
|
Loading…
x
Reference in New Issue
Block a user