Prove·sync · inline
ᛗ
secp256r1 / Passkey
WebAuthn / Face ID
Verify P-256 signatures. Powers TxPasskey (0x77) — no seed phrases.
0x0000000000000000000000000000000000000100Explorer
65 bytes · 0x04 || X || Y
32-byte hash
64 bytes · R || S
to: 0x0000000000000000000000000000000000000100chainId 1979 · sync
Output
Click Verify to call the precompile.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
contract PasskeyVerifier {
address constant P256 = address(0x100);
/// @notice Verify a P-256 (WebAuthn / Passkey) signature.
/// @param pubkey 65 bytes: 0x04 || X || Y
/// @param message 32 bytes message hash
/// @param sig 64 bytes: R || S
function verify(bytes memory pubkey, bytes32 message, bytes memory sig)
external view returns (bool)
{
bytes memory input = abi.encodePacked(pubkey, message, sig);
(bool ok, bytes memory result) = P256.staticcall(input);
require(ok && result.length > 0, "p256 call failed");
return abi.decode(result, (uint256)) == 1;
}
}