From bb84619a9af50379c88bc58fbb96c203892bee4a Mon Sep 17 00:00:00 2001 From: SI Date: Sun, 20 Aug 2023 01:16:36 +0000 Subject: [PATCH] allow the password to be choosable --- cryptoctf.sol | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cryptoctf.sol b/cryptoctf.sol index 00f4717..479d5d5 100644 --- a/cryptoctf.sol +++ b/cryptoctf.sol @@ -47,6 +47,7 @@ contract CryptoCTF10 { bool submissionsOpen; mapping (address => mapping (uint => bool)) solves; // address -> challengeID -> solved/not mapping (uint => bool) anySolves; // challengeID -> solved/not + string password; } mapping (uint => Contest) public contests; @@ -54,10 +55,11 @@ contract CryptoCTF10 { event ChallengeAddedOrUpdated(uint contestID, uint indexed challengeID); event ChallengeSolved(uint contestID, uint indexed challengeID, address indexed solver); - function createContest(uint contestID) external { + function createContest(uint contestID, string memory password) external { require(contests[contestID].admin == address(0), "This contest ID has already been registered"); contests[contestID].admin = msg.sender; contests[contestID].submissionsOpen = false; + contests[contestID].password = password; } function setAdmin(uint contestID, address newAdmin) external onlyExistingContest(contestID) onlyAdmin(contestID) { @@ -77,7 +79,7 @@ contract CryptoCTF10 { function register(uint contestID, string memory password) external onlyExistingContest(contestID) { require(contests[contestID].players[msg.sender].status == PlayerStatus.Unverified, "You are already registered or banned in this contest"); - require(keccak256(abi.encodePacked("I_read_it")) == keccak256(abi.encodePacked(password))); + require(keccak256(abi.encodePacked(password)) == keccak256(abi.encodePacked(contests[contestID].password)), "Wrong password"); contests[contestID].players[msg.sender].status = PlayerStatus.Verified; }