encapstulate message hashing as views

This commit is contained in:
Ricardo Guilherme Schmidt 2018-04-26 01:48:14 -03:00
parent 6fbb3b703a
commit 3ac4be7bbd

View File

@ -69,9 +69,7 @@ contract MessageTribute is MessageSigned {
require(_timeLimit <= block.timestamp); require(_timeLimit <= block.timestamp);
address grantor = recoverAddress( address grantor = recoverAddress(
getSignHash( getSignHash(
keccak256( getGrantAudienceHash(
address(this),
bytes4(keccak256("grantAudience(bytes32,bool,bool,bytes32)")),
keccak256(_requesterSignature), keccak256(_requesterSignature),
_approve, _approve,
_waive, _waive,
@ -86,9 +84,7 @@ contract MessageTribute is MessageSigned {
granted[hashedSecret] = true; granted[hashedSecret] = true;
address requester = recoverAddress( address requester = recoverAddress(
getSignHash( getSignHash(
keccak256( getRequestAudienceHash(
address(this),
bytes4(keccak256("requestAudience(address,bytes32,uint256)")),
grantor, grantor,
hashedSecret, hashedSecret,
_timeLimit _timeLimit
@ -96,6 +92,7 @@ contract MessageTribute is MessageSigned {
), ),
_requesterSignature _requesterSignature
); );
require(lastAudienceDeniedTimestamp[grantor][requester] + 3 days <= now); require(lastAudienceDeniedTimestamp[grantor][requester] + 3 days <= now);
if(!_approve) if(!_approve)
lastAudienceDeniedTimestamp[grantor][requester] = block.timestamp; lastAudienceDeniedTimestamp[grantor][requester] = block.timestamp;
@ -111,6 +108,44 @@ contract MessageTribute is MessageSigned {
emit AudienceGranted(grantor, requester, _approve); emit AudienceGranted(grantor, requester, _approve);
} }
function getGrantAudienceHash(
bytes32 _requesterSignatureHash,
bool _approve,
bool _waive,
bytes32 _secret
)
public
view
returns(bytes32)
{
return keccak256(
address(this),
bytes4(keccak256("grantAudience(bytes32,bool,bool,bytes32)")),
_requesterSignatureHash,
_approve,
_waive,
_secret
);
}
function getRequestAudienceHash(
address grantor,
bytes32 hashedSecret,
uint _timeLimit
)
public
view
returns(bytes32)
{
return keccak256(
address(this),
bytes4(keccak256("requestAudience(address,bytes32,uint256)")),
grantor,
hashedSecret,
_timeLimit
);
}
/** /**
* @notice Determine if msg.sender ha enough funds to chat with `_to` * @notice Determine if msg.sender ha enough funds to chat with `_to`
* @param _to Account `msg.sender` wishes to talk to * @param _to Account `msg.sender` wishes to talk to