+ @Override
+ public Sign get_channel_signer(boolean inbound, long channel_value_satoshis) {
+ Sign underlying_ck = underlying_if.get_channel_signer(inbound, channel_value_satoshis);
+ Sign.SignInterface si = new Sign.SignInterface() {
+ @Override
+ public byte[] get_per_commitment_point(long idx) {
+ return underlying_ck.get_per_commitment_point(idx);
+ }
+
+ @Override
+ public byte[] release_commitment_secret(long idx) {
+ return underlying_ck.release_commitment_secret(idx);
+ }
+
+ @Override
+ public byte[] channel_keys_id() {
+ return new byte[32];
+ }
+
+ @Override
+ public Result_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(CommitmentTransaction commitment_tx) {
+ return underlying_ck.sign_counterparty_commitment(commitment_tx);
+ }
+
+ @Override
+ public Result_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs(HolderCommitmentTransaction holder_commitment_tx) {
+ return underlying_ck.sign_holder_commitment_and_htlcs(holder_commitment_tx);
+ }
+
+ @Override
+ public Result_SignatureNoneZ sign_justice_transaction(byte[] justice_tx, long input, long amount, byte[] per_commitment_key, HTLCOutputInCommitment htlc) {
+ return underlying_ck.sign_justice_transaction(justice_tx, input, amount, per_commitment_key, htlc);
+ }
+
+ @Override
+ public Result_SignatureNoneZ sign_counterparty_htlc_transaction(byte[] htlc_tx, long input, long amount, byte[] per_commitment_point, HTLCOutputInCommitment htlc) {
+ return underlying_ck.sign_counterparty_htlc_transaction(htlc_tx, input, amount, per_commitment_point, htlc);
+ }
+
+ @Override
+ public Result_SignatureNoneZ sign_closing_transaction(byte[] closing_tx) {
+ return underlying_ck.sign_closing_transaction(closing_tx);
+ }
+
+ @Override
+ public Result_SignatureNoneZ sign_channel_announcement(UnsignedChannelAnnouncement msg) {
+ return underlying_ck.sign_channel_announcement(msg);
+ }
+
+ @Override
+ public void ready_channel(ChannelTransactionParameters params) {
+ underlying_ck.ready_channel(params);
+ }
+
+ @Override
+ public byte[] write() {
+ return underlying_ck.write();
+ }
+ };
+ Sign resp = Sign.new_impl(si, underlying_ck.get_pubkeys());
+ must_free_objs.add(new WeakReference<>(si));
+ must_free_objs.add(new WeakReference<>(resp));
+ must_free_objs.add(new WeakReference<>(underlying_ck));
+ return resp;
+ }
+
+ @Override
+ public byte[] get_secure_random_bytes() {
+ return underlying_if.get_secure_random_bytes();
+ }
+
+ @Override
+ public Result_SignDecodeErrorZ read_chan_signer(byte[] reader) {
+ return underlying_if.read_chan_signer(reader);
+ }