You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.1 KiB
Rust
43 lines
1.1 KiB
Rust
use anyhow::Result;
|
|
use ecdsa_fun::{adaptor::EncryptedSignature, Signature};
|
|
use std::convert::TryFrom;
|
|
|
|
use crate::{bitcoin, monero};
|
|
|
|
#[derive(Debug)]
|
|
pub enum Message {
|
|
Message0(Message0),
|
|
Message1(Message1),
|
|
Message2(Message2),
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct Message0 {
|
|
pub(crate) A: bitcoin::PublicKey,
|
|
pub(crate) S_a_monero: monero::PublicKey,
|
|
pub(crate) S_a_bitcoin: bitcoin::PublicKey,
|
|
pub(crate) dleq_proof_s_a: cross_curve_dleq::Proof,
|
|
pub(crate) v_a: monero::PrivateViewKey,
|
|
pub(crate) redeem_address: bitcoin::Address,
|
|
pub(crate) punish_address: bitcoin::Address,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct Message1 {
|
|
pub(crate) tx_cancel_sig: Signature,
|
|
pub(crate) tx_refund_encsig: EncryptedSignature,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct Message2 {
|
|
pub(crate) tx_lock_proof: monero::TransferProof,
|
|
}
|
|
|
|
impl_try_from_parent_enum!(Message0, Message);
|
|
impl_try_from_parent_enum!(Message1, Message);
|
|
impl_try_from_parent_enum!(Message2, Message);
|
|
|
|
impl_from_child_enum!(Message0, Message);
|
|
impl_from_child_enum!(Message1, Message);
|
|
impl_from_child_enum!(Message2, Message);
|