Files
fhevm-solidity/examples/CMUX.sol
Clément 'birdy' Danjou cb1b8a27f1 fix() force 0.8.19
2023-09-25 16:37:13 +02:00

29 lines
941 B
Solidity

// SPDX-License-Identifier: BSD-3-Clause-Clear
pragma solidity 0.8.19;
import "../abstracts/EIP712WithModifier.sol";
import "../lib/TFHE.sol";
// Shows the CMUX operation in Solidity.
contract CMUX is EIP712WithModifier {
euint8 internal result;
constructor() EIP712WithModifier("Authorization token", "1") {}
// Set result = if control { ifTrue } else { ifFalse }
function cmux(bytes calldata controlBytes, bytes calldata ifTrueBytes, bytes calldata ifFalseBytes) public {
ebool control = TFHE.asEbool(controlBytes);
euint8 ifTrue = TFHE.asEuint8(ifTrueBytes);
euint8 ifFalse = TFHE.asEuint8(ifFalseBytes);
result = TFHE.cmux(control, ifTrue, ifFalse);
}
function getResult(
bytes32 publicKey,
bytes calldata signature
) public view onlySignedPublicKey(publicKey, signature) returns (bytes memory) {
return TFHE.reencrypt(result, publicKey);
}
}