X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=ldk-c-bindings;a=blobdiff_plain;f=lightning-c-bindings%2Fsrc%2Fc_types%2Fmod.rs;h=0c46581f20266e5abe23dfab1e1d151de0d2b40d;hp=3b574073fcdd23fd100e1dcf05bf7e120159098d;hb=0cd1d74453b0d9527e9979c99e61b912b3257e06;hpb=423f8379f53b7407632e7e5ae3dfd4aa6fab351b diff --git a/lightning-c-bindings/src/c_types/mod.rs b/lightning-c-bindings/src/c_types/mod.rs index 3b57407..0c46581 100644 --- a/lightning-c-bindings/src/c_types/mod.rs +++ b/lightning-c-bindings/src/c_types/mod.rs @@ -11,6 +11,7 @@ use bitcoin::secp256k1::ecdsa::Signature as SecpSignature; use bitcoin::secp256k1::Error as SecpError; use bitcoin::secp256k1::ecdsa::RecoveryId; use bitcoin::secp256k1::ecdsa::RecoverableSignature as SecpRecoverableSignature; +use bitcoin::secp256k1::Scalar as SecpScalar; use bitcoin::bech32; use bitcoin::util::address; @@ -149,6 +150,22 @@ impl RecoverableSignature { } } +#[repr(C)] +#[derive(Clone)] +/// Represents a scalar value between zero and the secp256k1 curve order, in big endian. +pub struct BigEndianScalar { + /// The bytes of the scalar value. + pub big_endian_bytes: [u8; 32], +} +impl BigEndianScalar { + pub(crate) fn from_rust(scalar: &SecpScalar) -> Self { + Self { big_endian_bytes: scalar.to_be_bytes() } + } + pub(crate) fn into_rust(&self) -> SecpScalar { + SecpScalar::from_be_bytes(self.big_endian_bytes).expect("Scalar greater than the curve order") + } +} + #[repr(C)] #[derive(Copy, Clone)] /// Represents an error returned from libsecp256k1 during validation of some secp256k1 data