From 02b243e9d49cf3bf647f882e08c7522564448824 Mon Sep 17 00:00:00 2001 From: Esteban Ordano Date: Wed, 29 Oct 2014 13:23:11 -0300 Subject: [PATCH] Add address sanitizer to proposal creation --- js/models/Wallet.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/js/models/Wallet.js b/js/models/Wallet.js index 8b71acbef..f9f067b7f 100644 --- a/js/models/Wallet.js +++ b/js/models/Wallet.js @@ -9,6 +9,7 @@ var async = require('async'); var cryptoUtil = require('../util/crypto'); var bitcore = require('bitcore'); +var BIP21 = bitcore.BIP21; var bignum = bitcore.Bignum; var coinUtil = bitcore.util; var buffertools = bitcore.buffertools; @@ -2307,6 +2308,14 @@ Wallet.prototype.createTx = function(toAddress, amountSatStr, comment, opts, cb) }); }; +// TODO (eordano): Move this to bitcore +var sanitize = function(address) { + if (/^bitcoin:/g.test(address)) { + return new BIP21(address).address; + } + return new Address(address); +}; + /** * @desc Create a transaction proposal * @TODO: Document more @@ -2315,8 +2324,9 @@ Wallet.prototype.createTxSync = function(toAddress, amountSatStr, comment, utxos var pkr = this.publicKeyRing; var priv = this.privateKey; opts = opts || {}; + toAddress = sanitize(toAddress); - preconditions.checkArgument(new Address(toAddress).network().name === this.getNetworkName(), 'networkname mismatch'); + preconditions.checkArgument(toAddress.network().name === this.getNetworkName(), 'networkname mismatch'); preconditions.checkState(pkr.isComplete(), 'pubkey ring incomplete'); preconditions.checkState(priv, 'no private key'); if (comment) preconditions.checkArgument(comment.length <= 100); @@ -2337,7 +2347,7 @@ Wallet.prototype.createTxSync = function(toAddress, amountSatStr, comment, utxos b = new Builder(opts) .setUnspent(utxos) .setOutputs([{ - address: toAddress, + address: toAddress.data, amountSatStr: amountSatStr, }]); } catch (e) {