Wallet/src/js/services/hwWallet.js

50 lines
1.4 KiB
JavaScript
Raw Normal View History

2015-11-04 00:53:26 -03:00
'use strict';
angular.module('copayApp.services')
2015-11-04 01:54:54 -03:00
.factory('hwWallet', function($log, bwcService) {
2015-11-04 00:53:26 -03:00
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) {
2015-11-04 01:54:54 -03:00
var msg = 'Hardware Wallet Error: ' + (data.error || data.message || 'unknown');
2015-11-04 00:53:26 -03:00
$log.warn(msg);
return msg;
2015-11-04 00:53:26 -03:00
};
2015-11-10 20:05:05 -03:00
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 + "'";
2015-11-04 00:53:26 -03:00
}
2015-11-10 20:05:05 -03:00
root.getEntropyPath = function(device, isMultisig, account) {
2015-11-04 17:50:05 -03:00
var path;
2015-11-10 20:05:05 -03:00
// 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 + "'";
2015-11-04 00:53:26 -03:00
};
root.pubKeyToEntropySource = function(xPubKey) {
var b = bwcService.getBitcore();
var x = b.HDPublicKey(xPubKey);
return x.publicKey.toString();
};
return root;
});