2 import CommonBase from './CommonBase';
3 import * as bindings from '../bindings' // TODO: figure out location
5 public class ChannelKeys extends CommonBase {
6 final bindings.LDKChannelKeys bindings_instance;
7 ChannelKeys(Object _dummy, long ptr) { super(ptr); bindings_instance = null; }
8 private ChannelKeys(bindings.LDKChannelKeys arg, ChannelPublicKeys pubkeys) {
9 super(bindings.LDKChannelKeys_new(arg, pubkeys == null ? 0 : pubkeys.ptr & ~1));
10 this.ptrs_to.add(arg);
11 this.ptrs_to.add(pubkeys);
12 this.bindings_instance = arg;
14 @Override @SuppressWarnings("deprecation")
15 protected void finalize() throws Throwable {
16 if (ptr != 0) { bindings.ChannelKeys_free(ptr); } super.finalize();
19 public static interface ChannelKeysInterface {
20 byte[] get_per_commitment_point(long idx);
21 byte[] release_commitment_secret(long idx);
22 TwoTuple<Long, Long> key_derivation_params();
23 Result_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(CommitmentTransaction commitment_tx);
24 Result_SignatureNoneZ sign_holder_commitment(HolderCommitmentTransaction commitment_tx);
25 Result_CVec_SignatureZNoneZ sign_holder_commitment_htlc_transactions(HolderCommitmentTransaction commitment_tx);
26 Result_SignatureNoneZ sign_justice_transaction(byte[] justice_tx, long input, long amount, byte[] per_commitment_key, HTLCOutputInCommitment htlc);
27 Result_SignatureNoneZ sign_counterparty_htlc_transaction(byte[] htlc_tx, long input, long amount, byte[] per_commitment_point, HTLCOutputInCommitment htlc);
28 Result_SignatureNoneZ sign_closing_transaction(byte[] closing_tx);
29 Result_SignatureNoneZ sign_channel_announcement(UnsignedChannelAnnouncement msg);
30 void ready_channel(ChannelTransactionParameters channel_parameters);
33 private static class LDKChannelKeysHolder { ChannelKeys held; }
34 public static ChannelKeys new_impl(ChannelKeysInterface arg, ChannelPublicKeys pubkeys) {
35 final LDKChannelKeysHolder impl_holder = new LDKChannelKeysHolder();
36 impl_holder.held = new ChannelKeys(new bindings.LDKChannelKeys() {
37 @Override public byte[] get_per_commitment_point(long idx) {
38 byte[] ret = arg.get_per_commitment_point(idx);
41 @Override public byte[] release_commitment_secret(long idx) {
42 byte[] ret = arg.release_commitment_secret(idx);
45 @Override public uint32_t key_derivation_params() {
46 TwoTuple<Long, Long> ret = arg.key_derivation_params();
47 uint32_t result = bindings.C2Tuple_u64u64Z_new(ret.a, ret.b);
50 @Override public uint32_t sign_counterparty_commitment(uint32_t commitment_tx) {
51 CommitmentTransaction commitment_tx_hu_conv = new CommitmentTransaction(null, commitment_tx);
52 Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret = arg.sign_counterparty_commitment(commitment_tx_hu_conv);
53 uint32_t result = ret != null ? ret.ptr : 0;
57 @Override public uint32_t sign_holder_commitment(uint32_t commitment_tx) {
58 HolderCommitmentTransaction commitment_tx_hu_conv = new HolderCommitmentTransaction(null, commitment_tx);
59 Result_SignatureNoneZ ret = arg.sign_holder_commitment(commitment_tx_hu_conv);
60 uint32_t result = ret != null ? ret.ptr : 0;
64 @Override public uint32_t sign_holder_commitment_htlc_transactions(uint32_t commitment_tx) {
65 HolderCommitmentTransaction commitment_tx_hu_conv = new HolderCommitmentTransaction(null, commitment_tx);
66 Result_CVec_SignatureZNoneZ ret = arg.sign_holder_commitment_htlc_transactions(commitment_tx_hu_conv);
67 uint32_t result = ret != null ? ret.ptr : 0;
71 @Override public uint32_t sign_justice_transaction(byte[] justice_tx, long input, long amount, byte[] per_commitment_key, uint32_t htlc) {
72 HTLCOutputInCommitment htlc_hu_conv = new HTLCOutputInCommitment(null, htlc);
73 Result_SignatureNoneZ ret = arg.sign_justice_transaction(justice_tx, input, amount, per_commitment_key, htlc_hu_conv);
74 uint32_t result = ret != null ? ret.ptr : 0;
78 @Override public uint32_t sign_counterparty_htlc_transaction(byte[] htlc_tx, long input, long amount, byte[] per_commitment_point, uint32_t htlc) {
79 HTLCOutputInCommitment htlc_hu_conv = new HTLCOutputInCommitment(null, htlc);
80 Result_SignatureNoneZ ret = arg.sign_counterparty_htlc_transaction(htlc_tx, input, amount, per_commitment_point, htlc_hu_conv);
81 uint32_t result = ret != null ? ret.ptr : 0;
85 @Override public uint32_t sign_closing_transaction(byte[] closing_tx) {
86 Result_SignatureNoneZ ret = arg.sign_closing_transaction(closing_tx);
87 uint32_t result = ret != null ? ret.ptr : 0;
91 @Override public uint32_t sign_channel_announcement(uint32_t msg) {
92 UnsignedChannelAnnouncement msg_hu_conv = new UnsignedChannelAnnouncement(null, msg);
93 Result_SignatureNoneZ ret = arg.sign_channel_announcement(msg_hu_conv);
94 uint32_t result = ret != null ? ret.ptr : 0;
98 @Override public void ready_channel(uint32_t channel_parameters) {
99 ChannelTransactionParameters channel_parameters_hu_conv = new ChannelTransactionParameters(null, channel_parameters);
100 arg.ready_channel(channel_parameters_hu_conv);
102 @Override public byte[] write() {
103 byte[] ret = arg.write();
107 return impl_holder.held;
109 public byte[] get_per_commitment_point(long idx) {
110 byte[] ret = bindings.ChannelKeys_get_per_commitment_point(this.ptr, idx);
114 public byte[] release_commitment_secret(long idx) {
115 byte[] ret = bindings.ChannelKeys_release_commitment_secret(this.ptr, idx);
119 public TwoTuple<Long, Long> key_derivation_params() {
120 uint32_t ret = bindings.ChannelKeys_key_derivation_params(this.ptr);
121 long ret_a = bindings.LDKC2Tuple_u64u64Z_get_a(ret);
122 long ret_b = bindings.LDKC2Tuple_u64u64Z_get_b(ret);
123 TwoTuple<Long, Long> ret_conv = new TwoTuple<Long, Long>(ret_a, ret_b);
127 public Result_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(CommitmentTransaction commitment_tx) {
128 uint32_t ret = bindings.ChannelKeys_sign_counterparty_commitment(this.ptr, commitment_tx == null ? 0 : commitment_tx.ptr & ~1);
129 Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_hu_conv = Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.constr_from_ptr(ret);
130 this.ptrs_to.add(commitment_tx);
134 public Result_SignatureNoneZ sign_holder_commitment(HolderCommitmentTransaction commitment_tx) {
135 uint32_t ret = bindings.ChannelKeys_sign_holder_commitment(this.ptr, commitment_tx == null ? 0 : commitment_tx.ptr & ~1);
136 Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
137 this.ptrs_to.add(commitment_tx);
141 public Result_CVec_SignatureZNoneZ sign_holder_commitment_htlc_transactions(HolderCommitmentTransaction commitment_tx) {
142 uint32_t ret = bindings.ChannelKeys_sign_holder_commitment_htlc_transactions(this.ptr, commitment_tx == null ? 0 : commitment_tx.ptr & ~1);
143 Result_CVec_SignatureZNoneZ ret_hu_conv = Result_CVec_SignatureZNoneZ.constr_from_ptr(ret);
144 this.ptrs_to.add(commitment_tx);
148 public Result_SignatureNoneZ sign_justice_transaction(byte[] justice_tx, long input, long amount, byte[] per_commitment_key, HTLCOutputInCommitment htlc) {
149 uint32_t ret = bindings.ChannelKeys_sign_justice_transaction(this.ptr, justice_tx, input, amount, per_commitment_key, htlc == null ? 0 : htlc.ptr & ~1);
150 Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
151 this.ptrs_to.add(htlc);
155 public Result_SignatureNoneZ sign_counterparty_htlc_transaction(byte[] htlc_tx, long input, long amount, byte[] per_commitment_point, HTLCOutputInCommitment htlc) {
156 uint32_t ret = bindings.ChannelKeys_sign_counterparty_htlc_transaction(this.ptr, htlc_tx, input, amount, per_commitment_point, htlc == null ? 0 : htlc.ptr & ~1);
157 Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
158 this.ptrs_to.add(htlc);
162 public Result_SignatureNoneZ sign_closing_transaction(byte[] closing_tx) {
163 uint32_t ret = bindings.ChannelKeys_sign_closing_transaction(this.ptr, closing_tx);
164 Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
168 public Result_SignatureNoneZ sign_channel_announcement(UnsignedChannelAnnouncement msg) {
169 uint32_t ret = bindings.ChannelKeys_sign_channel_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1);
170 Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
171 this.ptrs_to.add(msg);
175 public void ready_channel(ChannelTransactionParameters channel_parameters) {
176 bindings.ChannelKeys_ready_channel(this.ptr, channel_parameters == null ? 0 : channel_parameters.ptr & ~1);
177 this.ptrs_to.add(channel_parameters);
180 public byte[] write() {
181 byte[] ret = bindings.ChannelKeys_write(this.ptr);
185 public ChannelPublicKeys get_pubkeys() {
186 uint32_t ret = bindings.ChannelKeys_get_pubkeys(this.ptr);
187 ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret);
191 public ChannelKeys clone() {
192 uint32_t ret = bindings.ChannelKeys_clone(this.ptr);
193 ChannelKeys ret_hu_conv = new ChannelKeys(null, ret);
194 ret_hu_conv.ptrs_to.add(this);