X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Futil%2Fenforcing_trait_impls.rs;h=baa9e7cd16d98b05be00abcf5d7ebc46a75cbbf8;hb=03537cc346b0ab357cfc80021161c9174d3e270f;hp=a7036a9acd5d2b3de0754b6ad31dcb9758ef1916;hpb=b69ae07c11633f6721fe563d237f8a0f2980177c;p=rust-lightning diff --git a/lightning/src/util/enforcing_trait_impls.rs b/lightning/src/util/enforcing_trait_impls.rs index a7036a9a..baa9e7cd 100644 --- a/lightning/src/util/enforcing_trait_impls.rs +++ b/lightning/src/util/enforcing_trait_impls.rs @@ -9,10 +9,12 @@ use ln::chan_utils::{HTLCOutputInCommitment, ChannelPublicKeys, HolderCommitmentTransaction, CommitmentTransaction, ChannelTransactionParameters, TrustedCommitmentTransaction}; use ln::{chan_utils, msgs}; -use chain::keysinterface::{Sign, InMemorySigner}; +use chain::keysinterface::{Sign, InMemorySigner, BaseSign}; -use std::cmp; -use std::sync::{Mutex, Arc}; +use io; +use prelude::*; +use core::cmp; +use sync::{Mutex, Arc}; use bitcoin::blockdata::transaction::{Transaction, SigHashType}; use bitcoin::util::bip143; @@ -21,7 +23,7 @@ use bitcoin::secp256k1; use bitcoin::secp256k1::key::{SecretKey, PublicKey}; use bitcoin::secp256k1::{Secp256k1, Signature}; use util::ser::{Writeable, Writer, Readable}; -use std::io::Error; +use io::Error; use ln::msgs::DecodeError; /// Initial value for revoked commitment downward counter @@ -38,6 +40,9 @@ pub const INITIAL_REVOKED_COMMITMENT_NUMBER: u64 = 1 << 48; /// /// Eventually we will probably want to expose a variant of this which would essentially /// be what you'd want to run on a hardware wallet. +/// +/// Note that before we do so we should ensure its serialization format has backwards- and +/// forwards-compatibility prefix/suffixes! #[derive(Clone)] pub struct EnforcingSigner { pub inner: InMemorySigner, @@ -74,7 +79,7 @@ impl EnforcingSigner { } } -impl Sign for EnforcingSigner { +impl BaseSign for EnforcingSigner { fn get_per_commitment_point(&self, idx: u64, secp_ctx: &Secp256k1) -> PublicKey { self.inner.get_per_commitment_point(idx, secp_ctx) } @@ -140,8 +145,12 @@ impl Sign for EnforcingSigner { Ok(self.inner.unsafe_sign_holder_commitment_and_htlcs(commitment_tx, secp_ctx).unwrap()) } - fn sign_justice_transaction(&self, justice_tx: &Transaction, input: usize, amount: u64, per_commitment_key: &SecretKey, htlc: &Option, secp_ctx: &Secp256k1) -> Result { - Ok(self.inner.sign_justice_transaction(justice_tx, input, amount, per_commitment_key, htlc, secp_ctx).unwrap()) + fn sign_justice_revoked_output(&self, justice_tx: &Transaction, input: usize, amount: u64, per_commitment_key: &SecretKey, secp_ctx: &Secp256k1) -> Result { + Ok(self.inner.sign_justice_revoked_output(justice_tx, input, amount, per_commitment_key, secp_ctx).unwrap()) + } + + fn sign_justice_revoked_htlc(&self, justice_tx: &Transaction, input: usize, amount: u64, per_commitment_key: &SecretKey, htlc: &HTLCOutputInCommitment, secp_ctx: &Secp256k1) -> Result { + Ok(self.inner.sign_justice_revoked_htlc(justice_tx, input, amount, per_commitment_key, htlc, secp_ctx).unwrap()) } fn sign_counterparty_htlc_transaction(&self, htlc_tx: &Transaction, input: usize, amount: u64, per_commitment_point: &PublicKey, htlc: &HTLCOutputInCommitment, secp_ctx: &Secp256k1) -> Result { @@ -161,6 +170,7 @@ impl Sign for EnforcingSigner { } } +impl Sign for EnforcingSigner {} impl Writeable for EnforcingSigner { fn write(&self, writer: &mut W) -> Result<(), Error> { @@ -172,7 +182,7 @@ impl Writeable for EnforcingSigner { } impl Readable for EnforcingSigner { - fn read(reader: &mut R) -> Result { + fn read(reader: &mut R) -> Result { let inner = Readable::read(reader)?; let last_commitment_number = Readable::read(reader)?; Ok(EnforcingSigner {