@ -24,31 +24,22 @@ var derived_0_1_200000 = 'xpub6BqyndF6rkBNTV6LXwiY8Pco8aqctqq7tGEUdA8fmGDTnDJphn
describe ( 'HDPublicKey interface' , function ( ) {
var expectFail = function ( func , errorType ) {
var got = null ;
var error = null ;
try {
( function ( ) {
func ( ) ;
} catch ( e ) {
error = e ;
got = e instanceof errorType ;
}
if ( ! error instanceof errorType ) {
console . log ( 'Error' , typeof error ) ;
}
// expect(got).to.equal(true);
} ) . should . throw ( errorType ) ;
} ;
var expectDerivationFail = function ( argument , error ) {
return expectFail ( function ( ) {
( function ( ) {
var pubkey = new HDPublicKey ( xpubkey ) ;
x pubkey. derive ( argument ) ;
} , error ) ;
pubkey . derive ( argument ) ;
} ) . should . throw ( error ) ;
} ;
var expectFailBuilding = function ( argument , error ) {
return expectFail ( function ( ) {
( function ( ) {
return new HDPublicKey ( argument ) ;
} , error ) ;
} ) . should . throw ( error ) ;
} ;
describe ( 'creation formats' , function ( ) {
@ -225,55 +216,61 @@ describe('HDPublicKey interface', function() {
it ( 'doesn\'t allow other parameters like m\' or M\' or "s"' , function ( ) {
/* jshint quotmark: double */
expectDerivationFail ( "m'" , hdErrors . InvalidDerivationArgument ) ;
expectDerivationFail ( "M'" , hdErrors . InvalidDerivationArgument ) ;
expectDerivationFail ( "1" , hdErrors . InvalidDerivationArgument ) ;
expectDerivationFail ( "S" , hdErrors . InvalidDerivationArgument ) ;
expectDerivationFail ( "m'" , hdErrors . InvalidIndexCantDeriveHardened ) ;
expectDerivationFail ( "M'" , hdErrors . InvalidIndexCantDeriveHardened ) ;
expectDerivationFail ( "1" , hdErrors . InvalidPath ) ;
expectDerivationFail ( "S" , hdErrors . InvalidPath ) ;
} ) ;
it ( 'can\'t derive hardened keys' , function ( ) {
expectFail ( function ( ) {
return new HDPublicKey ( xpubkey ) . derive ( HDPublicKey . Hardened ) ;
} , hdErrors . InvalidDerivationArgument ) ;
} , hdErrors . InvalidIndexCantDeriveHardened ) ;
} ) ;
it ( 'validates correct paths' , function ( ) {
var valid ;
it ( 'can\'t derive hardened keys via second argument' , function ( ) {
expectFail ( function ( ) {
return new HDPublicKey ( xpubkey ) . derive ( 5 , true ) ;
} , hdErrors . InvalidIndexCantDeriveHardened ) ;
} ) ;
valid = HDPublicKey . isValidPath ( 'm/123/12' ) ;
valid . should . equal ( true ) ;
it ( 'validates correct paths' , function ( ) {
var valid ;
valid = HDPublicKey . isValidPath ( 'm' ) ;
valid . should . equal ( true ) ;
valid = HDPublicKey . isValidPath ( 'm/123/12 ' ) ;
valid . should . equal ( true ) ;
valid = HDPublicKey . isValidPath ( 123 ) ;
valid . should . equal ( true ) ;
} ) ;
valid = HDPublicKey . isValidPath ( 'm' ) ;
valid . should . equal ( true ) ;
it ( 'rejects illegal paths' , function ( ) {
var valid ;
valid = HDPublicKey . isValidPath ( 123 ) ;
valid . should . equal ( true ) ;
} ) ;
valid = HDPublicKey . isValidPath ( 'm/-1/12' ) ;
valid . should . equal ( false ) ;
it ( 'rejects illegal paths' , function ( ) {
var valid ;
valid = HDPublicKey . isValidPath ( "m/0'/12" ) ;
valid . should . equal ( false ) ;
valid = HDPublicKey . isValidPath ( 'm/-1/12' ) ;
valid . should . equal ( false ) ;
valid = HDPublicKey . isValidPath ( "m/8000000000 /12" ) ;
valid . should . equal ( false ) ;
valid = HDPublicKey . isValidPath ( "m/0' /12" ) ;
valid . should . equal ( false ) ;
valid = HDPublicKey . isValidPath ( 'bad path' ) ;
valid . should . equal ( false ) ;
valid = HDPublicKey . isValidPath ( "m/8000000000/12" ) ;
valid . should . equal ( false ) ;
valid = HDPublicKey . isValidPath ( - 1 ) ;
valid . should . equal ( false ) ;
valid = HDPublicKey . isValidPath ( 'bad path' ) ;
valid . should . equal ( false ) ;
valid = HDPublicKey . isValidPath ( 8000000000 ) ;
valid . should . equal ( false ) ;
valid = HDPublicKey . isValidPath ( - 1 ) ;
valid . should . equal ( false ) ;
valid = HDPublicKey . isValidPath ( HDPublicKey . Hardened ) ;
valid . should . equal ( false ) ;
} ) ;
valid = HDPublicKey . isValidPath ( 8000000000 ) ;
valid . should . equal ( false ) ;
valid = HDPublicKey . isValidPath ( HDPublicKey . Hardened ) ;
valid . should . equal ( false ) ;
} ) ;
it ( 'should use the cache' , function ( ) {
var pubkey = new HDPublicKey ( xpubkey ) ;