lib: deprecate parseHex and use hexToByteArray instead

This commit is contained in:
Oscar Mira 2025-01-30 14:21:57 +01:00
parent d05a056698
commit 16ff7b06db
No known key found for this signature in database
GPG key ID: B371B98C5DC32237
3 changed files with 6 additions and 18 deletions

View file

@ -12,14 +12,12 @@ import im.molly.monero.demo.data.WalletRepository
import im.molly.monero.demo.data.model.DefaultMoneroNetwork import im.molly.monero.demo.data.model.DefaultMoneroNetwork
import im.molly.monero.demo.data.model.RemoteNode import im.molly.monero.demo.data.model.RemoteNode
import im.molly.monero.mnemonics.MoneroMnemonic import im.molly.monero.mnemonics.MoneroMnemonic
import im.molly.monero.util.parseHex
import im.molly.monero.util.toHex
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.* import kotlinx.coroutines.flow.*
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.time.LocalDate import java.time.LocalDate
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class, ExperimentalStdlibApi::class)
class AddWalletViewModel( class AddWalletViewModel(
private val remoteNodeRepository: RemoteNodeRepository = AppModule.remoteNodeRepository, private val remoteNodeRepository: RemoteNodeRepository = AppModule.remoteNodeRepository,
private val walletRepository: WalletRepository = AppModule.walletRepository, private val walletRepository: WalletRepository = AppModule.walletRepository,
@ -66,7 +64,7 @@ class AddWalletViewModel(
MoneroMnemonic.recoverEntropy(words)?.use { mnemonicCode -> MoneroMnemonic.recoverEntropy(words)?.use { mnemonicCode ->
val secretKey = SecretKey(mnemonicCode.entropy) val secretKey = SecretKey(mnemonicCode.entropy)
viewModelState.update { viewModelState.update {
it.copy(secretSpendKeyHex = secretKey.bytes.toHex()) it.copy(secretSpendKeyHex = secretKey.bytes.toHexString())
} }
secretKey.destroy() secretKey.destroy()
return true return true
@ -85,7 +83,7 @@ class AddWalletViewModel(
fun validateSecretSpendKeyHex(): Boolean = fun validateSecretSpendKeyHex(): Boolean =
with(viewModelState.value) { with(viewModelState.value) {
return secretSpendKeyHex.length == 64 && runCatching { return secretSpendKeyHex.length == 64 && runCatching {
secretSpendKeyHex.parseHex() secretSpendKeyHex.hexToByteArray()
}.isSuccess }.isSuccess
} }
@ -125,7 +123,7 @@ class AddWalletViewModel(
else -> RestorePoint.Genesis else -> RestorePoint.Genesis
} }
SecretKey(state.secretSpendKeyHex.parseHex()).use { secretSpendKey -> SecretKey(state.secretSpendKeyHex.hexToByteArray()).use { secretSpendKey ->
walletRepository.restoreWallet( walletRepository.restoreWallet(
state.network, state.network,
state.walletName, state.walletName,

View file

@ -1,11 +0,0 @@
package im.molly.monero.util
fun CharSequence.parseHex(): ByteArray {
check(length % 2 == 0) { "Must have an even length" }
return ByteArray(length / 2) {
Integer.parseInt(substring(it * 2, (it + 1) * 2), 16).toByte()
}
}
fun ByteArray.toHex(): String = joinToString(separator = "") { "%02x".format(it) }

View file

@ -4,6 +4,7 @@ import com.google.common.truth.Truth.assertThat
import org.junit.Assert import org.junit.Assert
import org.junit.Test import org.junit.Test
@OptIn(ExperimentalStdlibApi::class)
class Base58Test { class Base58Test {
// Test cases from monero unit_tests/base58.cpp // Test cases from monero unit_tests/base58.cpp
@ -134,7 +135,7 @@ class Base58Test {
@Test @Test
fun `decode valid base58 strings`() { fun `decode valid base58 strings`() {
base58ToHex.forEach { (input, expected) -> base58ToHex.forEach { (input, expected) ->
assertThat(input.decodeBase58()).isEqualTo(expected.parseHex()) assertThat(input.decodeBase58()).isEqualTo(expected.hexToByteArray())
} }
} }