mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-25 07:17:40 +01:00
Move validate_counterparty_revocation to ChannelSigner.
This commit is contained in:
parent
007e6788f5
commit
6e5065d93d
3 changed files with 20 additions and 19 deletions
|
@ -40,11 +40,6 @@ pub trait EcdsaChannelSigner: ChannelSigner {
|
|||
fn sign_counterparty_commitment(&self, commitment_tx: &CommitmentTransaction,
|
||||
preimages: Vec<PaymentPreimage>, secp_ctx: &Secp256k1<secp256k1::All>
|
||||
) -> Result<(Signature, Vec<Signature>), ()>;
|
||||
/// Validate the counterparty's revocation.
|
||||
///
|
||||
/// This is required in order for the signer to make sure that the state has moved
|
||||
/// forward and it is safe to sign the next counterparty commitment.
|
||||
fn validate_counterparty_revocation(&self, idx: u64, secret: &SecretKey) -> Result<(), ()>;
|
||||
/// Creates a signature for a holder's commitment transaction.
|
||||
///
|
||||
/// This will be called
|
||||
|
|
|
@ -603,6 +603,12 @@ pub trait ChannelSigner {
|
|||
fn validate_holder_commitment(&self, holder_tx: &HolderCommitmentTransaction,
|
||||
preimages: Vec<PaymentPreimage>) -> Result<(), ()>;
|
||||
|
||||
/// Validate the counterparty's revocation.
|
||||
///
|
||||
/// This is required in order for the signer to make sure that the state has moved
|
||||
/// forward and it is safe to sign the next counterparty commitment.
|
||||
fn validate_counterparty_revocation(&self, idx: u64, secret: &SecretKey) -> Result<(), ()>;
|
||||
|
||||
/// Returns the holder's channel public keys and basepoints.
|
||||
fn pubkeys(&self) -> &ChannelPublicKeys;
|
||||
|
||||
|
@ -1084,6 +1090,10 @@ impl ChannelSigner for InMemorySigner {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn validate_counterparty_revocation(&self, _idx: u64, _secret: &SecretKey) -> Result<(), ()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn pubkeys(&self) -> &ChannelPublicKeys { &self.holder_channel_pubkeys }
|
||||
|
||||
fn channel_keys_id(&self) -> [u8; 32] { self.channel_keys_id }
|
||||
|
@ -1131,10 +1141,6 @@ impl EcdsaChannelSigner for InMemorySigner {
|
|||
Ok((commitment_sig, htlc_sigs))
|
||||
}
|
||||
|
||||
fn validate_counterparty_revocation(&self, _idx: u64, _secret: &SecretKey) -> Result<(), ()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn sign_holder_commitment(&self, commitment_tx: &HolderCommitmentTransaction, secp_ctx: &Secp256k1<secp256k1::All>) -> Result<Signature, ()> {
|
||||
let funding_pubkey = PublicKey::from_secret_key(secp_ctx, &self.funding_key);
|
||||
let counterparty_keys = self.counterparty_pubkeys().expect(MISSING_PARAMS_ERR);
|
||||
|
|
|
@ -146,6 +146,16 @@ impl ChannelSigner for TestChannelSigner {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn validate_counterparty_revocation(&self, idx: u64, _secret: &SecretKey) -> Result<(), ()> {
|
||||
if !*self.available.lock().unwrap() {
|
||||
return Err(());
|
||||
}
|
||||
let mut state = self.state.lock().unwrap();
|
||||
assert!(idx == state.last_counterparty_revoked_commitment || idx == state.last_counterparty_revoked_commitment - 1, "expecting to validate the current or next counterparty revocation - trying {}, current {}", idx, state.last_counterparty_revoked_commitment);
|
||||
state.last_counterparty_revoked_commitment = idx;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn pubkeys(&self) -> &ChannelPublicKeys { self.inner.pubkeys() }
|
||||
|
||||
fn channel_keys_id(&self) -> [u8; 32] { self.inner.channel_keys_id() }
|
||||
|
@ -178,16 +188,6 @@ impl EcdsaChannelSigner for TestChannelSigner {
|
|||
Ok(self.inner.sign_counterparty_commitment(commitment_tx, preimages, secp_ctx).unwrap())
|
||||
}
|
||||
|
||||
fn validate_counterparty_revocation(&self, idx: u64, _secret: &SecretKey) -> Result<(), ()> {
|
||||
if !*self.available.lock().unwrap() {
|
||||
return Err(());
|
||||
}
|
||||
let mut state = self.state.lock().unwrap();
|
||||
assert!(idx == state.last_counterparty_revoked_commitment || idx == state.last_counterparty_revoked_commitment - 1, "expecting to validate the current or next counterparty revocation - trying {}, current {}", idx, state.last_counterparty_revoked_commitment);
|
||||
state.last_counterparty_revoked_commitment = idx;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn sign_holder_commitment(&self, commitment_tx: &HolderCommitmentTransaction, secp_ctx: &Secp256k1<secp256k1::All>) -> Result<Signature, ()> {
|
||||
if !*self.available.lock().unwrap() {
|
||||
return Err(());
|
||||
|
|
Loading…
Add table
Reference in a new issue