Commit Graph

1147 Commits

Author SHA1 Message Date
SomberNight 96f861a570 ci: add linter task "ban unicode" to protect against malicious unicode
This script scans the whole codebase for unicode characters and
errors if it finds any, unless the character is specifically whitelisted.

The motivation is to protect against homoglyph attacks, invisible unicode characters,
bidirectional and other control characters, and other malicious unicode usage.

Given that we mostly expect to use ASCII characters in the source code,
the most robust and generic fix seems to be to just ban all unicode usage.

see https://trojansource.codes/ :
> Compilers, interpreters, and build pipelines supporting Unicode should throw errors or warnings
> for unterminated bidirectional control characters in comments or string literals,
> and for identifiers with mixed-script confusable characters.
> Language specifications should formally disallow unterminated bidirectional
> control characters in comments and string literals.
> Code editors and repository frontends should make bidirectional control characters
> and mixed-script confusable characters perceptible with visual symbols or warnings.

also https://github.com/maltfield/detect-malicious-unicode
2025-05-09 18:03:25 +00:00
SomberNight 351cc6abd9 Revert "interface: add padding and some noise to protocol messages"
Unforeseen issues. Needs more work..

This reverts commit 097eabed1f.
2025-05-08 18:34:07 +00:00
SomberNight 097eabed1f interface: add padding and some noise to protocol messages
basic countermeasures against traffic analysis
2025-05-08 14:35:44 +00:00
SomberNight 2600a3bc74 requirements: bump max aiorpcx
and bump pinned aiorpcx and electrum-aionostr
2025-05-08 14:31:11 +00:00
SomberNight c75b10fe69 requirements: add upper bounds for electrum_ecc and electrum_aionostr 2025-05-08 13:33:16 +00:00
SomberNight 3a5815d854 build: fix locale/build_cleanlocale.sh for macos
fixes https://github.com/spesmilo/electrum/pull/9726/files#r2057787097 :
> The version of readlink installed on macOS does not support the -e flag:
> ```
> 💬 INFO:  preparing electrum-locale.
> readlink: illegal option -- e
> usage: readlink [-fn] [file ...]
> ```
>
> On a mac you can install a version of readlink that argbash expects:
> Using homebrew, `brew install coreutils` will install `greadlink` which supports the `-e` flag.

I don't think we actually need to resolve symlinks here.
There are already some examples of similar usage with realpath vs grealpath. Let's just do that.
2025-05-05 18:31:07 +00:00
Sander van Grieken 960e4ba583 android: update plugin exclude list 2025-04-23 14:50:22 +02:00
ghost43 3d3933afdb Merge pull request #9726 from SomberNight/202504_locale
mv git submodule electrum-locale from contrib to electrum/locale
2025-04-14 17:20:41 +00:00
SomberNight 950658183c contrib: push_locale.py: fix relative paths in messages_qml.pot
The Qt lupdate tool that extracts translatable strings from .qml files
writes paths relative to its output .ts file into the .ts file.
These paths are then retained as-is when converted to .pot format.

The last few commits moved around the working directory of the lupdate tool
(from electrum/locale to electrum/locale/build), which resulted in a change
of all relative paths in the final messages.pot we upload to crowdin.

E.g. from:
```
#: ../gui/qml/components/Addresses.qml:64
```
to:
```
#: ../../gui/qml/components/Addresses.qml:64
```

I think a change like this does not invalidate the translations. Still, it is annoying.

This commit adds an extra processing step to "fix" these strings to:
```
#: electrum/gui/qml/components/Addresses.qml:64
```
2025-04-14 17:18:40 +00:00
SomberNight 31b176169a contrib: mv locale-related scripts to contrib/locale/ 2025-04-14 17:18:37 +00:00
SomberNight 1144d9b8ea build: add script build_cleanlocale.sh 2025-04-14 17:18:34 +00:00
SomberNight 3567a4cfb0 mv git submodule electrum-locale from contrib to electrum/locale
- this merges `contrib/deterministic-build/locale` and `electrum/locale`
- it is now once again possible have translations when running from a local git clone
    - which was already possible in the past before crowdin removed their unauthenticated APIs
        - see https://github.com/spesmilo/electrum/issues/9531
    - however, the translations available are the often-old frozen strings from electrum-locale
        - while previously one could just download the latest strings from crowdin
2025-04-14 17:18:30 +00:00
ThomasV c93b13f6d9 Make it possible to create zip plugins from internal plugins
specifically:
 - add 'name' field to manifest.json
 - make 'version' optional in contrib/make_plugin
 - fix import in jade plugin
2025-04-14 11:54:04 +02:00
SomberNight cca29eff72 contrib/push_locale: minor clean-up 2025-04-07 17:17:39 +00:00
SomberNight ef452b1f49 contrib/push_locale: update qt5->qt6 2025-04-07 17:16:02 +00:00
accumulator bc4fcd8b83 Merge pull request #9682 from accumulator/android_permissions_support
Android >=13 permissions support
2025-04-05 11:47:27 +02:00
Sander van Grieken 1ac885ea40 qml: add android permission methods in AppController 2025-04-03 12:37:17 +02:00
SomberNight b70da1d3b9 build: set YARL_NO_EXTENSIONS for all builds
due to cython version mismatch -- easier to just disable the compilation for now
2025-04-01 16:59:26 +00:00
SomberNight 269a240fb9 build: partial rerun freeze_packages
update electrum-aionostr, aiorpcx, and aiohttp (and friends)
2025-04-01 16:59:22 +00:00
Sander van Grieken 4a072a45b1 android: add POST_NOTIFICATIONS permission 2025-03-28 15:53:13 +01:00
SomberNight 245853ff4f plugins: ledger: bump max supported ledger_bitcoin version
ledger-bitcoin 0.4 was just released (seemingly without breaking changes)
the changelog claims they want to uphold semver
2025-03-19 17:29:40 +00:00
ThomasV 0266832650 bump min version of electrum_aionostr and its dependencies 2025-03-19 16:21:09 +01:00
ThomasV 647ae49451 Merge pull request #9651 from f321x/plugin_manifest_json
Use manifest.json instead of loading init file for plugin registration
2025-03-19 10:52:02 +01:00
f321x a9f8048251 use manifest.json instead of loading init file for plugin registration 2025-03-19 10:38:20 +01:00
SomberNight 154adf0081 plugins: ledger: rm support for hw.1
This removes support for Ledger HW.1 and "Nano" (non-S) devices.
These were manufactured/sold around 2015-2016, and are long unsupported by the upstream vendor.

We previously added a deprecation warning to the GUI [0] released in 4.3.3 (2023-01-02), to warn owners of these devices.
This PR now fully removes support.

As a consequence, the unmaintained btchip-python dependency can now be removed, which solves [1].

[0]: https://github.com/spesmilo/electrum/commit/9b82eb6d06f8534652849f3370ab8af7d7ca9c7f
[1]: https://github.com/spesmilo/electrum/issues/9370#issuecomment-2593675364
2025-03-18 16:18:49 +00:00
SomberNight 822ab5d73c requirements: follow-up prev: rm protobuf upper bound
now that the keepkey pb2's are regenerated using the "new" format,
we don't need an old python3-protobuf to parse them

ref https://github.com/spesmilo/electrum/issues/7922
2025-03-17 17:53:51 +00:00
SomberNight c8143957a6 plugins: keepkey: rm dependence on external keepkeylib
we will instead bundle our own fork, as a git submodule,
https://github.com/spesmilo/electrum-keepkeylib

related https://github.com/spesmilo/electrum/issues/7922
and https://github.com/keepkey/python-keepkey/issues/146
(i.e. upstream keepkeylib is unmaintained)
2025-03-17 17:53:48 +00:00
Sander van Grieken fc2d43acfd qt,qml: move fonts to /electrum/gui for use in all guis. 2025-03-03 13:47:03 +01:00
SomberNight a3fc43cc2d qml: remove dependency "Pillow" (and its transitive deps)
closes https://github.com/spesmilo/electrum/issues/9572
2025-02-20 18:53:08 +00:00
SomberNight 40842fad39 requirements: bump electrum-ecc and electrum-aionostr
note: these sdists are now reproducibly built.
Ideally the person updating the pinned hash should be different from the one who uploaded the dep to PyPI and reproduce and verify the hash. This prevents hiding a backdoor in just the sdist uploaded to PyPI.

but people can try to reproduce the PyPI sdists at any time and ring alarm bells if they can't
2025-02-04 17:00:21 +00:00
SomberNight 172c3721bd follow-up prev: include chains/ folder in win and mac binaries 2025-01-27 14:21:34 +00:00
f321x 171aa5ee5a bump aiorpcx version 2025-01-20 12:11:55 +01:00
SomberNight 450768ee6c sdist build: bump base image to debian 12 to have py3.10+
- debian 11 only has python 3.9, deb12 has py3.11
- pip install pip is no longer needed, atm apt has new enough pip
  - and on deb12, started getting "error: externally-managed-environment"
- faketime does not seem to work properly on debian 12
    (getting reproducibility issues for the tarball)
  - so instead we untar, fix the timestamps manually, and re-tar
2025-01-10 18:58:02 +00:00
SomberNight fb5a1af666 bump min required Python version to 3.10 2025-01-10 18:52:49 +00:00
SomberNight 3aac8ff0b8 sdist build: simplify sourceonly handling 2025-01-10 18:51:04 +00:00
SomberNight 01c913ddc8 build: update pinned deps: add nostr related stuff
follow-up https://github.com/spesmilo/electrum/pull/9260
https://github.com/spesmilo/electrum/commit/7fdf1e06696f464959ac4cf1a1e101114bc865ba
2025-01-09 14:57:33 +00:00
ThomasV 7fdf1e0669 add nostr, and nostr_relays in config 2024-11-12 08:52:42 +01:00
Sander van Grieken f89fd96e22 android: exclude unused plugins 2024-10-23 16:08:55 +02:00
SomberNight fdc8430d40 bump libsecp256k1 version (0.5.0->0.5.1) 2024-10-18 14:47:15 +00:00
SomberNight 4bc63384d6 android readme: expand "how to debug repro failure" section 2024-10-15 23:42:44 +00:00
SomberNight 571acf71fe android: update p4a ref
- to include https://github.com/spesmilo/python-for-android/commit/0ab0d872e6c6b88ddc05b9c4ba6fcd3aa7921242
  > recipes: add patches for python3 recipes, for reproducible .pyc generation
  This should fix build repro of the apk.
2024-10-15 23:37:57 +00:00
SomberNight 225ed079a9 hw plugins: ledger: bump pinned lib to 0.3.0, raise max_lib to <0.4
closes https://github.com/spesmilo/electrum/issues/9035
2024-10-11 15:13:34 +00:00
SomberNight 071150f465 android: update p4a ref
- to include https://github.com/spesmilo/python-for-android/commit/d4432ec8d07b8521465d6daddd55046fc0413599
    see https://github.com/spesmilo/electrum/issues/9215#issuecomment-2403072217
- and add a fixme to revisit apkdiff re horrors beyond my comprehension
2024-10-10 18:39:42 +00:00
SomberNight 581082d5bb updates READMEs re electrum-ecc 2024-10-10 15:46:21 +00:00
SomberNight f35437f03c build: set ELECTRUM_ECC_DONT_COMPILE=1, instead manually build lib
Haven't checked if electrum-ecc compiles libsecp reproducibly.
For now let's just keep the old flow.
(but if we spent time on making that compilation reproducible,
the appimage and the macos builds could use it directly)
2024-10-10 15:46:18 +00:00
ThomasV 9dbbd815a3 build scripts: add libsecp256k1 library to the electrum_ecc directory 2024-10-10 15:46:07 +00:00
ThomasV acb4e00a38 add electrum_ecc to contrib/deterministic-build/requirements.txt
note: Manual edit. Not running freeze_packages because some
existing packages now require hatchling to build
2024-10-10 15:46:04 +00:00
ThomasV 3721f04ac8 replace electrum/ecc with electrum_ecc package 2024-10-10 15:46:00 +00:00
ghost43 308cb597c0 Merge pull request #9233 from SomberNight/202410_version_ann_versioncode
contrib/release_www.sh: put android versionCode in "version" file
2024-10-08 14:28:50 +00:00
ThomasV f471356278 Merge pull request #9235 from spesmilo/external_plugins
Unix: Import external plugins from /opt/electrum_plugins
2024-10-08 10:49:19 +02:00