encrypt/decrypt rejection comment

This commit is contained in:
Ivan Socolsky 2015-02-20 15:11:30 -03:00
parent c8c185ec2e
commit 5a3b754ea1
2 changed files with 21 additions and 18 deletions

View File

@ -17,12 +17,12 @@ var BASE_URL = 'http://localhost:3001/copay/api';
var WALLET_CRITICAL_DATA = ['xPrivKey', 'm', 'publicKeyRing', 'sharedEncryptingKey']; var WALLET_CRITICAL_DATA = ['xPrivKey', 'm', 'publicKeyRing', 'sharedEncryptingKey'];
function _encryptProposalMessage(message, encryptingKey) { function _encryptMessage(message, encryptingKey) {
if (!message) return null; if (!message) return null;
return WalletUtils.encryptMessage(message, encryptingKey); return WalletUtils.encryptMessage(message, encryptingKey);
}; };
function _decryptProposalMessage(message, encryptingKey) { function _decryptMessage(message, encryptingKey) {
if (!message) return ''; if (!message) return '';
try { try {
return WalletUtils.decryptMessage(message, encryptingKey); return WalletUtils.decryptMessage(message, encryptingKey);
@ -31,6 +31,15 @@ function _decryptProposalMessage(message, encryptingKey) {
} }
}; };
function _processTxps(txps, encryptingKey) {
_.each([].concat(txps), function(txp) {
txp.decryptedMessage = _decryptMessage(txp.message, encryptingKey);
_.each(txp.actions, function(action) {
action.comment = _decryptMessage(action.comment, encryptingKey);
});
});
};
function _parseError(body) { function _parseError(body) {
if (_.isString(body)) { if (_.isString(body)) {
try { try {
@ -305,12 +314,9 @@ API.prototype.getStatus = function(cb) {
if (err) return cb(err); if (err) return cb(err);
var url = '/v1/wallets/'; var url = '/v1/wallets/';
self._doGetRequest(url, data, function(err, body) { self._doGetRequest(url, data, function(err, result) {
_.each(body.pendingTxps, function(txp) { _processTxps(result.pendingTxps, data.sharedEncryptingKey);
txp.decryptedMessage = _decryptProposalMessage(txp.message, data.sharedEncryptingKey); return cb(err, result, data.copayerId);
});
return cb(err, body, data.copayerId);
}); });
}); });
}; };
@ -335,7 +341,7 @@ API.prototype.sendTxProposal = function(opts, cb) {
var args = { var args = {
toAddress: opts.toAddress, toAddress: opts.toAddress,
amount: opts.amount, amount: opts.amount,
message: _encryptProposalMessage(opts.message, data.sharedEncryptingKey), message: _encryptMessage(opts.message, data.sharedEncryptingKey),
}; };
var hash = WalletUtils.getProposalHash(args.toAddress, args.amount, args.message); var hash = WalletUtils.getProposalHash(args.toAddress, args.amount, args.message);
args.proposalSignature = WalletUtils.signMessage(hash, data.signingPrivKey); args.proposalSignature = WalletUtils.signMessage(hash, data.signingPrivKey);
@ -431,7 +437,7 @@ API.prototype.import = function(str, cb) {
}; };
/** /**
* *
* opts.doNotVerify * opts.doNotVerify
* @return {undefined} * @return {undefined}
*/ */
@ -444,14 +450,11 @@ API.prototype.getTxProposals = function(opts, cb) {
var url = '/v1/txproposals/'; var url = '/v1/txproposals/';
self._doGetRequest(url, data, function(err, txps) { self._doGetRequest(url, data, function(err, txps) {
if (err) return cb(err); if (err) return cb(err);
var fake = false;
_.each(txps, function(txp) { _processTxps(txps, data.sharedEncryptingKey);
txp.decryptedMessage = _decryptProposalMessage(txp.message, data.sharedEncryptingKey);
if (!opts.doNotVerify var fake = _.any(txps, function(txp) {
&& !Verifier.checkTxProposal(data, txp)) return (!opts.doNotVerify && !Verifier.checkTxProposal(data, txp));
fake = true;
}); });
if (fake) if (fake)
@ -523,7 +526,7 @@ API.prototype.rejectTxProposal = function(txp, reason, cb) {
var url = '/v1/txproposals/' + txp.id + '/rejections/'; var url = '/v1/txproposals/' + txp.id + '/rejections/';
var args = { var args = {
reason: reason || '', reason: _encryptMessage(reason, data.sharedEncryptingKey) || '',
}; };
self._doPostRequest(url, args, data, cb); self._doPostRequest(url, args, data, cb);
}); });

View File

@ -491,7 +491,7 @@ describe('client API ', function() {
}); });
}); });
}); });
it.only('Should encrypt proposal refusal comment', function(done) { it('Should encrypt proposal refusal comment', function(done) {
helpers.createAndJoinWallet(clients, 2, 3, function(err, w) { helpers.createAndJoinWallet(clients, 2, 3, function(err, w) {
clients[0].createAddress(function(err, x0) { clients[0].createAddress(function(err, x0) {
should.not.exist(err); should.not.exist(err);