'use strict'; angular.module('copayApp.services') .factory('hwWallet', function($log, bwcService) { var root = {}; // Ledger magic number to get xPub without user confirmation root.ENTROPY_INDEX_PATH = "0xb11e/"; root.UNISIG_ROOTPATH = 44; root.MULTISIG_ROOTPATH = 48; root.LIVENET_PATH = 0; root._err = function(data) { var msg = 'Hardware Wallet Error: ' + (data.error || data.message || 'unknown'); $log.warn(msg); return msg; }; root.getRootPath = function(device, isMultisig, account) { if (!isMultisig) return root.UNISIG_ROOTPATH; // Compat if (device == 'ledger' && account ==0) return root.UNISIG_ROOTPATH; return root.MULTISIG_ROOTPATH; }; root.getAddressPath = function(device, isMultisig, account) { return root.getRootPath(device,isMultisig,account) + "'/" + root.LIVENET_PATH + "'/" + account + "'"; } root.getEntropyPath = function(device, isMultisig, account) { var path; // Old ledger wallet compat if (device == 'ledger' && account == 0) return root.ENTROPY_INDEX_PATH + "0'"; return root.ENTROPY_INDEX_PATH + root.getRootPath(device,isMultisig,account) + "'/" + account + "'"; }; root.pubKeyToEntropySource = function(xPubKey) { var b = bwcService.getBitcore(); var x = b.HDPublicKey(xPubKey); return x.publicKey.toString(); }; return root; });