EEVM.Precompiles.P256Verify (eevm v0.1.0)

Copy Markdown View Source

P256VERIFY precompile — address 0x100 (EIP-7951, Osaka onward).

Verifies an ECDSA signature over secp256r1 (NIST P-256).

Gas schedule

Flat 6900 gas, charged whether or not the signature verifies.

Input format

Exactly 160 bytes: hash(32) || r(32) || s(32) || qx(32) || qy(32).

Output format

32-byte 0x00..01 when the signature is valid; empty output when it is not or when the input fails validation (wrong length, r/s outside (0, n), qx/qy not below p, or (qx, qy) not on the curve, which also rejects the (0, 0) point-at-infinity encoding). The precompile never reverts.

Verification is EEVM.Crypto.ECDSA.verify/5, which rejects a point-at-infinity R' and compares R'.x mod n against r, as EIP-7951 requires.

Summary

Functions

Executes the P256VERIFY precompile.

Functions

execute(input, gas_limit)

@spec execute(binary(), non_neg_integer()) ::
  {:ok, binary(), non_neg_integer()} | {:error, :out_of_gas}

Executes the P256VERIFY precompile.