encrypt/decrypt rejection comment
This commit is contained in:
parent
c8c185ec2e
commit
5a3b754ea1
|
@ -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);
|
||||||
});
|
});
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue