@bitpay-labs/bitcore-wallet-service 11.10.6 → 11.10.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/package.json +3 -3
  2. package/src/externalservices/coingecko.ts +24 -10
  3. package/src/externalservices/moonpay.ts +23 -1
  4. package/src/externalservices/transak.ts +25 -3
  5. package/src/lib/chain/doge/index.ts +1 -1
  6. package/src/lib/chain/eth/abi-invoice.ts +139 -90
  7. package/src/lib/common/constants.ts +5 -2
  8. package/src/lib/common/defaults.ts +11 -2
  9. package/src/lib/errors/errordefinitions.ts +6 -0
  10. package/src/lib/model/copayer.ts +1 -0
  11. package/src/lib/model/tsskeygen.ts +33 -4
  12. package/src/lib/model/tsssign.ts +34 -3
  13. package/src/lib/pushnotificationsservice.ts +3 -1
  14. package/src/lib/routes/middleware/authTssRequest.ts +10 -4
  15. package/src/lib/routes/middleware/verifyTssMessage.ts +13 -8
  16. package/src/lib/routes/tss.ts +11 -4
  17. package/src/lib/server.ts +54 -25
  18. package/src/lib/storage.ts +24 -1
  19. package/src/lib/tss.ts +232 -30
  20. package/src/types/externalservices.d.ts +29 -1
  21. package/test/integration/externalservices/coinGecko.test.ts +71 -7
  22. package/test/integration/externalservices/transak.test.ts +84 -0
  23. package/test/integration/server.test.ts +780 -1
  24. package/test/integration/tss.test.ts +275 -0
  25. package/test/model/copayer.test.ts +128 -0
  26. package/test/storage.test.ts +91 -0
  27. package/ts_build/package.json +1 -1
  28. package/ts_build/src/externalservices/coingecko.d.ts.map +1 -1
  29. package/ts_build/src/externalservices/coingecko.js +14 -8
  30. package/ts_build/src/externalservices/coingecko.js.map +1 -1
  31. package/ts_build/src/externalservices/moonpay.d.ts.map +1 -1
  32. package/ts_build/src/externalservices/moonpay.js +38 -2
  33. package/ts_build/src/externalservices/moonpay.js.map +1 -1
  34. package/ts_build/src/externalservices/transak.d.ts +1 -0
  35. package/ts_build/src/externalservices/transak.d.ts.map +1 -1
  36. package/ts_build/src/externalservices/transak.js +15 -3
  37. package/ts_build/src/externalservices/transak.js.map +1 -1
  38. package/ts_build/src/lib/chain/doge/index.js +1 -1
  39. package/ts_build/src/lib/chain/doge/index.js.map +1 -1
  40. package/ts_build/src/lib/chain/eth/abi-invoice.d.ts +254 -41
  41. package/ts_build/src/lib/chain/eth/abi-invoice.d.ts.map +1 -1
  42. package/ts_build/src/lib/chain/eth/abi-invoice.js +138 -89
  43. package/ts_build/src/lib/chain/eth/abi-invoice.js.map +1 -1
  44. package/ts_build/src/lib/common/constants.d.ts +4 -2
  45. package/ts_build/src/lib/common/constants.d.ts.map +1 -1
  46. package/ts_build/src/lib/common/constants.js +4 -2
  47. package/ts_build/src/lib/common/constants.js.map +1 -1
  48. package/ts_build/src/lib/common/defaults.d.ts +4 -2
  49. package/ts_build/src/lib/common/defaults.d.ts.map +1 -1
  50. package/ts_build/src/lib/common/defaults.js +4 -2
  51. package/ts_build/src/lib/common/defaults.js.map +1 -1
  52. package/ts_build/src/lib/common/index.d.ts +8 -4
  53. package/ts_build/src/lib/common/index.d.ts.map +1 -1
  54. package/ts_build/src/lib/errors/errordefinitions.d.ts +3 -0
  55. package/ts_build/src/lib/errors/errordefinitions.d.ts.map +1 -1
  56. package/ts_build/src/lib/errors/errordefinitions.js +3 -0
  57. package/ts_build/src/lib/errors/errordefinitions.js.map +1 -1
  58. package/ts_build/src/lib/model/copayer.d.ts.map +1 -1
  59. package/ts_build/src/lib/model/copayer.js +1 -0
  60. package/ts_build/src/lib/model/copayer.js.map +1 -1
  61. package/ts_build/src/lib/model/tsskeygen.d.ts +3 -0
  62. package/ts_build/src/lib/model/tsskeygen.d.ts.map +1 -1
  63. package/ts_build/src/lib/model/tsskeygen.js +12 -3
  64. package/ts_build/src/lib/model/tsskeygen.js.map +1 -1
  65. package/ts_build/src/lib/model/tsssign.d.ts +7 -0
  66. package/ts_build/src/lib/model/tsssign.d.ts.map +1 -1
  67. package/ts_build/src/lib/model/tsssign.js +22 -2
  68. package/ts_build/src/lib/model/tsssign.js.map +1 -1
  69. package/ts_build/src/lib/pushnotificationsservice.d.ts.map +1 -1
  70. package/ts_build/src/lib/pushnotificationsservice.js +3 -1
  71. package/ts_build/src/lib/pushnotificationsservice.js.map +1 -1
  72. package/ts_build/src/lib/routes/middleware/authTssRequest.d.ts.map +1 -1
  73. package/ts_build/src/lib/routes/middleware/authTssRequest.js +8 -2
  74. package/ts_build/src/lib/routes/middleware/authTssRequest.js.map +1 -1
  75. package/ts_build/src/lib/routes/middleware/verifyTssMessage.d.ts.map +1 -1
  76. package/ts_build/src/lib/routes/middleware/verifyTssMessage.js +11 -6
  77. package/ts_build/src/lib/routes/middleware/verifyTssMessage.js.map +1 -1
  78. package/ts_build/src/lib/routes/tss.d.ts.map +1 -1
  79. package/ts_build/src/lib/routes/tss.js +4 -4
  80. package/ts_build/src/lib/routes/tss.js.map +1 -1
  81. package/ts_build/src/lib/server.d.ts.map +1 -1
  82. package/ts_build/src/lib/server.js +34 -25
  83. package/ts_build/src/lib/server.js.map +1 -1
  84. package/ts_build/src/lib/storage.d.ts +4 -0
  85. package/ts_build/src/lib/storage.d.ts.map +1 -1
  86. package/ts_build/src/lib/storage.js +18 -1
  87. package/ts_build/src/lib/storage.js.map +1 -1
  88. package/ts_build/src/lib/tss.d.ts +4 -0
  89. package/ts_build/src/lib/tss.d.ts.map +1 -1
  90. package/ts_build/src/lib/tss.js +74 -17
  91. package/ts_build/src/lib/tss.js.map +1 -1
  92. package/ts_build/test/integration/externalservices/coinGecko.test.js +62 -8
  93. package/ts_build/test/integration/externalservices/coinGecko.test.js.map +1 -1
  94. package/ts_build/test/integration/externalservices/transak.test.js +78 -0
  95. package/ts_build/test/integration/externalservices/transak.test.js.map +1 -1
  96. package/ts_build/test/integration/server.test.js +640 -0
  97. package/ts_build/test/integration/server.test.js.map +1 -1
  98. package/ts_build/test/integration/tss.test.js +245 -0
  99. package/ts_build/test/integration/tss.test.js.map +1 -1
  100. package/ts_build/test/model/copayer.test.js +91 -0
  101. package/ts_build/test/model/copayer.test.js.map +1 -1
  102. package/ts_build/test/storage.test.js +73 -0
  103. package/ts_build/test/storage.test.js.map +1 -1
@@ -94,6 +94,20 @@ describe('Transak integration', () => {
94
94
  should.exist(data);
95
95
  });
96
96
 
97
+ it('should forward the deviceIp as x-user-ip for web context', async () => {
98
+ let capturedHeaders;
99
+ server.externalServices.transak.request = {
100
+ post: (_url, opts, cb) => {
101
+ capturedHeaders = opts.headers;
102
+ return cb(null, { body: 'data' });
103
+ },
104
+ };
105
+ req.body.context = 'web';
106
+ req.body.deviceIp = '203.0.113.42';
107
+ await server.externalServices.transak.transakGetAccessToken(req);
108
+ capturedHeaders['x-user-ip'].should.equal('203.0.113.42');
109
+ });
110
+
97
111
  it('should return error if post returns error', async () => {
98
112
  const fakeRequest2 = {
99
113
  post: (_url, _opts, _cb) => { return _cb(new Error('Error'), null); },
@@ -333,6 +347,76 @@ describe('Transak integration', () => {
333
347
  }
334
348
  });
335
349
 
350
+ it('should forward the deviceIp as x-user-ip for web context', async () => {
351
+ let capturedHeaders;
352
+ server.externalServices.transak.request = {
353
+ post: (_url, opts, cb) => {
354
+ capturedHeaders = opts.headers;
355
+ return cb(null, { body: 'data' });
356
+ },
357
+ };
358
+ req.body.context = 'web';
359
+ req.body.deviceIp = '203.0.113.42';
360
+ await server.externalServices.transak.transakGetSignedPaymentUrl(req);
361
+ capturedHeaders['x-user-ip'].should.equal('203.0.113.42');
362
+ });
363
+
364
+ it('should canonicalize an IPv4-mapped IPv6 deviceIp for web context', async () => {
365
+ let capturedHeaders;
366
+ server.externalServices.transak.request = {
367
+ post: (_url, opts, cb) => {
368
+ capturedHeaders = opts.headers;
369
+ return cb(null, { body: 'data' });
370
+ },
371
+ };
372
+ req.body.context = 'web';
373
+ req.body.deviceIp = '::ffff:203.0.113.42';
374
+ await server.externalServices.transak.transakGetSignedPaymentUrl(req);
375
+ capturedHeaders['x-user-ip'].should.equal('203.0.113.42');
376
+ });
377
+
378
+ it('should not leak deviceIp into the widgetParams sent to Transak', async () => {
379
+ let capturedBody;
380
+ server.externalServices.transak.request = {
381
+ post: (_url, opts, cb) => {
382
+ capturedBody = opts.body;
383
+ return cb(null, { body: 'data' });
384
+ },
385
+ };
386
+ req.body.context = 'web';
387
+ req.body.deviceIp = '203.0.113.42';
388
+ await server.externalServices.transak.transakGetSignedPaymentUrl(req);
389
+ should.not.exist(capturedBody.widgetParams.deviceIp);
390
+ });
391
+
392
+ it('should ignore a body deviceIp for non-web context and use the request IP', async () => {
393
+ let capturedHeaders;
394
+ server.externalServices.transak.request = {
395
+ post: (_url, opts, cb) => {
396
+ capturedHeaders = opts.headers;
397
+ return cb(null, { body: 'data' });
398
+ },
399
+ };
400
+ req.headers['x-forwarded-for'] = '198.51.100.7';
401
+ req.body.deviceIp = '203.0.113.42';
402
+ await server.externalServices.transak.transakGetSignedPaymentUrl(req);
403
+ capturedHeaders['x-user-ip'].should.equal('198.51.100.7');
404
+ });
405
+
406
+ it('should fall back to the request IP for web context when deviceIp is not forwarded', async () => {
407
+ let capturedHeaders;
408
+ server.externalServices.transak.request = {
409
+ post: (_url, opts, cb) => {
410
+ capturedHeaders = opts.headers;
411
+ return cb(null, { body: 'data' });
412
+ },
413
+ };
414
+ req.body.context = 'web';
415
+ req.headers['x-forwarded-for'] = '198.51.100.7';
416
+ await server.externalServices.transak.transakGetSignedPaymentUrl(req);
417
+ capturedHeaders['x-user-ip'].should.equal('198.51.100.7');
418
+ });
419
+
336
420
  it('should return error if post returns error', async () => {
337
421
  const fakeRequest2 = {
338
422
  post: (_url, _opts, _cb) => { return _cb(new Error('Error'), null); },