File tree Expand file tree Collapse file tree 2 files changed +22
-2
lines changed Expand file tree Collapse file tree 2 files changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -56,8 +56,13 @@ Hash.prototype.digest = function (enc) {
56
56
}
57
57
58
58
// to this append the block which is equal to the number l written in binary
59
- // TODO: handle case where l is > Math.pow(2, 29)
60
- this . _block . writeInt32BE ( l , this . _blockSize - 4 )
59
+ if ( l <= 0xffffffff ) {
60
+ this . _block . writeUInt32BE ( l , this . _blockSize - 4 )
61
+ } else {
62
+ var ll = l & 0xffffffff
63
+ this . _block . writeUInt32BE ( ( l - ll ) / 0x100000000 , this . _blockSize - 8 )
64
+ this . _block . writeUInt32BE ( ll , this . _blockSize - 4 )
65
+ }
61
66
62
67
var hash = this . _update ( this . _block ) || this . _hash ( )
63
68
Original file line number Diff line number Diff line change @@ -83,3 +83,18 @@ tape('hex encoding', function (t) {
83
83
84
84
t . end ( )
85
85
} )
86
+
87
+ tape ( 'call digest for more than MAX_UINT32 bits of data' , function ( t ) {
88
+ var _hash = crypto . createHash ( 'sha1' )
89
+ var hash = new Sha1 ( )
90
+ var bigData = new Buffer ( Math . pow ( 2 , 32 ) / 8 )
91
+
92
+ hash . update ( bigData )
93
+ _hash . update ( bigData )
94
+
95
+ var a = hash . digest ( 'hex' )
96
+ var e = _hash . digest ( 'hex' )
97
+
98
+ t . equal ( a , e )
99
+ t . end ( )
100
+ } )
You can’t perform that action at this time.
0 commit comments