90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Copyright 2019 The go-ethereum Authors
 | |
| // This file is part of go-ethereum.
 | |
| //
 | |
| // go-ethereum is free software: you can redistribute it and/or modify
 | |
| // it under the terms of the GNU General Public License as published by
 | |
| // the Free Software Foundation, either version 3 of the License, or
 | |
| // (at your option) any later version.
 | |
| //
 | |
| // go-ethereum is distributed in the hope that it will be useful,
 | |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | |
| // GNU General Public License for more details.
 | |
| //
 | |
| // You should have received a copy of the GNU General Public License
 | |
| // along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
 | |
| 
 | |
| // This file is a test-utility for testing clef-functionality
 | |
| //
 | |
| // Start clef with
 | |
| //
 | |
| // build/bin/clef --4bytedb=./cmd/clef/4byte.json --rpc
 | |
| //
 | |
| // Start geth with
 | |
| //
 | |
| // build/bin/geth --nodiscover --maxpeers 0 --signer http://localhost:8550 console --preload=cmd/clef/tests/testsigner.js
 | |
| //
 | |
| // and in the console simply invoke
 | |
| //
 | |
| // > test()
 | |
| //
 | |
| // You can reload the file via `reload()`
 | |
| 
 | |
| function reload(){
 | |
| 	loadScript("./cmd/clef/tests/testsigner.js");
 | |
| }
 | |
| 
 | |
| function init(){
 | |
|     if (typeof accts == 'undefined' || accts.length == 0){
 | |
|         accts = eth.accounts
 | |
|         console.log("Got accounts ", accts);
 | |
|     }
 | |
| }
 | |
| init()
 | |
| function testTx(){
 | |
|     if( accts && accts.length > 0) {
 | |
|         var a = accts[0]
 | |
|         var txdata = eth.signTransaction({from: a, to: a, value: 1, nonce: 1, gas: 1, gasPrice: 1})
 | |
|         var v = parseInt(txdata.tx.v)
 | |
|         console.log("V value: ", v)
 | |
|         if (v == 37 || v == 38){
 | |
|             console.log("Mainnet 155-protected chainid was used")
 | |
|         }
 | |
|         if (v == 27 || v == 28){
 | |
|             throw new Error("Mainnet chainid was used, but without replay protection!")
 | |
|         }
 | |
|     }
 | |
| }
 | |
| function testSignText(){
 | |
|     if( accts && accts.length > 0){
 | |
|         var a = accts[0]
 | |
|         var r = eth.sign(a, "0x68656c6c6f20776f726c64"); //hello world
 | |
|         console.log("signing response",  r)
 | |
|     }
 | |
| }
 | |
| function testClique(){
 | |
|     if( accts && accts.length > 0){
 | |
|         var a = accts[0]
 | |
|         var r = debug.testSignCliqueBlock(a, 0); // Sign genesis
 | |
|         console.log("signing response",  r)
 | |
|         if( a != r){
 | |
|             throw new Error("Requested signing by "+a+ " but got sealer "+r)
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| function test(){
 | |
|     var tests = [
 | |
|         testTx,
 | |
|         testSignText,
 | |
|         testClique,
 | |
|     ]
 | |
|     for( i in tests){
 | |
|         try{
 | |
|             tests[i]()
 | |
|         }catch(err){
 | |
|             console.log(err)
 | |
|         }
 | |
|     }
 | |
|  }
 |