View Issue Details

IDProjectCategoryView StatusLast Update
0006042Talerwallet (WebExtensions)public2020-01-17 00:35
ReporterChristian GrothoffAssigned Togmarcos87 
PriorityhighSeveritytweakReproducibilityN/A
Status assignedResolutionopen 
Platformi7OSDebian GNU/LinuxOS Versionsqueeze
Product Versiongit (master) 
Target Version0.7Fixed in Version 
Summary0006042: test webextensions wallet on GNU IceCat
DescriptionWe should test the Webex wallet on IceCat, fix it if it is broken, and if it works list GNU IceCat on the wallet Website. Requested by RMS. Marcos should do this.
TagsNo tags attached.

Relationships

related to 0006043 assignedgmarcos87 test webextensions wallet on Brave 

Activities

gmarcos87

2020-01-14 17:20

developer   ~0015268

After debugging the serviceworker I found that the problem with the Taler web extension is that it uses BigInt, which is not available in the current version of IceCat.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#Browser_compatibility

There may be other probelamas, but this is the first blocker I found.

Florian Dold

2020-01-14 23:26

manager   ~0015270

The wallet uses the big-integer package (https://www.npmjs.com/package/big-integer), which should only use native BigInt in the environments that support it, and fall back to a custom implementation of big integers on older browsers.

Could you please check where exactly the native BigInt is used and why the big-integer library doesn't fall back to its custom implementation?

gmarcos87

2020-01-15 12:36

developer   ~0015271

Last edited: 2020-01-15 12:49

View 2 revisions

BigInt is used in wallet-core/src/crypto/workers/cryptoImplementation.ts (amountToBuffer and timestampToBuffer). The funny thing is that the lines used seem to affect what the functions return, but it does! If I remove these lines the signature validation process fails.

These two functions also uses DataView.prototype.setBigUint64() which has existed since Firefox version 68 and has no external library to replace it.

Florian Dold

2020-01-15 12:52

manager   ~0015272

I don't quite understand what you wrote. Of course these functions all affect signature generation and verification!

What is surprising (and what I would like you to debug) is why the big-integer library (used in the functions you were referring to above) tries to use the native JavaScript big integer, even though the browser doesn't support it.

The big-integer *should* have a fallback implementation for older browsers, and we need to find out why it is not used!

gmarcos87

2020-01-15 16:20

developer   ~0015273

The library is the one that is not being used in that file. It's called the native method, the big-integer package is not even imported at https://git.taler.net/wallet-core.git/tree/src/crypto/workers/cryptoImplementation.ts

I can do some debugging but solving this part of the implementation is beyond my current understanding of the code.

Issue History

Date Modified Username Field Change
2020-01-12 22:28 Christian Grothoff New Issue
2020-01-12 22:28 Christian Grothoff Status new => assigned
2020-01-12 22:28 Christian Grothoff Assigned To => Florian Dold
2020-01-12 22:28 Christian Grothoff Assigned To Florian Dold =>
2020-01-12 22:30 Christian Grothoff Relationship added related to 0006043
2020-01-14 10:23 Christian Grothoff Assigned To => gmarcos87
2020-01-14 17:20 gmarcos87 Note Added: 0015268
2020-01-14 23:26 Florian Dold Note Added: 0015270
2020-01-15 12:36 gmarcos87 Note Added: 0015271
2020-01-15 12:49 gmarcos87 Note Edited: 0015271 View Revisions
2020-01-15 12:52 Florian Dold Note Added: 0015272
2020-01-15 16:20 gmarcos87 Note Added: 0015273
2020-01-17 00:35 Christian Grothoff Target Version 0.6 => 0.7