use bitcoin::Script as BitcoinScript;
use bitcoin::Transaction as BitcoinTransaction;
+use bitcoin::hashes::Hash;
use bitcoin::secp256k1::key::PublicKey as SecpPublicKey;
use bitcoin::secp256k1::key::SecretKey as SecpSecretKey;
use bitcoin::secp256k1::Signature as SecpSignature;
use bitcoin::secp256k1::Error as SecpError;
+use std::convert::TryInto; // Bindings need at least rustc 1.34
+
#[derive(Clone)]
#[repr(C)]
pub struct PublicKey {
pub(crate) fn into_rust(&self) -> SecpSignature {
SecpSignature::from_compact(&self.compact_form).unwrap()
}
- pub(crate) fn is_null(&self) -> bool { self.compact_form[..] == [0; 64][..] }
- pub(crate) fn null() -> Self { Self { compact_form: [0; 64] } }
+ // The following are used for Option<Signature> which we support, but don't use anymore
+ #[allow(unused)] pub(crate) fn is_null(&self) -> bool { self.compact_form[..] == [0; 64][..] }
+ #[allow(unused)] pub(crate) fn null() -> Self { Self { compact_form: [0; 64] } }
}
#[repr(C)]
#[no_mangle]
pub extern "C" fn Transaction_free(_res: Transaction) { }
+pub(crate) fn bitcoin_to_C_outpoint(outpoint: ::bitcoin::blockdata::transaction::OutPoint) -> crate::chain::transaction::OutPoint {
+ crate::chain::transaction::OutPoint_new(ThirtyTwoBytes { data: outpoint.txid.into_inner() }, outpoint.vout.try_into().unwrap())
+}
+
#[repr(C)]
#[derive(Clone)]
/// A transaction output including a scriptPubKey and value.
fn clone(&self) -> Self {
let mut res = Vec::new();
if self.datalen == 0 { return Self::from(res); }
- res.clone_from_slice(unsafe { std::slice::from_raw_parts_mut(self.data, self.datalen) });
+ res.extend_from_slice(unsafe { std::slice::from_raw_parts_mut(self.data, self.datalen) });
Self::from(res)
}
}