@@ -7,6 +7,7 @@ var pkg = require('./package.json');
7
7
var fs = require ( 'fs' ) ;
8
8
var https = require ( 'https' ) ;
9
9
var MemoryStream = require ( 'memorystream' ) ;
10
+ var createHash = require ( 'create-hash' ) ;
10
11
11
12
function getVersionList ( cb ) {
12
13
console . log ( 'Retrieving available version list...' ) ;
@@ -24,7 +25,7 @@ function getVersionList (cb) {
24
25
} ) ;
25
26
}
26
27
27
- function downloadBinary ( version ) {
28
+ function downloadBinary ( version , expectedHash ) {
28
29
console . log ( 'Downloading version' , version ) ;
29
30
30
31
var file = fs . createWriteStream ( 'soljson.js' ) ;
@@ -36,6 +37,11 @@ function downloadBinary (version) {
36
37
response . pipe ( file ) ;
37
38
file . on ( 'finish' , function ( ) {
38
39
file . close ( function ( ) {
40
+ var hash = createHash ( 'sha256' ) . update ( fs . readFileSync ( 'soljson.js' ) ) . digest ( ) . toString ( 'hex' )
41
+ if ( expectedHash !== hash ) {
42
+ console . log ( 'Hash mismatch: ' + expectedHash + ' vs ' + hash ) ;
43
+ process . exit ( 1 ) ;
44
+ }
39
45
console . log ( 'Done.' ) ;
40
46
} ) ;
41
47
} ) ;
@@ -47,5 +53,5 @@ console.log('Downloading correct solidity binary...');
47
53
getVersionList ( function ( list ) {
48
54
list = JSON . parse ( list ) ;
49
55
var wanted = pkg . version . match ( / ^ ( \d + \. \d + \. \d + ) $ / ) [ 1 ] ;
50
- downloadBinary ( list . releases [ wanted ] ) ;
56
+ downloadBinary ( list . releases [ wanted ] , pkg . solc [ "sha256" ] ) ;
51
57
} ) ;
0 commit comments