diff --git a/bindings/c-ffi/src/lib.rs b/bindings/c-ffi/src/lib.rs index e3be436..783d9e9 100644 --- a/bindings/c-ffi/src/lib.rs +++ b/bindings/c-ffi/src/lib.rs @@ -296,6 +296,14 @@ pub extern "C" fn rgblib_send_btc( send_btc(wallet, online, address, amount, fee_rate, skip_sync).into() } +#[no_mangle] +pub extern "C" fn rgblib_sign_psbt( + wallet: &COpaqueStruct, + unsigned_psbt: *const c_char, +) -> CResultString { + sign_psbt(wallet, unsigned_psbt).into() +} + #[no_mangle] pub extern "C" fn rgblib_sync(wallet: &COpaqueStruct, online: &COpaqueStruct) -> CResultString { sync(wallet, online).into() diff --git a/bindings/c-ffi/src/utils.rs b/bindings/c-ffi/src/utils.rs index 5bf8d80..27ff174 100644 --- a/bindings/c-ffi/src/utils.rs +++ b/bindings/c-ffi/src/utils.rs @@ -473,6 +473,15 @@ pub(crate) fn send_btc( Ok(res) } +pub(crate) fn sign_psbt( + wallet: &COpaqueStruct, + unsigned_psbt: *const c_char, +) -> Result { + let wallet = Wallet::from_opaque(wallet)?; + let unsigned_psbt = ptr_to_string(unsigned_psbt); + Ok(wallet.sign_psbt(unsigned_psbt, None)?) +} + pub(crate) fn sync(wallet: &COpaqueStruct, online: &COpaqueStruct) -> Result<(), Error> { let wallet = Wallet::from_opaque(wallet)?; let online = Online::from_opaque(online)?;