| 
									
										
										
										
											2019-07-22 12:17:27 +03:00
										 |  |  | // 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/>.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-12 14:00:02 +01:00
										 |  |  | // 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) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |  } |