aere-contracts/contracts/mocks/MockFalcon512Verifier.sol
Aere Network a13a649b77
Some checks are pending
contracts-ci / Install (lockfile) → compile → full test suite (push) Waiting to run
contracts-ci / PQC known-answer tests (NIST vectors) (push) Waiting to run
contracts-ci / Coverage (scoped, with artifacts) (push) Waiting to run
Initial public release
Aere Network public source. Everything here can be checked against the live
chain (chain id 2800, https://rpc.aere.network).

Scope note, stated up front rather than buried: consensus on chain 2800 is
classical secp256k1 ECDSA QBFT. The post-quantum work in this repository is at
the signature, precompile, account and transport layers. Nothing here makes the
consensus post-quantum, and no document in it should be read as claiming so.
2026-07-20 01:02:37 +03:00

47 lines
1.5 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;
/**
* @title MockFalcon512Verifier
* @notice Test-only stand-in for AereFalcon512Verifier used by the AereHybridAuth
* unit tests. Real Falcon-512 signatures cannot be produced inside the
* hardhat test process, so the Falcon leg is mocked with a settable
* result while the on-chain (mainnet) demonstration uses the LIVE
* AereFalcon512Verifier with a genuine reference-generated signature.
*
* By default it echoes acceptance from a per-(pk,message,nonce,compSig)
* allowlist so tests can assert both accept and reject paths precisely.
*/
contract MockFalcon512Verifier {
bool public defaultResult;
mapping(bytes32 => bool) public accept; // keccak(pk,message,nonce,compSig) => result override
mapping(bytes32 => bool) private _hasOverride;
function setDefault(bool v) external {
defaultResult = v;
}
function setResult(
bytes calldata pk,
bytes calldata message,
bytes calldata nonce,
bytes calldata compSig,
bool v
) external {
bytes32 k = keccak256(abi.encode(pk, message, nonce, compSig));
accept[k] = v;
_hasOverride[k] = true;
}
function verify(
bytes memory pk,
bytes memory message,
bytes memory nonce,
bytes memory compSig
) external view returns (bool) {
bytes32 k = keccak256(abi.encode(pk, message, nonce, compSig));
if (_hasOverride[k]) return accept[k];
return defaultResult;
}
}