cic-contracts/solidity/Offline.sol

24 lines
1.0 KiB
Solidity

pragma solidity >=0.6.12;
// Author: Louis Holbrook <dev@holbrook.no> 0826EDA1702D1E87C6E2875121D2E7BB88C2A746
// SPDX-License-Identifier: AGPL-3.0-or-later
// File-version: 1
interface IOffline {
// Verify signer and data
// Check input assuming signature is valid against contract instance.
function isOfflineValid(address _signer, bytes memory _data) external view returns(bool);
// Verify signature against data, and isOfflineValid() against data and signer (as validator)
// Signature must be ERC191 version 0x00 with contract instance as validator.
function verifyOfflineRequest(bytes memory _data, bytes memory _signature) external view returns(bool);
// Change state if signature and signer is valid.
// Call verifyOfflineRequest and:
// - revert if it returns false.
// - return 0 if state is changed according to the request.
// - return any other valid to indicate an application specific error.
function executeOfflineRequest(bytes memory _data, bytes memory _signature) external returns(uint256);
}