Commit graph

38 commits

Author SHA1 Message Date
fc0520691d Update README.md 2024-07-09 17:39:43 +00:00
e8210fe3c9 Update README.md 2024-06-28 17:10:41 +00:00
Severiano Jaramillo
01be5d24ab Implement BN256's G1 functionality.
- Ported over the BN256's G1 functionality from derohe's bh256.go file.
- Updated CurePoint's toString() method: Create a copy of the object to avoid updating the values of the object when calling toString().
- Used UByteArray in GfP's marshal/unmarshal methods to fix issue with negative numbers.
- Fixed an issue with how the carry is calculated in gfpMul method and added a test to confirm its correct behavior.
- Used UByteArray in Lattice's multi method to avoid issues with negative numbers.
- Added a test to confirm that G1 marshal and unmarshal methods work correctly.
2024-06-01 22:51:01 -07:00
Severiano Jaramillo
9352f82894 Implement GfP6 and GfP12 functionality. 2024-05-27 20:55:54 -07:00
Severiano Jaramillo
b8a7bb7881 Bump Kotlin to 2.0.0 and AGP to 8.4.1 2024-05-27 11:30:34 -07:00
Severiano Jaramillo
df877416ef Fix GfP2 file name 2024-05-15 10:22:58 -07:00
Severiano Jaramillo
ad1d535752 Implement GpF2 and TwistPoint functionality.
- Ported over the GpF2 and TwistPoint functionality form the derohe project to Kotlin.
2024-05-13 21:57:02 -07:00
Severiano Jaramillo
e42a2acc66 Implement CurvePoint functionality
- Ported over the CurvePoint functionality to Kotlin from the derohe project.
- Made minor improvements to how contsants in different classes are defined.
2024-05-12 21:30:52 -07:00
Severiano Jaramillo
8cc60417a8 Implemented Lattice functionality.
- Ported over Lattice functionality from the derohe project.
- Ported over LatticeTest too, to verify that Lattice implementation is correct.
2024-05-12 16:39:06 -07:00
Severiano Jaramillo
ef440c8a9f Fix project package structure 2024-05-05 19:37:56 -07:00
Severiano Jaramillo
6aa5a827ae Implement GfP class and arithmetic.
- Ported over the GfP class functionality from the derohe project to Kotlin.
- Ported over the GfP arithmetic logic too, focusing on the software implementation. We might be able to make these calculations more efficient if we do hardware calculations instead, but that can be left as a future optimization.
- Created GfPTest to confirm that the arithmetic operations were implemented correctly. Hard lesson: Go operator precedence is different than Kotlin.
2024-05-05 15:00:54 -07:00
Severiano Jaramillo
564e262f86 Bump Kotlin to 2.0.0-RC2 and use Compiler plugin 2024-05-02 21:21:27 -07:00
Severiano Jaramillo
6136075870 Bump AGP and Compose BOM versions 2024-05-02 21:09:18 -07:00
Severiano Jaramillo
71570677ec Bump AGP and Gradle versions
- Updated Android Gradle Plugin to version 8.3.2.
- Updated Gradle to version 8.7.
- Removed unused AndroidX core lib.
2024-04-29 17:20:07 -07:00
Severiano Jaramillo
a07805c8cc Remove Cryptography multiplatform library
- Added extension functions to convert BigInteger to hex string, and viceversa.
- Updated Android Gradle Plugin to the latest version.
- Updated AndroidX Activity Compose to the latest stable version.
2024-04-29 17:08:25 -07:00
584008004b Convert to Android-only project (#1)
We were trying to target Android/iOS/Desktop with the same codebase using Kotlin Multiplatform, but that proved to be more complicated than anticipated. We are simplifying the scope of the project a bit by focusing on Android.

Co-authored-by: Severiano Jaramillo <severiano.jaramillo@gmail.com>
Reviewed-on: #1
2024-04-29 22:37:45 +00:00
Severiano Jaramillo
32bc268594 Update crytpo module package structure 2024-04-28 18:23:24 -07:00
Severiano Jaramillo
f70176d47c Add getKeyAndLanguageFromWords() method to Mnemonics class.
- The getKeyAndLanguageFromWords() method receives a list of words and validates that they correspond to an actual Dero seed, and obtains the corresponding Key and language.
- Added tests to verify that the getKeyAndLanguageFromWords() method works as expected in different scenarios.
2024-04-12 19:46:59 -07:00
Severiano Jaramillo
c690d839da Add verifyChecksum method to Mnemonics class.
- The verifyChecksum() method uses the calculateChecksumIndex() method internally to obtain the checksum index, which is then used to confirm that the checksum word is correct.
- Added tests for all verifyChecksum() scenarios.
- Created MnemonicsDataProvider to more easily provide the data used in MnemonicsTest.
2024-04-12 17:06:38 -07:00
Severiano Jaramillo
53bc55ec9f Add calculateChecksumIndex() method to Mnemonics class.
- The calculateChecksumIndex() method uses the newly added method to calculate the CRC-32 to obtain the index of the word to be used for the seed checksum.
- Added a few unit tests to validate the correct functionality of the calculateChecksumIndex() method.
2024-04-12 16:25:18 -07:00
Severiano Jaramillo
7dab5227dc Introduce CRC-32 validation functionality.
- Created a new shared module 'crypto' that will contain crytography specific functionality.
- Added a class to validate data using the CRC-32 algorithm. We had to create a class to do this from scratch because there is no readily made library available for Kotlin Multiplatform yet.
- Configured unit tests in the crypto module to confirm that the CRC-32 functionality is correctly implemented.
- Introduced a Mnemonics class that contains logic to convert mnemonics to a valid Dero key and viceversa. This functionality is not complete yet.
- Introduced Mnemonics support for two languages for now, English and Spanish. Adding support for more languages is a matter of adding a new Mnemonics[Language] instance. We can do that later when necessary.
2024-04-11 19:49:59 -07:00
Severiano Jaramillo
4829994d52 Minor formatting fixes 2024-03-29 18:55:43 -07:00
Severiano Jaramillo
8512178a24 Restore the desktop target.
- We are not targetting desktop for the time being, but unfortunately the IDE previews (which are very useful when developing UI) are only available for the Desktop target for now. It is worth keeping the desktop target just for that. We won't be spending much time focusing on desktop though.
- Updated Compose multiplatform plugin and Kotlin versions.
- Added coroutines swing dependency to be ablet o run the desktop app.
2024-03-29 11:45:15 -07:00
Severiano Jaramillo
26436eb687 Show current block number in Import Account screen.
- Updated NodeStatus component to show the current block count if connected to the Dero node, or a 'Not connected' text otherwise.
- Updated ImportAccountScreenModel to extend from StateScreenModel with a State data class that contains the blockCount for now. This State is observed by ImportAccountScreen which automatically adjusts to the latest State and shows the proper UI.
2024-03-28 21:09:47 -07:00
Severiano Jaramillo
8189b590d3 Implement two way communication with Dero node.
- Implemented basic two way communication with the Dero node. The Bridge is listening for Dero node updates and requests the Block Height when receiving a Height update from the node.
- Renamed Bridge to StargateBridge and added basic documentation.
- Created model for DeroNode instances. We use only one node for now, but will add more down the line.
2024-03-28 19:55:55 -07:00
Severiano Jaramillo
8b9727082a Add basic WebSocket connectivity with Dero node.
- Created a new stargate module that will contain the code to connect with the Dero nodes. This stargate module will use the ktor library, which is a multiplatform networking library that works on both Android and iOS.
- Added a bassic connectivity with a Dero node. It just connects with the node, listens for messages, and prints them out to the standard output.
- Introduced the ScreenModel library and created a basic ImportAccountScreenModel. ScreenModel classes serve to host all the logic for their corresponding screens.
- Added the Internet permssion to the Android app, to be able to connect with the internet.
- Removed the Desktop target. After discussing with Ken, we decided that investing on a Desktop app does not make sense. We will focus on Android and iOS only.
2024-03-25 21:14:16 -07:00
Severiano Jaramillo
34c82ba8f6 Add module for managing user preferences.
- Navigate to Import Account screen if there is no active account.
- Add basic node status placeholder in Import Account screen.
2024-03-09 19:06:33 -06:00
Severiano Jaramillo
ca86caa72e Add word counter to Import Account screen 2024-03-07 00:46:00 -06:00
Severiano Jaramillo
ea27b33b3e Improve launcher icon appearance 2024-03-07 00:12:25 -06:00
Severiano Jaramillo
b5a724137a Styling improvements
- Configure app edge to edge for better status bar appearance.
- Set minSdk to 26.
- Set launcher icon using Kee icon.
- Minor UI improvements to Import Account screen.
2024-03-06 23:55:17 -06:00
Severiano Jaramillo
3368f38a45 Configure dark theme on current screens
- Show light and dark screen previews for current composables
2024-03-06 23:55:17 -06:00
Severiano Jaramillo
d87431bce2 Add ImportAccountScreen with basic functionality.
- Make HomeScreen the default navigator destination
- Create reusable TopAppBar component
2024-03-06 23:55:17 -06:00
Severiano Jaramillo
ce79a8fc4d Introduce Voyager lib and configure basic Navigation.
- Voyager is a navigation library that allows us to navigate between Composable screens.
- I created basic LicenseScreen and HomeScreen.
2024-03-06 23:55:17 -06:00
Severiano Jaramillo
888d29e436 Re-arrange code structure 2024-03-06 23:55:17 -06:00
Severiano Jaramillo
2dba2b6b53 Initial commit 2024-03-06 23:55:12 -06:00
61839a2667 Update README.md 2024-03-03 15:59:07 +00:00
2434441757 Update README.md 2024-03-02 14:14:00 +00:00
9f8ec93dde Initial commit 2024-02-28 23:42:27 +00:00