@@ -13,8 +13,9 @@ var inputs = [
13
13
[ '123456789abcdef123456789abcdef123456789abcdef123456789ab' , 'ascii' ] ,
14
14
[ '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde' , 'ascii' ] ,
15
15
[ '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' , 'ascii' ] ,
16
- [ 'foobarbaz' , 'ascii' ]
17
- ] ;
16
+ [ 'foobarbaz' , 'ascii' ] ,
17
+ typeof Uint16Array === 'function' ? [ new Uint16Array ( [ 1 , 2 , 3 ] ) ] : null
18
+ ] . filter ( Boolean ) ;
18
19
19
20
tape ( "hash is the same as node's crypto" , function ( t ) {
20
21
inputs . forEach ( function ( v ) {
@@ -33,7 +34,7 @@ tape('call update multiple times', function (t) {
33
34
var sha1hash = crypto . createHash ( 'sha1' ) ;
34
35
35
36
for ( var i = 0 ; i < v [ 0 ] . length ; i = ( i + 1 ) * 2 ) {
36
- var s = v [ 0 ] . substring ( i , ( i + 1 ) * 2 ) ;
37
+ var s = v [ 0 ] . slice ( i , ( i + 1 ) * 2 ) ;
37
38
hash . update ( s , v [ 1 ] ) ;
38
39
sha1hash . update ( s , v [ 1 ] ) ;
39
40
}
@@ -72,7 +73,7 @@ tape('hex encoding', function (t) {
72
73
var sha1hash = crypto . createHash ( 'sha1' ) ;
73
74
74
75
for ( var i = 0 ; i < v [ 0 ] . length ; i = ( i + 1 ) * 2 ) {
75
- var s = v [ 0 ] . substring ( i , ( i + 1 ) * 2 ) ;
76
+ var s = v [ 0 ] . slice ( i , ( i + 1 ) * 2 ) ;
76
77
hash . update ( Buffer . from ( s , 'ascii' ) . toString ( 'hex' ) , 'hex' ) ;
77
78
sha1hash . update ( Buffer . from ( s , 'ascii' ) . toString ( 'hex' ) , 'hex' ) ;
78
79
}
@@ -86,6 +87,29 @@ tape('hex encoding', function (t) {
86
87
t . end ( ) ;
87
88
} ) ;
88
89
90
+ tape ( 'throws on invalid input' , function ( t ) {
91
+ var invalid = [
92
+ { } , // non-arrayish
93
+ { length : 20 } , // undefined values
94
+ [ NaN ] , // non-numbers
95
+ [ [ ] ] , // non-numbers
96
+ [ 1 , 1.5 ] , // non-integers
97
+ [ 1 , 256 ] , // out of bounds
98
+ [ - 1 , 0 ] // out of bounds
99
+ ] ;
100
+
101
+ invalid . forEach ( function ( input ) {
102
+ var hash = new Sha1 ( ) ;
103
+
104
+ t [ 'throws' ] ( function ( ) {
105
+ hash . update ( input ) ;
106
+ hash . digest ( 'hex' ) ;
107
+ } ) ;
108
+ } ) ;
109
+
110
+ t . end ( ) ;
111
+ } ) ;
112
+
89
113
tape ( 'call digest for more than MAX_UINT32 bits of data' , function ( t ) {
90
114
var sha1hash = crypto . createHash ( 'sha1' ) ;
91
115
var hash = new Sha1 ( ) ;
0 commit comments