Skip to content

Commit

Permalink
Rename primitive method arguments to accountIndex consistently
Browse files Browse the repository at this point in the history
  • Loading branch information
str4d committed Nov 22, 2024
1 parent 711bb1c commit 6798669
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ interface Backend {
suspend fun initBlockMetaDb(): Int

suspend fun proposeTransfer(
account: Int,
accountIndex: Int,
to: String,
value: Long,
memo: ByteArray? = null
Expand All @@ -35,12 +35,12 @@ interface Backend {
*/
@Throws(RuntimeException::class)
suspend fun proposeTransferFromUri(
account: Int,
accountIndex: Int,
uri: String
): ProposalUnsafe

suspend fun proposeShielding(
account: Int,
accountIndex: Int,
shieldingThreshold: Long,
memo: ByteArray? = null,
transparentReceiver: String? = null
Expand Down Expand Up @@ -109,13 +109,13 @@ interface Backend {
fun isValidTexAddr(addr: String): Boolean

@Throws(RuntimeException::class)
suspend fun getCurrentAddress(account: Int): String
suspend fun getCurrentAddress(accountIndex: Int): String

fun getTransparentReceiver(ua: String): String?

fun getSaplingReceiver(ua: String): String?

suspend fun listTransparentReceivers(account: Int): List<String>
suspend fun listTransparentReceivers(accountIndex: Int): List<String>

fun getBranchIdForHeight(height: Long): Long

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,11 @@ class RustBackend private constructor(
)
}

override suspend fun getCurrentAddress(account: Int) =
override suspend fun getCurrentAddress(accountIndex: Int) =
withContext(SdkDispatchers.DATABASE_IO) {
getCurrentAddress(
dataDbFile.absolutePath,
account,
accountIndex,
networkId = networkId
)
}
Expand All @@ -127,11 +127,11 @@ class RustBackend private constructor(

override fun getSaplingReceiver(ua: String) = getSaplingReceiverForUnifiedAddress(ua)

override suspend fun listTransparentReceivers(account: Int): List<String> {
override suspend fun listTransparentReceivers(accountIndex: Int): List<String> {
return withContext(SdkDispatchers.DATABASE_IO) {
listTransparentReceivers(
dbDataPath = dataDbFile.absolutePath,
account = account,
accountIndex = accountIndex,
networkId = networkId
).asList()
}
Expand Down Expand Up @@ -318,22 +318,22 @@ class RustBackend private constructor(
}

override suspend fun proposeTransferFromUri(
account: Int,
accountIndex: Int,
uri: String
): ProposalUnsafe =
withContext(SdkDispatchers.DATABASE_IO) {
ProposalUnsafe.parse(
proposeTransferFromUri(
dataDbFile.absolutePath,
account,
accountIndex,
uri,
networkId = networkId,
)
)
}

override suspend fun proposeTransfer(
account: Int,
accountIndex: Int,
to: String,
value: Long,
memo: ByteArray?
Expand All @@ -342,7 +342,7 @@ class RustBackend private constructor(
ProposalUnsafe.parse(
proposeTransfer(
dataDbFile.absolutePath,
account,
accountIndex,
to,
value,
memo,
Expand All @@ -352,15 +352,15 @@ class RustBackend private constructor(
}

override suspend fun proposeShielding(
account: Int,
accountIndex: Int,
shieldingThreshold: Long,
memo: ByteArray?,
transparentReceiver: String?
): ProposalUnsafe? {
return withContext(SdkDispatchers.DATABASE_IO) {
proposeShielding(
dataDbFile.absolutePath,
account,
accountIndex,
shieldingThreshold,
memo,
transparentReceiver,
Expand Down Expand Up @@ -510,7 +510,7 @@ class RustBackend private constructor(
@JvmStatic
private external fun getCurrentAddress(
dbDataPath: String,
account: Int,
accountIndex: Int,
networkId: Int
): String

Expand All @@ -523,7 +523,7 @@ class RustBackend private constructor(
@JvmStatic
private external fun listTransparentReceivers(
dbDataPath: String,
account: Int,
accountIndex: Int,
networkId: Int
): Array<String>

Expand Down Expand Up @@ -671,7 +671,7 @@ class RustBackend private constructor(
@JvmStatic
private external fun proposeTransferFromUri(
dbDataPath: String,
account: Int,
accountIndex: Int,
uri: String,
networkId: Int,
): ByteArray
Expand All @@ -680,7 +680,7 @@ class RustBackend private constructor(
@Suppress("LongParameterList")
private external fun proposeTransfer(
dbDataPath: String,
account: Int,
accountIndex: Int,
to: String,
value: Long,
memo: ByteArray?,
Expand All @@ -691,7 +691,7 @@ class RustBackend private constructor(
@Suppress("LongParameterList")
private external fun proposeShielding(
dbDataPath: String,
account: Int,
accountIndex: Int,
shieldingThreshold: Long,
memo: ByteArray?,
transparentReceiver: String?,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ class RustDerivationTool private constructor() : Derivation {
@JvmStatic
private external fun deriveSpendingKey(
seed: ByteArray,
account: Int,
accountIndex: Int,
networkId: Int
): JniUnifiedSpendingKey

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ import androidx.annotation.Keep
*/
@Keep
class JniUnifiedSpendingKey(
/**
* The [ZIP 32](https://zips.z.cash/zip-0032) account index used to derive this key.
*/
val account: Int,
/**
* The binary encoding of the [ZIP 316](https://zips.z.cash/zip-0316) Unified Spending
Expand Down
43 changes: 23 additions & 20 deletions backend-lib/src/main/rust/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@ fn block_db(env: &mut JNIEnv, fsblockdb_root: JString) -> anyhow::Result<FsBlock
.map_err(|e| anyhow!("Error opening block source database connection: {:?}", e))
}

fn account_id_from_jint(account: jint) -> anyhow::Result<zip32::AccountId> {
u32::try_from(account)
fn zip32_account_index_from_jint(account_index: jint) -> anyhow::Result<zip32::AccountId> {
u32::try_from(account_index)
.map_err(|_| ())
.and_then(|id| zip32::AccountId::try_from(id).map_err(|_| ()))
.map_err(|_| anyhow!("Invalid account ID"))
Expand All @@ -116,7 +116,7 @@ fn account_id_from_jni<P: Parameters>(
db_data: &WalletDb<rusqlite::Connection, P>,
account_index: jint,
) -> anyhow::Result<AccountId> {
let requested_account_index = account_id_from_jint(account_index)?;
let requested_account_index = zip32_account_index_from_jint(account_index)?;

// Find the single account matching the given ZIP 32 account index.
let mut accounts = db_data
Expand Down Expand Up @@ -360,15 +360,18 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustBackend_getAccoun

fn encode_usk<'a>(
env: &mut JNIEnv<'a>,
account: zip32::AccountId,
account_index: zip32::AccountId,
usk: UnifiedSpendingKey,
) -> jni::errors::Result<JObject<'a>> {
let encoded = SecretVec::new(usk.to_bytes(Era::Orchard));
let bytes = env.byte_array_from_slice(encoded.expose_secret())?;
env.new_object(
"cash/z/ecc/android/sdk/internal/model/JniUnifiedSpendingKey",
"(I[B)V",
&[JValue::Int(u32::from(account) as i32), (&bytes).into()],
&[
JValue::Int(u32::from(account_index) as i32),
(&bytes).into(),
],
)
}

Expand Down Expand Up @@ -480,14 +483,14 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustBackend_getCurren
mut env: JNIEnv<'local>,
_: JClass<'local>,
db_data: JString<'local>,
account: jint,
account_index: jint,
network_id: jint,
) -> jstring {
let res = catch_unwind(&mut env, |env| {
let _span = tracing::info_span!("RustBackend.getCurrentAddress").entered();
let network = parse_network(network_id as u32)?;
let db_data = wallet_db(env, network, db_data)?;
let account = account_id_from_jni(&db_data, account)?;
let account = account_id_from_jni(&db_data, account_index)?;

match db_data.get_current_address(account) {
Ok(Some(addr)) => {
Expand Down Expand Up @@ -1624,15 +1627,15 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustBackend_proposeTr
mut env: JNIEnv<'local>,
_: JClass<'local>,
db_data: JString<'local>,
account: jint,
account_index: jint,
payment_uri: JString<'local>,
network_id: jint,
) -> jbyteArray {
let res = catch_unwind(&mut env, |env| {
let _span = tracing::info_span!("RustBackend.proposeTransfer").entered();
let network = parse_network(network_id as u32)?;
let mut db_data = wallet_db(env, network, db_data)?;
let account = account_id_from_jni(&db_data, account)?;
let account = account_id_from_jni(&db_data, account_index)?;
let payment_uri = utils::java_string_to_rust(env, &payment_uri);

// Always use ZIP 317 fees
Expand Down Expand Up @@ -1668,7 +1671,7 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustBackend_proposeTr
mut env: JNIEnv<'local>,
_: JClass<'local>,
db_data: JString<'local>,
account: jint,
account_index: jint,
to: JString<'local>,
value: jlong,
memo: JByteArray<'local>,
Expand All @@ -1678,7 +1681,7 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustBackend_proposeTr
let _span = tracing::info_span!("RustBackend.proposeTransfer").entered();
let network = parse_network(network_id as u32)?;
let mut db_data = wallet_db(env, network, db_data)?;
let account = account_id_from_jni(&db_data, account)?;
let account = account_id_from_jni(&db_data, account_index)?;
let to = utils::java_string_to_rust(env, &to);
let value = NonNegativeAmount::from_nonnegative_i64(value)
.map_err(|_| anyhow!("Invalid amount, out of range"))?;
Expand Down Expand Up @@ -1732,7 +1735,7 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustBackend_proposeSh
mut env: JNIEnv<'local>,
_: JClass<'local>,
db_data: JString<'local>,
account: jint,
account_index: jint,
shielding_threshold: jlong,
memo: JByteArray<'local>,
transparent_receiver: JString<'local>,
Expand All @@ -1742,7 +1745,7 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustBackend_proposeSh
let _span = tracing::info_span!("RustBackend.proposeShielding").entered();
let network = parse_network(network_id as u32)?;
let mut db_data = wallet_db(env, network, db_data)?;
let account = account_id_from_jni(&db_data, account)?;
let account = account_id_from_jni(&db_data, account_index)?;
let shielding_threshold = NonNegativeAmount::from_nonnegative_i64(shielding_threshold)
.map_err(|_| anyhow!("Invalid shielding threshold, out of range"))?;

Expand Down Expand Up @@ -1929,14 +1932,14 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustDerivationTool_de
mut env: JNIEnv<'local>,
_: JClass<'local>,
seed: JByteArray<'local>,
account: jint,
account_index: jint,
network_id: jint,
) -> jobject {
let res = catch_unwind(&mut env, |env| {
let _span = tracing::info_span!("RustDerivationTool.deriveSpendingKey").entered();
let network = parse_network(network_id as u32)?;
let seed = SecretVec::new(env.convert_byte_array(seed).unwrap());
let account = account_id_from_jint(account)?;
let account = zip32_account_index_from_jint(account_index)?;

let usk = UnifiedSpendingKey::from_seed(&network, seed.expose_secret(), account)
.map_err(|e| anyhow!("error generating unified spending key from seed: {:?}", e))?;
Expand Down Expand Up @@ -2006,7 +2009,7 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustDerivationTool_de
tracing::info_span!("RustDerivationTool.deriveUnifiedAddressFromSeed").entered();
let network = parse_network(network_id as u32)?;
let seed = env.convert_byte_array(seed).unwrap();
let account_id = account_id_from_jint(account_index)?;
let account_id = zip32_account_index_from_jint(account_index)?;

let ufvk = UnifiedSpendingKey::from_seed(&network, &seed, account_id)
.map_err(|e| anyhow!("error generating unified spending key from seed: {:?}", e))
Expand Down Expand Up @@ -2116,7 +2119,7 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustDerivationTool_de
_: JClass<'local>,
context_string: JByteArray<'local>,
seed: JByteArray<'local>,
account: jint,
account_index: jint,
network_id: jint,
) -> jbyteArray {
let res = panic::catch_unwind(|| {
Expand All @@ -2125,7 +2128,7 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustDerivationTool_de
let network = parse_network(network_id as u32)?;
let context_string = env.convert_byte_array(context_string)?;
let seed = SecretVec::new(env.convert_byte_array(seed)?);
let account = account_id_from_jint(account)?;
let account = zip32_account_index_from_jint(account_index)?;

let key = zip32::arbitrary::SecretKey::from_path(
&context_string,
Expand Down Expand Up @@ -2251,15 +2254,15 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustBackend_listTrans
mut env: JNIEnv<'local>,
_: JClass<'local>,
db_data: JString<'local>,
account_id: jint,
account_index: jint,
network_id: jint,
) -> jobjectArray {
let res = catch_unwind(&mut env, |env| {
let _span = tracing::info_span!("RustBackend.listTransparentReceivers").entered();
let network = parse_network(network_id as u32)?;
let zcash_network = network.network_type();
let db_data = wallet_db(env, network, db_data)?;
let account = account_id_from_jni(&db_data, account_id)?;
let account = account_id_from_jni(&db_data, account_index)?;

match db_data.get_transparent_receivers(account) {
Ok(receivers) => {
Expand Down
Loading

0 comments on commit 6798669

Please sign in to comment.