@@ -327,5 +327,47 @@ describe('HDNode', function () {
327327 master . deriveHardened ( c . m )
328328 } , / C o u l d n o t d e r i v e h a r d e n e d c h i l d k e y / )
329329 } )
330+
331+ it ( 'throws on negative indexes' , function ( ) {
332+ var f = fixtures . valid [ 0 ]
333+ var master = HDNode . fromBase58 ( f . master . base58 , NETWORKS_LIST )
334+
335+ assert . throws ( function ( ) {
336+ master . deriveHardened ( - 1 )
337+ } , / E x p e c t e d U I n t 3 1 / )
338+ assert . throws ( function ( ) {
339+ master . derive ( - 1 )
340+ } , / E x p e c t e d U I n t 3 2 / )
341+ } )
342+
343+ it ( 'throws on high indexes' , function ( ) {
344+ var f = fixtures . valid [ 0 ]
345+ var master = HDNode . fromBase58 ( f . master . base58 , NETWORKS_LIST )
346+
347+ assert . throws ( function ( ) {
348+ master . deriveHardened ( 0x80000000 )
349+ } , / E x p e c t e d U I n t 3 1 / )
350+ assert . throws ( function ( ) {
351+ master . derive ( 0x100000000 )
352+ } , / E x p e c t e d U I n t 3 2 / )
353+ } )
354+
355+ it ( 'throws on non-numbers' , function ( ) {
356+ var f = fixtures . valid [ 0 ]
357+ var master = HDNode . fromBase58 ( f . master . base58 , NETWORKS_LIST )
358+
359+ assert . throws ( function ( ) {
360+ master . deriveHardened ( )
361+ } , / E x p e c t e d U I n t 3 1 / )
362+ assert . throws ( function ( ) {
363+ master . derive ( )
364+ } , / E x p e c t e d U I n t 3 2 / )
365+ assert . throws ( function ( ) {
366+ master . deriveHardened ( 'foo' )
367+ } , / E x p e c t e d U I n t 3 1 / )
368+ assert . throws ( function ( ) {
369+ master . derive ( 'foo' )
370+ } , / E x p e c t e d U I n t 3 2 / )
371+ } )
330372 } )
331373} )
0 commit comments