455 Commits

Author SHA1 Message Date
yet
bea44f988f Convert Noise utility class to Kotlin
- Migrate `Noise.java` to `Noise.kt`.
- Refactor factory methods using Kotlin `when` expressions and destructuring.
- Use `ByteArray.fill()` and `copyOfRange()` for internal utility functions.
- Update reflection logic in `throwBadTagException` for better readability.
- Apply `@JvmStatic` and `const` to maintain compatibility with existing Java callers.
2026-05-15 17:29:34 +04:00
yet
f9923992f0 Rename .java to .kt 2026-05-15 17:29:34 +04:00
yet300
f09d4b90d3 Update ChaChaPolyCipherState to access ChaChaCore via INSTANCE field 2026-05-09 16:52:06 +04:00
yet300
5693bbfcd8 refactor(crypto): migrate NewHope and NewHopeTor implementations to Kotlin
- Ported the NewHope and NewHopeTor key exchange algorithms from Java to idiomatic Kotlin.
- Maintained strict functional parity with the original verified Java implementation.
- Preserved all necessary cryptographic lookup tables (NTT Montgomery, bit-reversal) to ensure mathematical correctness.
- Converted Keccak-f[1600] and ChaCha20 core algorithms into more compact Kotlin structures while retaining constant-time execution safety.
- Ensured seamless Java interoperability by using `const val` for protocol constants like `SENDABYTES` and `SENDBBYTES`.
- Improved overall code readability and removed legacy/redundant constructs.
2026-05-09 16:52:06 +04:00
yet300
10a84ca56c Rename .java to .kt 2026-05-09 16:52:06 +04:00
yet300
2c7fad6abc Convert GHASH to Kotlin 2026-05-09 16:52:06 +04:00
yet300
0963c2a3cc Rename .java to .kt 2026-05-09 16:52:06 +04:00
yet300
afea44b33a Convert Curve25519 and Curve448 to Kotlin 2026-05-09 16:52:06 +04:00
yet300
5c9a229df4 Rename .java to .kt 2026-05-09 16:52:06 +04:00
yet300
820618e7c9 Refactor: Convert BLAKE2b and BLAKE2s hash functions to pure Kotlin
- Translated `Blake2bMessageDigest` and `Blake2sMessageDigest` to Kotlin.
- Replaced JVM-bound `java.util.Arrays` and `System.arraycopy` with
  Kotlin's native `.fill()` and `.copyInto()`.
- Fixed nullable array type `Array<ByteArray?>` to `Array<ByteArray>`
  for the `sigma` permutation matrix, removing the need for `!!` assertions.
- Refactored `while` loops into idiomatic Kotlin `for` loops in the `transform`
  functions.
- Eliminated mutable parameter shadowing warnings by introducing
  `currentOffset` and `remainingLen` local variables.
2026-05-09 16:52:06 +04:00
yet300
7cc35d7f21 Rename .java to .kt 2026-05-09 16:52:06 +04:00
yet300
544e51ff6b Refactor: Convert SHA-256 and SHA-512 to pure Kotlin for KMP
- Translated `SHA256MessageDigest` and `SHA512MessageDigest` to Kotlin.
- Removed `java.util.Arrays` and `System.arraycopy` dependencies, using
  Kotlin's native `.fill()` and `.copyInto()`.
- Refactored legacy `while` loops into idiomatic Kotlin `for` loops.
- Improved variable scoping in the `transform` function by declaring
  local variables at the point of use.
2026-05-09 16:52:06 +04:00
yet300
c11f5258e3 Rename .java to .kt 2026-05-09 16:52:06 +04:00
yet300
a68efc8921 Refactor: Convert RijndaelAES to pure Kotlin for KMP
- Translated `RijndaelAES.java` to Kotlin.
- Removed JVM-specific `java.util.Arrays` dependency, utilizing Kotlin's
  `.fill()`.
- Refactored C-style variable declarations, moving them closer to their
  usage scope for better Kotlin idiomatics.
- Retained the original lookup tables (S-boxes) and bitwise logic to
  ensure the fallback software AES implementation remains cryptographically
  accurate.
2026-05-09 16:52:06 +04:00
yet300
cf0a767809 Rename Destroyable1 to Destroyable and convert ChaChaCore and Poly1305 to Kotlin 2026-05-09 16:52:06 +04:00
yet300
240635ccfe Rename .java to .kt 2026-05-09 16:52:06 +04:00
yet300
6ac2769f63 Migrate ChaChaCore, Poly1305, and Destroyable to Kotlin
- Translated `ChaChaCore.java` and `Poly1305.java` to Kotlin.
- Replaced JVM-specific dependencies (`java.util.Arrays`, `System.arraycopy`)
  with Kotlin Standard Library equivalents (`.fill()`, `.copyInto()`)

- Refactored `while` loops into idiomatic Kotlin `for` loops.
2026-05-09 16:52:06 +04:00
GitHub Action
1d99434a25 Automated update of relay data - Sun May 3 06:54:32 UTC 2026 2026-05-03 06:54:32 +00:00
GitHub Action
911c80db0e Automated update of relay data - Sun Apr 26 06:41:15 UTC 2026 2026-04-26 06:41:16 +00:00
GitHub Action
c332fb2ff1 Automated update of relay data - Sun Apr 19 06:37:36 UTC 2026 2026-04-19 06:37:36 +00:00
GitHub Action
47adcca1e1 Automated update of relay data - Sun Apr 12 06:35:32 UTC 2026 2026-04-12 06:35:32 +00:00
GitHub Action
42f6cf9d7f Automated update of relay data - Sun Apr 5 06:29:20 UTC 2026 2026-04-05 06:29:20 +00:00
callebtc
4dfec917c8
Revert "voice note player ui (#680)" (#690)
This reverts commit bc8909bab0d40797e57c2f791e7a1a4b0ce5b842.
1.7.2
2026-03-30 10:21:38 +02:00
callebtc
e3c7bd5346
Revert "update input button styling (#682)" (#689)
This reverts commit ce86f4ec2fcecf7067ca850a42dd585f6eeded71.
2026-03-30 10:20:25 +02:00
callebtc
be1a2ec914
update version (#688) 2026-03-30 10:14:32 +02:00
GitHub Action
426e4f0994 Automated update of relay data - Sun Mar 29 06:27:23 UTC 2026 2026-03-29 06:27:23 +00:00
Ovi
5b0a7d0ce9
fix: add input validation for protocol decoding and fragment reassembly (#666)
* fix: add input validation for protocol decoding and fragment reassembly

* fix:subtract the old entry's size before adding the new one, so duplicate/retransmitted fragments don't inflate the counter

* fix: FragmentManager.handleFragment() can be entered concurrently (e.g., fragments for the same fragmentID arriving from multiple peers/relays). In order for this to happen multiple devices would be needed to connect to the mesh. even with a per-fragmentID byte cap, an attacker could open many fragment IDs at once and force the device to buffer lots of fragment data overall (risking memory pressure/OOM). In this fix we made fragments atomic and thread safe. When a fragment index is retransmitted, we compute the size delta (new - old) so duplicates don’t inflate counters and can’t be used to bypass limits. Under heavy load/attack the app will drop/reject fragment sets earlier instead of growing memory usage without bound to reduce risk of oom. tested on pixel 6 and pixel 8.

* fix: add fragmenttest
2026-03-26 16:24:29 +01:00
a1denvalu3
96b35e957c
Add 'Send private message' action to chat user sheet (#649)
* Add 'Send private message' action to chat user sheet

* Change 'Send private message' action color to purple

* Fix: Resolve short ID against all participants, not just cached nicknames

* Fix: Correctly open private chat sheet for mesh peers

---------

Co-authored-by: a1denvalu3 <>
2026-03-25 14:45:36 +01:00
a1denvalu3
dac81b2c3b
fix: use CSPRNG for heartbeat intervals (#685) 2026-03-25 14:42:53 +01:00
Clare Kinery
ce86f4ec2f
update input button styling (#682) 2026-03-25 14:42:24 +01:00
GitHub Action
95daa47a5b Automated update of relay data - Sun Mar 22 06:19:38 UTC 2026 2026-03-22 06:19:38 +00:00
GitHub Action
9fb8d4b37e Automated update of relay data - Sun Mar 15 06:23:41 UTC 2026 2026-03-15 06:23:42 +00:00
GitHub Action
4082a48154 Automated update of relay data - Sun Mar 8 06:15:21 UTC 2026 2026-03-08 06:15:21 +00:00
rollforsats
9ad1214e96
Unit tests for BinaryProtocol (#678)
* Comprehensive tests for BinaryProtocol

* Test feedback
2026-03-06 13:08:18 +01:00
Clare Kinery
bc8909bab0
voice note player ui (#680) 2026-03-06 13:07:45 +01:00
GitHub Action
632ee884e9 Automated update of relay data - Sun Mar 1 06:17:19 UTC 2026 2026-03-01 06:17:19 +00:00
callebtc
fb2bb64d65
chore: change license from MIT to GPLv3 (#674) 2026-02-28 13:09:04 +01:00
GitHub Action
4f62e6828b Automated update of relay data - Sun Feb 22 06:17:38 UTC 2026 2026-02-22 06:17:38 +00:00
GitHub Action
dc8b6ee37e Automated update of relay data - Sun Feb 15 06:19:54 UTC 2026 2026-02-15 06:19:54 +00:00
GitHub Action
6d44919f5b Automated update of relay data - Sun Feb 8 06:20:17 UTC 2026 2026-02-08 06:20:17 +00:00
callebtc
3e5355a71d
edit 2026-02-03 15:33:56 +01:00
callebtc
390f264987
bump (#661) 2026-02-01 13:33:22 +01:00
a1denvalu3
43029e88e6
fix: pause geohash heartbeat (kind 20001) sampling when backgrounded (#660) 1.7.1 2026-02-01 13:25:36 +01:00
GitHub Action
73d8ce56a2 Automated update of relay data - Sun Feb 1 06:19:30 UTC 2026 2026-02-01 06:19:30 +00:00
a1denvalu3
f79451b615
fix(geohash): cleanup sampling subscriptions when closing location sheet (#659)
- Added DisposableEffect to LocationChannelsSheet to ensure cleanup runs when composable is removed
- Fixed ChatViewModel.endGeohashSampling() to correctly delegate to GeohashViewModel instead of being a no-op
- Prevents lingering kind 20001 subscriptions after closing the sheet
2026-01-31 16:42:20 +01:00
GitHub Action
06d2665b70 Automated update of relay data - Sun Jan 25 06:07:49 UTC 2026 2026-01-25 06:07:49 +00:00
GitHub Action
46e30897ae Automated update of relay data - Sun Jan 18 06:07:42 UTC 2026 2026-01-18 06:07:42 +00:00
callebtc
ab04764212
Fix location update in notes sheet and Nostr subscription leaks (#636)
- Fixes #634: Trigger location refresh when LocationNotesSheet opens
- Fixes #635: Implement proper subscription diffing and cleanup in GeohashViewModel
2026-01-17 00:47:53 +07:00
callebtc
e3056d70c0
bump to 1.7.0 (#624) 1.7.0 2026-01-16 01:13:33 +07:00
Moe Hamade
5013b32ca9
feat: Introduce Gradle property to control APK splits (#560)
* feat: Introduce Gradle property to control APK splits

This commit introduces a new Gradle project property, `buildSplitApks`, to conditionally enable or disable the generation of ABI-specific (arm64, x86_64) and universal APKs.

Key changes:
- In `app/build.gradle.kts`, the `splits.abi.isEnable` flag is now dynamically set based on the `buildSplitApks` property.
- APK splitting is disabled by default to support standard Android App Bundle (`bundleRelease`) builds.
- The release workflow (`release.yml`) is updated to pass `-PbuildSplitApks=true` when building release APKs for GitHub.
- The general Android build workflow (`android-build.yml`) is also modified to enable splits only for the `Release` variant, ensuring debug builds are not affected.

* chore: Simplify and automate APK split builds

This commit simplifies the build process by automatically enabling ABI splits for APKs (`assemble`) and disabling them for AABs (`bundle`).

This removes the need to manually pass the `-PbuildSplitApks=true` property. The build script now intelligently determines whether to create architecture-specific APKs based on the task being executed (e.g., `assembleRelease` vs. `bundleRelease`).

The GitHub Actions workflows (`release.yml`, `android-build.yml`) have been updated to remove this now-redundant property, streamlining the CI configuration.
2026-01-16 01:06:15 +07:00