diff --git a/coins/monero/src/ringct/clsag/multisig.rs b/coins/monero/src/ringct/clsag/multisig.rs index 3a6df552..7ca66a32 100644 --- a/coins/monero/src/ringct/clsag/multisig.rs +++ b/coins/monero/src/ringct/clsag/multisig.rs @@ -55,13 +55,13 @@ impl ClsagInput { } #[derive(Clone, Debug, Zeroize, ZeroizeOnDrop)] -pub(crate) struct ClsagDetails { +pub struct ClsagDetails { input: ClsagInput, mask: Scalar, } impl ClsagDetails { - pub(crate) fn new(input: ClsagInput, mask: Scalar) -> ClsagDetails { + pub fn new(input: ClsagInput, mask: Scalar) -> ClsagDetails { ClsagDetails { input, mask } } } @@ -111,6 +111,10 @@ impl ClsagMultisig { }) } + pub(crate) const fn serialized_len() -> usize { + 32 + (2 * 32) + } + fn input(&self) -> ClsagInput { (*self.details.read().unwrap()).as_ref().unwrap().input.clone() } @@ -133,7 +137,7 @@ impl Algorithm for ClsagMultisig { rng: &mut R, view: &FrostView, ) -> Vec { - let mut serialized = Vec::with_capacity(32 + (2 * 32)); + let mut serialized = Vec::with_capacity(Self::serialized_len()); serialized.extend((view.secret_share().0 * self.H).compress().to_bytes()); serialized.extend(write_dleq(rng, self.H, view.secret_share().0)); serialized diff --git a/coins/monero/src/rpc.rs b/coins/monero/src/rpc.rs index 0b29a018..abd6b394 100644 --- a/coins/monero/src/rpc.rs +++ b/coins/monero/src/rpc.rs @@ -17,9 +17,9 @@ use crate::{ }; #[derive(Deserialize, Debug)] -struct EmptyResponse {} +pub struct EmptyResponse {} #[derive(Deserialize, Debug)] -struct JsonRpcResponse { +pub struct JsonRpcResponse { result: T, } diff --git a/coins/monero/src/serialize.rs b/coins/monero/src/serialize.rs index 1d2a1303..47cbaadc 100644 --- a/coins/monero/src/serialize.rs +++ b/coins/monero/src/serialize.rs @@ -7,7 +7,7 @@ use curve25519_dalek::{ const VARINT_CONTINUATION_MASK: u8 = 0b1000_0000; -fn varint_len(varint: usize) -> usize { +pub(crate) fn varint_len(varint: usize) -> usize { ((usize::try_from(usize::BITS - varint.leading_zeros()).unwrap().saturating_sub(1)) / 7) + 1 }