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