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