Skip to content

Passing Integer from Java to Rust panics #41

Closed
@aon

Description

@aon

Hi! I'm having an issue with the library (which is great btw). I'm unable to pass Integer from Java to Rust, as it panics. I'm running this on Android btw, in an emulator on a Macbook Pro m1, with Java 11.

This are some simplified versions of the code I'm using:

public class Rust {
    private static native Instance fnSign(Instance<String> message, Instance<String> key, Instance<Integer> parties, Instance<String> address);

    public Signature sign(String message, String key, String address) {
        Integer parties = Integer.valueOf(55);
        Instance instance = fnSign(
                Java2RustUtils.createInstance(message),
                Java2RustUtils.createInstance(key),
                Java2RustUtils.createInstance(parties),
                Java2RustUtils.createInstance(address));
        return Java2RustUtils.getObjectCasted(instance);
    }
}
#[call_from_java("expo.modules.multipartyecdsa.Rust.fnSign")]
fn sign(
    message: Instance,
    key: Instance,
    parties: Instance,
    address: Instance,
) -> Result<Instance> {
    let jvm = Jvm::attach_thread()?;

    let message: String = jvm.to_rust(message)?;
    let key: String = jvm.to_rust(key)?;
    let parties: i32 = jvm.to_rust(parties).unwrap();
    let address: String = jvm.to_rust(address)?;

    let signature = Signature {
        r: format!("message: {}, key: {}, address: {}", message, key, address),
        s: format!("parties: {:?}", parties),
        v: 1,
    };

    let ia = InvocationArg::new(&signature, "expo.modules.multipartyecdsa.Signature");
    let instance = Instance::try_from(ia)?;
    Ok(instance)
}

Something interesting that happens is that if I pass it as an array int[] it works.

If you have any further thing I can try or if you need any other information I'm all ears. Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions