X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=bip39-standalone.html;h=dfeaa651ed6b0e921fe44bc9e76bf78be2fc9271;hb=30c9e79de32e529e9b87b836a1bc808e6dbbc646;hp=9d975eba83e36033edc04dc8745af8430502119d;hpb=38523d36dcce2c11baaf8dd742d02b94c41c7b23;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git diff --git a/bip39-standalone.html b/bip39-standalone.html index 9d975eb..dfeaa65 100644 --- a/bip39-standalone.html +++ b/bip39-standalone.html @@ -14838,7 +14838,39 @@ var Mnemonic = function(language) { } function findDerivationPathErrors(path) { - // TODO + // TODO is not perfect but is better than nothing + // Inspired by + // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors + // and + // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys + var maxDepth = 255; // TODO verify this!! + var maxIndexValue = Math.pow(2, 31); // TODO verify this!! + if (path[0] != "m") { + return "First character must be 'm'"; + } + if (path.length > 1) { + if (path[1] != "/") { + return "Separator must be '/'"; + } + var indexes = path.split("/"); + if (indexes.length > maxDepth) { + return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth; + } + for (var depth = 1; depth 0) { + return "Invalid characters " + invalidChars + " found at depth " + depth; + } + var indexValue = parseInt(index.replace("'", "")); + if (isNaN(depth)) { + return "Invalid number at depth " + depth; + } + if (indexValue > maxIndexValue) { + return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue; + } + } + } return false; }