- 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.
- Ported over the CurvePoint functionality to Kotlin from the derohe project.
- Made minor improvements to how contsants in different classes are defined.
- 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.
- 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.
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