aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contracts/src/2.0.0/test/TestWallet/TestWallet.sol
diff options
context:
space:
mode:
authorAmir Bandeali <abandeali1@gmail.com>2018-06-30 09:36:00 +0800
committerGitHub <noreply@github.com>2018-06-30 09:36:00 +0800
commit6c34255a3e45a2f0b85dd7e9d925c7a789f603f1 (patch)
treea67cd2c3eb6434651dccef2cb21e65feda29b05f /packages/contracts/src/2.0.0/test/TestWallet/TestWallet.sol
parent762c0143eb10306ca70b0f206e80eb9aed925f99 (diff)
parent41064adc6689deb8febcf833f6987957e845b477 (diff)
downloaddexon-sol-tools-6c34255a3e45a2f0b85dd7e9d925c7a789f603f1.tar
dexon-sol-tools-6c34255a3e45a2f0b85dd7e9d925c7a789f603f1.tar.gz
dexon-sol-tools-6c34255a3e45a2f0b85dd7e9d925c7a789f603f1.tar.bz2
dexon-sol-tools-6c34255a3e45a2f0b85dd7e9d925c7a789f603f1.tar.lz
dexon-sol-tools-6c34255a3e45a2f0b85dd7e9d925c7a789f603f1.tar.xz
dexon-sol-tools-6c34255a3e45a2f0b85dd7e9d925c7a789f603f1.tar.zst
dexon-sol-tools-6c34255a3e45a2f0b85dd7e9d925c7a789f603f1.zip
Merge pull request #781 from 0xProject/refactor/contracts/fileStructure
Update contracts file structure
Diffstat (limited to 'packages/contracts/src/2.0.0/test/TestWallet/TestWallet.sol')
-rw-r--r--packages/contracts/src/2.0.0/test/TestWallet/TestWallet.sol65
1 files changed, 65 insertions, 0 deletions
diff --git a/packages/contracts/src/2.0.0/test/TestWallet/TestWallet.sol b/packages/contracts/src/2.0.0/test/TestWallet/TestWallet.sol
new file mode 100644
index 000000000..17dee9e9c
--- /dev/null
+++ b/packages/contracts/src/2.0.0/test/TestWallet/TestWallet.sol
@@ -0,0 +1,65 @@
+/*
+
+ Copyright 2018 ZeroEx Intl.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+*/
+
+pragma solidity ^0.4.24;
+
+import "../../protocol/Exchange/interfaces/IWallet.sol";
+import "../../utils/LibBytes/LibBytes.sol";
+
+contract TestWallet is
+ IWallet
+{
+ using LibBytes for bytes;
+
+ string constant LENGTH_65_REQUIRED = "LENGTH_65_REQUIRED";
+
+ // The owner of this wallet.
+ address WALLET_OWNER;
+
+ /// @dev constructs a new `TestWallet` with a single owner.
+ /// @param walletOwner The owner of this wallet.
+ constructor (address walletOwner) public {
+ WALLET_OWNER = walletOwner;
+ }
+
+ /// @dev Validates an EIP712 signature.
+ /// The signer must match the owner of this wallet.
+ /// @param hash Message hash that is signed.
+ /// @param eip712Signature Proof of signing.
+ /// @return Validity of signature.
+ function isValidSignature(
+ bytes32 hash,
+ bytes eip712Signature
+ )
+ external
+ view
+ returns (bool isValid)
+ {
+ require(
+ eip712Signature.length == 65,
+ LENGTH_65_REQUIRED
+ );
+
+ uint8 v = uint8(eip712Signature[0]);
+ bytes32 r = eip712Signature.readBytes32(1);
+ bytes32 s = eip712Signature.readBytes32(33);
+ address recoveredAddress = ecrecover(hash, v, r, s);
+ isValid = WALLET_OWNER == recoveredAddress;
+ return isValid;
+ }
+}