iop_sdk_ffi/hydra/
private.rs1use super::*;
2
3#[no_mangle]
4pub extern "C" fn delete_HydraPrivate(private: *mut Private) {
5 delete(private)
6}
7
8#[no_mangle]
9pub extern "C" fn HydraPrivate_public_get(private: *mut Private) -> CPtrResult<Public> {
10 let fun = || {
11 let private = unsafe { convert::borrow_in(private) };
12 let public = private.public();
13 Ok(convert::move_out(public))
14 };
15 cresult(fun())
16}
17
18#[no_mangle]
19pub extern "C" fn HydraPrivate_xpub_get(private: *mut Private) -> CPtrResult<raw::c_char> {
20 let private = unsafe { convert::borrow_in(private) };
21 let fun = || {
22 let xpub = private.xpub()?;
23 Ok(convert::string_out(xpub))
24 };
25 cresult(fun())
26}
27
28#[no_mangle]
29pub extern "C" fn HydraPrivate_xprv_get(private: *mut Private) -> *mut raw::c_char {
30 let private = unsafe { convert::borrow_in(private) };
31 let xprv = private.xprv();
32 convert::string_out(xprv)
33}
34
35#[no_mangle]
36pub extern "C" fn HydraPrivate_receive_keys_get(private: *mut Private) -> CPtrResult<u32> {
37 let private = unsafe { convert::borrow_in(private) };
38 let fun = || {
39 let receive_keys = private.receive_keys()?;
40 Ok(convert::move_out(receive_keys))
41 };
42 cresult(fun())
43}
44
45#[no_mangle]
46pub extern "C" fn HydraPrivate_change_keys_get(private: *mut Private) -> CPtrResult<u32> {
47 let private = unsafe { convert::borrow_in(private) };
48 let fun = || {
49 let change_keys = private.change_keys()?;
50 Ok(convert::move_out(change_keys))
51 };
52 cresult(fun())
53}
54
55#[no_mangle]
57pub extern "C" fn HydraPrivate_sign_hydra_tx(
58 private: *mut Private, hyd_addr: *const raw::c_char, unsigned_tx: *const raw::c_char,
59) -> CPtrResult<raw::c_char> {
60 let private = unsafe { convert::borrow_mut_in(private) };
61 let fun = || {
62 let hyd_addr = unsafe { convert::str_in(hyd_addr)? };
63 let tx_str = unsafe { convert::str_in(unsigned_tx)? };
64 let mut tx_data: TransactionData = serde_json::from_str(tx_str)?;
65 private.sign_hydra_transaction(hyd_addr, &mut tx_data)?;
66 let signed_tx_str = serde_json::to_string(&tx_data)?;
67 Ok(convert::string_out(signed_tx_str))
68 };
69 cresult(fun())
70}
71
72#[no_mangle]
73pub extern "C" fn HydraPrivate_key(
74 private: *mut Private, idx: i32,
75) -> CPtrResult<Bip44Key<Secp256k1>> {
76 let fun = || {
77 let private = unsafe { convert::borrow_mut_in(private) };
78 let key = private.key_mut(idx)?;
79 Ok(convert::move_out(key))
80 };
81 cresult(fun())
82}
83
84#[no_mangle]
85pub extern "C" fn HydraPrivate_key_by_pk(
86 private: *mut Private, pub_key: *mut SecpPublicKey,
87) -> CPtrResult<Bip44Key<Secp256k1>> {
88 let private = unsafe { convert::borrow_in(private) };
89 let pub_key = unsafe { convert::borrow_in(pub_key) };
90 let fun = || {
91 let key = private.key_by_pk(pub_key)?;
92 Ok(convert::move_out(key))
93 };
94 cresult(fun())
95}