Fakultas Ilmu Komputer UI

Skip to content
Snippets Groups Projects
Commit 7a101727 authored by Christian Denata's avatar Christian Denata
Browse files

Adding contracts

parent 4cf75f3c
Branches
No related tags found
No related merge requests found
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract DigitalSignature {
address public admin;
mapping(address => bool) public whitelisted;
constructor() {
admin = msg.sender;
}
struct DigitalSignatureOwnership {
address owner;
string hash;
string digitalSignature;
}
mapping(string => DigitalSignatureOwnership) public digitalSignatures;
modifier onlyAdmin() {
require(msg.sender == admin, "Caller is not the admin");
_;
}
modifier onlyWhitelisted() {
require(whitelisted[msg.sender] == true, "Not whitelised");
_;
}
function addWhitelist(address trustworthy) public onlyAdmin {
whitelisted[trustworthy] = true;
}
function addOrUpdateDigitalSignature(
string memory _ref,
string memory _hash,
string memory _digitalSignature
) public onlyWhitelisted {
DigitalSignatureOwnership memory digSigCurrent = digitalSignatures[_ref];
if (digSigCurrent.owner == address(0)) {
digSigCurrent.owner = msg.sender;
digSigCurrent.hash = _hash;
} else {
require(digSigCurrent.owner == msg.sender, "Not owner");
}
require(keccak256(bytes(digSigCurrent.hash)) == keccak256(bytes(_hash)), "Different hash");
digitalSignatures[_ref].digitalSignature = _digitalSignature;
}
function getDigitalSignature(string memory _ref) public view returns (string memory) {
return digitalSignatures[_ref].digitalSignature;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment