X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FTrustedCommitmentTransaction.java;h=1590d438c6d2054bed30846eb187117bdc0907d8;hb=1854b5cebef22ace9e9e4dd191f609818df9ce08;hp=e49ae2426814d61eb0119149ce905f108f8b1f49;hpb=a9b82019e7ffa7d32d44943133bb64e1197bd2f1;p=ldk-java diff --git a/src/main/java/org/ldk/structs/TrustedCommitmentTransaction.java b/src/main/java/org/ldk/structs/TrustedCommitmentTransaction.java index e49ae242..1590d438 100644 --- a/src/main/java/org/ldk/structs/TrustedCommitmentTransaction.java +++ b/src/main/java/org/ldk/structs/TrustedCommitmentTransaction.java @@ -4,7 +4,18 @@ import org.ldk.impl.bindings; import org.ldk.enums.*; import org.ldk.util.*; import java.util.Arrays; +import java.lang.ref.Reference; +import javax.annotation.Nullable; + +/** + * A wrapper on CommitmentTransaction indicating that the derived fields (the built bitcoin + * transaction and the transaction creation keys) are trusted. + * + * See trust() and verify() functions on CommitmentTransaction. + * + * This structure implements Deref. + */ @SuppressWarnings("unchecked") // We correctly assign various generic arrays public class TrustedCommitmentTransaction extends CommonBase { TrustedCommitmentTransaction(Object _dummy, long ptr) { super(ptr); } @@ -14,25 +25,60 @@ public class TrustedCommitmentTransaction extends CommonBase { if (ptr != 0) { bindings.TrustedCommitmentTransaction_free(ptr); } } + /** + * The transaction ID of the built Bitcoin transaction + */ public byte[] txid() { byte[] ret = bindings.TrustedCommitmentTransaction_txid(this.ptr); + Reference.reachabilityFence(this); return ret; } + /** + * The pre-built Bitcoin commitment transaction + */ public BuiltCommitmentTransaction built_transaction() { long ret = bindings.TrustedCommitmentTransaction_built_transaction(this.ptr); - BuiltCommitmentTransaction ret_hu_conv = new BuiltCommitmentTransaction(null, ret); + Reference.reachabilityFence(this); + if (ret >= 0 && ret <= 4096) { return null; } + BuiltCommitmentTransaction ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new BuiltCommitmentTransaction(null, ret); } + ret_hu_conv.ptrs_to.add(this); return ret_hu_conv; } + /** + * The pre-calculated transaction creation public keys. + */ public TxCreationKeys keys() { long ret = bindings.TrustedCommitmentTransaction_keys(this.ptr); - TxCreationKeys ret_hu_conv = new TxCreationKeys(null, ret); + Reference.reachabilityFence(this); + if (ret >= 0 && ret <= 4096) { return null; } + TxCreationKeys ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new TxCreationKeys(null, ret); } + ret_hu_conv.ptrs_to.add(this); return ret_hu_conv; } + /** + * Should anchors be used. + */ + public boolean opt_anchors() { + boolean ret = bindings.TrustedCommitmentTransaction_opt_anchors(this.ptr); + Reference.reachabilityFence(this); + return ret; + } + + /** + * Get a signature for each HTLC which was included in the commitment transaction (ie for + * which HTLCOutputInCommitment::transaction_output_index.is_some()). + * + * The returned Vec has one entry for each HTLC, and in the same order. + */ public Result_CVec_SignatureZNoneZ get_htlc_sigs(byte[] htlc_base_key, DirectedChannelTransactionParameters channel_parameters) { - long ret = bindings.TrustedCommitmentTransaction_get_htlc_sigs(this.ptr, htlc_base_key, channel_parameters == null ? 0 : channel_parameters.ptr & ~1); + long ret = bindings.TrustedCommitmentTransaction_get_htlc_sigs(this.ptr, InternalUtils.check_arr_len(htlc_base_key, 32), channel_parameters == null ? 0 : channel_parameters.ptr & ~1); + Reference.reachabilityFence(this); + Reference.reachabilityFence(htlc_base_key); + Reference.reachabilityFence(channel_parameters); + if (ret >= 0 && ret <= 4096) { return null; } Result_CVec_SignatureZNoneZ ret_hu_conv = Result_CVec_SignatureZNoneZ.constr_from_ptr(ret); this.ptrs_to.add(channel_parameters); return ret_hu_conv;