]> git.bitcoin.ninja Git - ldk-java/commitdiff
Expose signatures as byte[], check array lengths in C.
authorMatt Corallo <git@bluematt.me>
Mon, 12 Oct 2020 21:32:11 +0000 (17:32 -0400)
committerMatt Corallo <git@bluematt.me>
Mon, 12 Oct 2020 21:32:11 +0000 (17:32 -0400)
15 files changed:
genbindings.py
src/main/java/org/ldk/impl/bindings.java
src/main/java/org/ldk/structs/AnnouncementSignatures.java
src/main/java/org/ldk/structs/ChannelAnnouncement.java
src/main/java/org/ldk/structs/ChannelUpdate.java
src/main/java/org/ldk/structs/ClosingSigned.java
src/main/java/org/ldk/structs/CommitmentSigned.java
src/main/java/org/ldk/structs/FundingCreated.java
src/main/java/org/ldk/structs/FundingSigned.java
src/main/java/org/ldk/structs/HolderCommitmentTransaction.java
src/main/java/org/ldk/structs/NodeAnnouncement.java
src/main/jni/bindings.c
src/main/jni/org_ldk_impl_bindings.h
src/test/java/org/ldk/HumanObjectPeerTest.java
src/test/java/org/ldk/PeerTest.java

index d7bc07b68b4526909bcd9a47e02d4849f5d04356..6fc8bf202d7d562ed0520f3675e8368dbfacdad1 100755 (executable)
@@ -123,10 +123,11 @@ with open(sys.argv[1]) as in_h, open(sys.argv[2], "w") as out_java, open(sys.arg
             assert var_is_arr_regex.match(fn_arg[8:])
             rust_obj = "LDKSecretKey"
             arr_access = "bytes"
-        #if fn_arg.startswith("LDKSignature"):
-        #    fn_arg = "uint8_t (*" + fn_arg[13:] + ")[64]"
-        #    assert var_is_arr_regex.match(fn_arg[8:])
-        #    rust_obj = "LDKSignature"
+        if fn_arg.startswith("LDKSignature"):
+            fn_arg = "uint8_t (*" + fn_arg[13:] + ")[64]"
+            assert var_is_arr_regex.match(fn_arg[8:])
+            rust_obj = "LDKSignature"
+            arr_access = "compact_form"
 
         if fn_arg.startswith("void"):
             java_ty = "void"
@@ -222,10 +223,14 @@ with open(sys.argv[1]) as in_h, open(sys.argv[2], "w") as out_java, open(sys.arg
                 arr_len = ret_arr_len
             assert(ty_info.c_ty == "jbyteArray")
             if ty_info.rust_obj is not None:
-                arg_conv = ty_info.rust_obj + " " + arr_name + "_ref;\n" + "(*_env)->GetByteArrayRegion (_env, " + arr_name + ", 0, " + arr_len + ", " + arr_name + "_ref." + ty_info.arr_access + ");"
+                arg_conv = ty_info.rust_obj + " " + arr_name + "_ref;\n"
+                arg_conv = arg_conv + "DO_ASSERT((*_env)->GetArrayLength (_env, " + arr_name + ") == " + arr_len + ");\n"
+                arg_conv = arg_conv + "(*_env)->GetByteArrayRegion (_env, " + arr_name + ", 0, " + arr_len + ", " + arr_name + "_ref." + ty_info.arr_access + ");"
                 arr_access = ("", "." + ty_info.arr_access)
             else:
-                arg_conv = "unsigned char " + arr_name + "_arr[" + arr_len + "];\n" + "(*_env)->GetByteArrayRegion (_env, " + arr_name + ", 0, " + arr_len + ", " + arr_name + "_arr);\n" + "unsigned char (*" + arr_name + "_ref)[" + arr_len + "] = &" + arr_name + "_arr;"
+                arg_conv = "unsigned char " + arr_name + "_arr[" + arr_len + "];\n"
+                arg_conv = arg_conv + "DO_ASSERT((*_env)->GetArrayLength (_env, " + arr_name + ") == " + arr_len + ");\n"
+                arg_conv = arg_conv + "(*_env)->GetByteArrayRegion (_env, " + arr_name + ", 0, " + arr_len + ", " + arr_name + "_arr);\n" + "unsigned char (*" + arr_name + "_ref)[" + arr_len + "] = &" + arr_name + "_arr;"
                 arr_access = ("*", "")
             return ConvInfo(ty_info = ty_info, arg_name = ty_info.var_name,
                 arg_conv = arg_conv,
@@ -714,6 +719,7 @@ with open(sys.argv[1]) as in_h, open(sys.argv[2], "w") as out_java, open(sys.arg
                     out_c.write(");\n");
                     if ret_ty_info.c_ty.endswith("Array"):
                         out_c.write("\t" + ret_ty_info.rust_obj + " ret;\n")
+                        out_c.write("\tDO_ASSERT((*env)->GetArrayLength(env, jret) == " + ret_ty_info.arr_len + ");\n")
                         out_c.write("\t(*env)->GetByteArrayRegion(env, jret, 0, " + ret_ty_info.arr_len + ", ret." + ret_ty_info.arr_access + ");\n")
                         out_c.write("\treturn ret;\n")
 
index a02f42266b17d92890a054e0496d089233f9ffbb..d0a39204719bc660e831cffaa4a420eea666403f 100644 (file)
@@ -45,8 +45,7 @@ public class bindings {
        public static native long LDKC2TupleTempl_ThirtyTwoBytes__CVecTempl_TxOut_new(byte[] a, long b);
        public static native long LDKC2TupleTempl_u64__u64_new(long a, long b);
        public static native VecOrSliceDef LDKCVecTempl_Signature_arr_info(long vec_ptr);
-       public static native long LDKCVecTempl_Signature_new(long[] elems);
-       public static native long LDKC2TupleTempl_Signature__CVecTempl_Signature_new(long a, long b);
+       public static native long LDKC2TupleTempl_Signature__CVecTempl_Signature_new(byte[] a, long b);
        public static native boolean LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_result_ok(long arg);
        public static native long LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_inner(long arg);
        public static native boolean LDKCResult_SignatureNoneZ_result_ok(long arg);
@@ -85,7 +84,7 @@ public class bindings {
        public static native long LDKC3TupleTempl_ChannelAnnouncement__ChannelUpdate__ChannelUpdate_new(long a, long b, long c);
        public static native boolean LDKCResult_NonePeerHandleErrorZ_result_ok(long arg);
        public static native long LDKCResult_NonePeerHandleErrorZ_get_inner(long arg);
-       public static native long LDKC2TupleTempl_HTLCOutputInCommitment__Signature_new(long a, long b);
+       public static native long LDKC2TupleTempl_HTLCOutputInCommitment__Signature_new(long a, byte[] b);
        public static class LDKSpendableOutputDescriptor {
                private LDKSpendableOutputDescriptor() {}
                public final static class StaticOutput extends LDKSpendableOutputDescriptor {
@@ -649,7 +648,7 @@ public class bindings {
        // extern const void (*CResult_SignatureNoneZ_free)(LDKCResult_SignatureNoneZ);
        public static native void CResult_SignatureNoneZ_free(long arg);
        // extern const LDKCResult_SignatureNoneZ (*CResult_SignatureNoneZ_ok)(LDKSignature);
-       public static native long CResult_SignatureNoneZ_ok(long arg);
+       public static native long CResult_SignatureNoneZ_ok(byte[] arg);
        // extern const LDKCResult_TxCreationKeysSecpErrorZ (*CResult_TxCreationKeysSecpErrorZ_err)(LDKSecp256k1Error);
        public static native long CResult_TxCreationKeysSecpErrorZ_err(LDKSecp256k1Error arg);
        // extern const void (*CResult_TxCreationKeysSecpErrorZ_free)(LDKCResult_TxCreationKeysSecpErrorZ);
@@ -743,7 +742,7 @@ public class bindings {
        // LDKC2Tuple_u64u64Z C2Tuple_u64u64Z_new(uint64_t a, uint64_t b);
        public static native long C2Tuple_u64u64Z_new(long a, long b);
        // LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(LDKSignature a, LDKCVec_SignatureZ b);
-       public static native long C2Tuple_SignatureCVec_SignatureZZ_new(long a, long b);
+       public static native long C2Tuple_SignatureCVec_SignatureZZ_new(byte[] a, long b);
        // LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void);
        public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err();
        // LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void);
@@ -759,7 +758,7 @@ public class bindings {
        // LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void);
        public static native long CResult_NonePeerHandleErrorZ_ok();
        // LDKC2Tuple_HTLCOutputInCommitmentSignatureZ C2Tuple_HTLCOutputInCommitmentSignatureZ_new(LDKHTLCOutputInCommitment a, LDKSignature b);
-       public static native long C2Tuple_HTLCOutputInCommitmentSignatureZ_new(long a, long b);
+       public static native long C2Tuple_HTLCOutputInCommitmentSignatureZ_new(long a, byte[] b);
        // void Event_free(LDKEvent this_ptr);
        public static native void Event_free(long this_ptr);
        // void MessageSendEvent_free(LDKMessageSendEvent this_ptr);
@@ -1325,11 +1324,11 @@ public class bindings {
        // void FundingCreated_set_funding_output_index(LDKFundingCreated *this_ptr, uint16_t val);
        public static native void FundingCreated_set_funding_output_index(long this_ptr, short val);
        // LDKSignature FundingCreated_get_signature(const LDKFundingCreated *this_ptr);
-       public static native long FundingCreated_get_signature(long this_ptr);
+       public static native byte[] FundingCreated_get_signature(long this_ptr);
        // void FundingCreated_set_signature(LDKFundingCreated *this_ptr, LDKSignature val);
-       public static native void FundingCreated_set_signature(long this_ptr, long val);
+       public static native void FundingCreated_set_signature(long this_ptr, byte[] val);
        // MUST_USE_RES LDKFundingCreated FundingCreated_new(LDKThirtyTwoBytes temporary_channel_id_arg, LDKThirtyTwoBytes funding_txid_arg, uint16_t funding_output_index_arg, LDKSignature signature_arg);
-       public static native long FundingCreated_new(byte[] temporary_channel_id_arg, byte[] funding_txid_arg, short funding_output_index_arg, long signature_arg);
+       public static native long FundingCreated_new(byte[] temporary_channel_id_arg, byte[] funding_txid_arg, short funding_output_index_arg, byte[] signature_arg);
        // void FundingSigned_free(LDKFundingSigned this_ptr);
        public static native void FundingSigned_free(long this_ptr);
        // LDKFundingSigned FundingSigned_clone(const LDKFundingSigned *orig);
@@ -1339,11 +1338,11 @@ public class bindings {
        // void FundingSigned_set_channel_id(LDKFundingSigned *this_ptr, LDKThirtyTwoBytes val);
        public static native void FundingSigned_set_channel_id(long this_ptr, byte[] val);
        // LDKSignature FundingSigned_get_signature(const LDKFundingSigned *this_ptr);
-       public static native long FundingSigned_get_signature(long this_ptr);
+       public static native byte[] FundingSigned_get_signature(long this_ptr);
        // void FundingSigned_set_signature(LDKFundingSigned *this_ptr, LDKSignature val);
-       public static native void FundingSigned_set_signature(long this_ptr, long val);
+       public static native void FundingSigned_set_signature(long this_ptr, byte[] val);
        // MUST_USE_RES LDKFundingSigned FundingSigned_new(LDKThirtyTwoBytes channel_id_arg, LDKSignature signature_arg);
-       public static native long FundingSigned_new(byte[] channel_id_arg, long signature_arg);
+       public static native long FundingSigned_new(byte[] channel_id_arg, byte[] signature_arg);
        // void FundingLocked_free(LDKFundingLocked this_ptr);
        public static native void FundingLocked_free(long this_ptr);
        // LDKFundingLocked FundingLocked_clone(const LDKFundingLocked *orig);
@@ -1385,11 +1384,11 @@ public class bindings {
        // void ClosingSigned_set_fee_satoshis(LDKClosingSigned *this_ptr, uint64_t val);
        public static native void ClosingSigned_set_fee_satoshis(long this_ptr, long val);
        // LDKSignature ClosingSigned_get_signature(const LDKClosingSigned *this_ptr);
-       public static native long ClosingSigned_get_signature(long this_ptr);
+       public static native byte[] ClosingSigned_get_signature(long this_ptr);
        // void ClosingSigned_set_signature(LDKClosingSigned *this_ptr, LDKSignature val);
-       public static native void ClosingSigned_set_signature(long this_ptr, long val);
+       public static native void ClosingSigned_set_signature(long this_ptr, byte[] val);
        // MUST_USE_RES LDKClosingSigned ClosingSigned_new(LDKThirtyTwoBytes channel_id_arg, uint64_t fee_satoshis_arg, LDKSignature signature_arg);
-       public static native long ClosingSigned_new(byte[] channel_id_arg, long fee_satoshis_arg, long signature_arg);
+       public static native long ClosingSigned_new(byte[] channel_id_arg, long fee_satoshis_arg, byte[] signature_arg);
        // void UpdateAddHTLC_free(LDKUpdateAddHTLC this_ptr);
        public static native void UpdateAddHTLC_free(long this_ptr);
        // LDKUpdateAddHTLC UpdateAddHTLC_clone(const LDKUpdateAddHTLC *orig);
@@ -1469,13 +1468,13 @@ public class bindings {
        // void CommitmentSigned_set_channel_id(LDKCommitmentSigned *this_ptr, LDKThirtyTwoBytes val);
        public static native void CommitmentSigned_set_channel_id(long this_ptr, byte[] val);
        // LDKSignature CommitmentSigned_get_signature(const LDKCommitmentSigned *this_ptr);
-       public static native long CommitmentSigned_get_signature(long this_ptr);
+       public static native byte[] CommitmentSigned_get_signature(long this_ptr);
        // void CommitmentSigned_set_signature(LDKCommitmentSigned *this_ptr, LDKSignature val);
-       public static native void CommitmentSigned_set_signature(long this_ptr, long val);
+       public static native void CommitmentSigned_set_signature(long this_ptr, byte[] val);
        // void CommitmentSigned_set_htlc_signatures(LDKCommitmentSigned *this_ptr, LDKCVec_SignatureZ val);
        public static native void CommitmentSigned_set_htlc_signatures(long this_ptr, long val);
        // MUST_USE_RES LDKCommitmentSigned CommitmentSigned_new(LDKThirtyTwoBytes channel_id_arg, LDKSignature signature_arg, LDKCVec_SignatureZ htlc_signatures_arg);
-       public static native long CommitmentSigned_new(byte[] channel_id_arg, long signature_arg, long htlc_signatures_arg);
+       public static native long CommitmentSigned_new(byte[] channel_id_arg, byte[] signature_arg, long htlc_signatures_arg);
        // void RevokeAndACK_free(LDKRevokeAndACK this_ptr);
        public static native void RevokeAndACK_free(long this_ptr);
        // LDKRevokeAndACK RevokeAndACK_clone(const LDKRevokeAndACK *orig);
@@ -1551,15 +1550,15 @@ public class bindings {
        // void AnnouncementSignatures_set_short_channel_id(LDKAnnouncementSignatures *this_ptr, uint64_t val);
        public static native void AnnouncementSignatures_set_short_channel_id(long this_ptr, long val);
        // LDKSignature AnnouncementSignatures_get_node_signature(const LDKAnnouncementSignatures *this_ptr);
-       public static native long AnnouncementSignatures_get_node_signature(long this_ptr);
+       public static native byte[] AnnouncementSignatures_get_node_signature(long this_ptr);
        // void AnnouncementSignatures_set_node_signature(LDKAnnouncementSignatures *this_ptr, LDKSignature val);
-       public static native void AnnouncementSignatures_set_node_signature(long this_ptr, long val);
+       public static native void AnnouncementSignatures_set_node_signature(long this_ptr, byte[] val);
        // LDKSignature AnnouncementSignatures_get_bitcoin_signature(const LDKAnnouncementSignatures *this_ptr);
-       public static native long AnnouncementSignatures_get_bitcoin_signature(long this_ptr);
+       public static native byte[] AnnouncementSignatures_get_bitcoin_signature(long this_ptr);
        // void AnnouncementSignatures_set_bitcoin_signature(LDKAnnouncementSignatures *this_ptr, LDKSignature val);
-       public static native void AnnouncementSignatures_set_bitcoin_signature(long this_ptr, long val);
+       public static native void AnnouncementSignatures_set_bitcoin_signature(long this_ptr, byte[] val);
        // MUST_USE_RES LDKAnnouncementSignatures AnnouncementSignatures_new(LDKThirtyTwoBytes channel_id_arg, uint64_t short_channel_id_arg, LDKSignature node_signature_arg, LDKSignature bitcoin_signature_arg);
-       public static native long AnnouncementSignatures_new(byte[] channel_id_arg, long short_channel_id_arg, long node_signature_arg, long bitcoin_signature_arg);
+       public static native long AnnouncementSignatures_new(byte[] channel_id_arg, long short_channel_id_arg, byte[] node_signature_arg, byte[] bitcoin_signature_arg);
        // void NetAddress_free(LDKNetAddress this_ptr);
        public static native void NetAddress_free(long this_ptr);
        // void UnsignedNodeAnnouncement_free(LDKUnsignedNodeAnnouncement this_ptr);
@@ -1593,15 +1592,15 @@ public class bindings {
        // LDKNodeAnnouncement NodeAnnouncement_clone(const LDKNodeAnnouncement *orig);
        public static native long NodeAnnouncement_clone(long orig);
        // LDKSignature NodeAnnouncement_get_signature(const LDKNodeAnnouncement *this_ptr);
-       public static native long NodeAnnouncement_get_signature(long this_ptr);
+       public static native byte[] NodeAnnouncement_get_signature(long this_ptr);
        // void NodeAnnouncement_set_signature(LDKNodeAnnouncement *this_ptr, LDKSignature val);
-       public static native void NodeAnnouncement_set_signature(long this_ptr, long val);
+       public static native void NodeAnnouncement_set_signature(long this_ptr, byte[] val);
        // LDKUnsignedNodeAnnouncement NodeAnnouncement_get_contents(const LDKNodeAnnouncement *this_ptr);
        public static native long NodeAnnouncement_get_contents(long this_ptr);
        // void NodeAnnouncement_set_contents(LDKNodeAnnouncement *this_ptr, LDKUnsignedNodeAnnouncement val);
        public static native void NodeAnnouncement_set_contents(long this_ptr, long val);
        // MUST_USE_RES LDKNodeAnnouncement NodeAnnouncement_new(LDKSignature signature_arg, LDKUnsignedNodeAnnouncement contents_arg);
-       public static native long NodeAnnouncement_new(long signature_arg, long contents_arg);
+       public static native long NodeAnnouncement_new(byte[] signature_arg, long contents_arg);
        // void UnsignedChannelAnnouncement_free(LDKUnsignedChannelAnnouncement this_ptr);
        public static native void UnsignedChannelAnnouncement_free(long this_ptr);
        // LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const LDKUnsignedChannelAnnouncement *orig);
@@ -1639,27 +1638,27 @@ public class bindings {
        // LDKChannelAnnouncement ChannelAnnouncement_clone(const LDKChannelAnnouncement *orig);
        public static native long ChannelAnnouncement_clone(long orig);
        // LDKSignature ChannelAnnouncement_get_node_signature_1(const LDKChannelAnnouncement *this_ptr);
-       public static native long ChannelAnnouncement_get_node_signature_1(long this_ptr);
+       public static native byte[] ChannelAnnouncement_get_node_signature_1(long this_ptr);
        // void ChannelAnnouncement_set_node_signature_1(LDKChannelAnnouncement *this_ptr, LDKSignature val);
-       public static native void ChannelAnnouncement_set_node_signature_1(long this_ptr, long val);
+       public static native void ChannelAnnouncement_set_node_signature_1(long this_ptr, byte[] val);
        // LDKSignature ChannelAnnouncement_get_node_signature_2(const LDKChannelAnnouncement *this_ptr);
-       public static native long ChannelAnnouncement_get_node_signature_2(long this_ptr);
+       public static native byte[] ChannelAnnouncement_get_node_signature_2(long this_ptr);
        // void ChannelAnnouncement_set_node_signature_2(LDKChannelAnnouncement *this_ptr, LDKSignature val);
-       public static native void ChannelAnnouncement_set_node_signature_2(long this_ptr, long val);
+       public static native void ChannelAnnouncement_set_node_signature_2(long this_ptr, byte[] val);
        // LDKSignature ChannelAnnouncement_get_bitcoin_signature_1(const LDKChannelAnnouncement *this_ptr);
-       public static native long ChannelAnnouncement_get_bitcoin_signature_1(long this_ptr);
+       public static native byte[] ChannelAnnouncement_get_bitcoin_signature_1(long this_ptr);
        // void ChannelAnnouncement_set_bitcoin_signature_1(LDKChannelAnnouncement *this_ptr, LDKSignature val);
-       public static native void ChannelAnnouncement_set_bitcoin_signature_1(long this_ptr, long val);
+       public static native void ChannelAnnouncement_set_bitcoin_signature_1(long this_ptr, byte[] val);
        // LDKSignature ChannelAnnouncement_get_bitcoin_signature_2(const LDKChannelAnnouncement *this_ptr);
-       public static native long ChannelAnnouncement_get_bitcoin_signature_2(long this_ptr);
+       public static native byte[] ChannelAnnouncement_get_bitcoin_signature_2(long this_ptr);
        // void ChannelAnnouncement_set_bitcoin_signature_2(LDKChannelAnnouncement *this_ptr, LDKSignature val);
-       public static native void ChannelAnnouncement_set_bitcoin_signature_2(long this_ptr, long val);
+       public static native void ChannelAnnouncement_set_bitcoin_signature_2(long this_ptr, byte[] val);
        // LDKUnsignedChannelAnnouncement ChannelAnnouncement_get_contents(const LDKChannelAnnouncement *this_ptr);
        public static native long ChannelAnnouncement_get_contents(long this_ptr);
        // void ChannelAnnouncement_set_contents(LDKChannelAnnouncement *this_ptr, LDKUnsignedChannelAnnouncement val);
        public static native void ChannelAnnouncement_set_contents(long this_ptr, long val);
        // MUST_USE_RES LDKChannelAnnouncement ChannelAnnouncement_new(LDKSignature node_signature_1_arg, LDKSignature node_signature_2_arg, LDKSignature bitcoin_signature_1_arg, LDKSignature bitcoin_signature_2_arg, LDKUnsignedChannelAnnouncement contents_arg);
-       public static native long ChannelAnnouncement_new(long node_signature_1_arg, long node_signature_2_arg, long bitcoin_signature_1_arg, long bitcoin_signature_2_arg, long contents_arg);
+       public static native long ChannelAnnouncement_new(byte[] node_signature_1_arg, byte[] node_signature_2_arg, byte[] bitcoin_signature_1_arg, byte[] bitcoin_signature_2_arg, long contents_arg);
        // void UnsignedChannelUpdate_free(LDKUnsignedChannelUpdate this_ptr);
        public static native void UnsignedChannelUpdate_free(long this_ptr);
        // LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const LDKUnsignedChannelUpdate *orig);
@@ -1701,15 +1700,15 @@ public class bindings {
        // LDKChannelUpdate ChannelUpdate_clone(const LDKChannelUpdate *orig);
        public static native long ChannelUpdate_clone(long orig);
        // LDKSignature ChannelUpdate_get_signature(const LDKChannelUpdate *this_ptr);
-       public static native long ChannelUpdate_get_signature(long this_ptr);
+       public static native byte[] ChannelUpdate_get_signature(long this_ptr);
        // void ChannelUpdate_set_signature(LDKChannelUpdate *this_ptr, LDKSignature val);
-       public static native void ChannelUpdate_set_signature(long this_ptr, long val);
+       public static native void ChannelUpdate_set_signature(long this_ptr, byte[] val);
        // LDKUnsignedChannelUpdate ChannelUpdate_get_contents(const LDKChannelUpdate *this_ptr);
        public static native long ChannelUpdate_get_contents(long this_ptr);
        // void ChannelUpdate_set_contents(LDKChannelUpdate *this_ptr, LDKUnsignedChannelUpdate val);
        public static native void ChannelUpdate_set_contents(long this_ptr, long val);
        // MUST_USE_RES LDKChannelUpdate ChannelUpdate_new(LDKSignature signature_arg, LDKUnsignedChannelUpdate contents_arg);
-       public static native long ChannelUpdate_new(long signature_arg, long contents_arg);
+       public static native long ChannelUpdate_new(byte[] signature_arg, long contents_arg);
        // void QueryChannelRange_free(LDKQueryChannelRange this_ptr);
        public static native void QueryChannelRange_free(long this_ptr);
        // LDKQueryChannelRange QueryChannelRange_clone(const LDKQueryChannelRange *orig);
@@ -2125,9 +2124,9 @@ public class bindings {
        // void HolderCommitmentTransaction_set_unsigned_tx(LDKHolderCommitmentTransaction *this_ptr, LDKTransaction val);
        public static native void HolderCommitmentTransaction_set_unsigned_tx(long this_ptr, long val);
        // LDKSignature HolderCommitmentTransaction_get_counterparty_sig(const LDKHolderCommitmentTransaction *this_ptr);
-       public static native long HolderCommitmentTransaction_get_counterparty_sig(long this_ptr);
+       public static native byte[] HolderCommitmentTransaction_get_counterparty_sig(long this_ptr);
        // void HolderCommitmentTransaction_set_counterparty_sig(LDKHolderCommitmentTransaction *this_ptr, LDKSignature val);
-       public static native void HolderCommitmentTransaction_set_counterparty_sig(long this_ptr, long val);
+       public static native void HolderCommitmentTransaction_set_counterparty_sig(long this_ptr, byte[] val);
        // uint32_t HolderCommitmentTransaction_get_feerate_per_kw(const LDKHolderCommitmentTransaction *this_ptr);
        public static native int HolderCommitmentTransaction_get_feerate_per_kw(long this_ptr);
        // void HolderCommitmentTransaction_set_feerate_per_kw(LDKHolderCommitmentTransaction *this_ptr, uint32_t val);
@@ -2135,13 +2134,13 @@ public class bindings {
        // void HolderCommitmentTransaction_set_per_htlc(LDKHolderCommitmentTransaction *this_ptr, LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ val);
        public static native void HolderCommitmentTransaction_set_per_htlc(long this_ptr, long val);
        // MUST_USE_RES LDKHolderCommitmentTransaction HolderCommitmentTransaction_new_missing_holder_sig(LDKTransaction unsigned_tx, LDKSignature counterparty_sig, LDKPublicKey holder_funding_key, LDKPublicKey counterparty_funding_key, LDKTxCreationKeys keys, uint32_t feerate_per_kw, LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ htlc_data);
-       public static native long HolderCommitmentTransaction_new_missing_holder_sig(long unsigned_tx, long counterparty_sig, byte[] holder_funding_key, byte[] counterparty_funding_key, long keys, int feerate_per_kw, long htlc_data);
+       public static native long HolderCommitmentTransaction_new_missing_holder_sig(long unsigned_tx, byte[] counterparty_sig, byte[] holder_funding_key, byte[] counterparty_funding_key, long keys, int feerate_per_kw, long htlc_data);
        // MUST_USE_RES LDKTxCreationKeys HolderCommitmentTransaction_trust_key_derivation(const LDKHolderCommitmentTransaction *this_arg);
        public static native long HolderCommitmentTransaction_trust_key_derivation(long this_arg);
        // MUST_USE_RES LDKThirtyTwoBytes HolderCommitmentTransaction_txid(const LDKHolderCommitmentTransaction *this_arg);
        public static native byte[] HolderCommitmentTransaction_txid(long this_arg);
        // MUST_USE_RES LDKSignature HolderCommitmentTransaction_get_holder_sig(const LDKHolderCommitmentTransaction *this_arg, const uint8_t (*funding_key)[32], LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
-       public static native long HolderCommitmentTransaction_get_holder_sig(long this_arg, byte[] funding_key, long funding_redeemscript, long channel_value_satoshis);
+       public static native byte[] HolderCommitmentTransaction_get_holder_sig(long this_arg, byte[] funding_key, long funding_redeemscript, long channel_value_satoshis);
        // MUST_USE_RES LDKCResult_CVec_SignatureZNoneZ HolderCommitmentTransaction_get_htlc_sigs(const LDKHolderCommitmentTransaction *this_arg, const uint8_t (*htlc_base_key)[32], uint16_t counterparty_selected_contest_delay);
        public static native long HolderCommitmentTransaction_get_htlc_sigs(long this_arg, byte[] htlc_base_key, short counterparty_selected_contest_delay);
        // LDKCVec_u8Z HolderCommitmentTransaction_write(const LDKHolderCommitmentTransaction *obj);
index 8ecbf3f341c819d04c770c7d07f9f72eeeb3eb18..174763b5cfebac2d898025766e3859dceb7a2f77 100644 (file)
@@ -37,11 +37,32 @@ public class AnnouncementSignatures extends CommonBase {
                this.ptrs_to.add(this_ptr);
        }
 
-       // Skipped AnnouncementSignatures_get_node_signature
-       // Skipped AnnouncementSignatures_set_node_signature
-       // Skipped AnnouncementSignatures_get_bitcoin_signature
-       // Skipped AnnouncementSignatures_set_bitcoin_signature
-       // Skipped AnnouncementSignatures_new
+       public byte[] get_node_signature(AnnouncementSignatures this_ptr) {
+               byte[] ret = bindings.AnnouncementSignatures_get_node_signature(this_ptr.ptr & ~1);
+               this.ptrs_to.add(this_ptr);
+               return ret;
+       }
+
+       public void set_node_signature(AnnouncementSignatures this_ptr, byte[] val) {
+               bindings.AnnouncementSignatures_set_node_signature(this_ptr.ptr & ~1, val);
+               this.ptrs_to.add(this_ptr);
+       }
+
+       public byte[] get_bitcoin_signature(AnnouncementSignatures this_ptr) {
+               byte[] ret = bindings.AnnouncementSignatures_get_bitcoin_signature(this_ptr.ptr & ~1);
+               this.ptrs_to.add(this_ptr);
+               return ret;
+       }
+
+       public void set_bitcoin_signature(AnnouncementSignatures this_ptr, byte[] val) {
+               bindings.AnnouncementSignatures_set_bitcoin_signature(this_ptr.ptr & ~1, val);
+               this.ptrs_to.add(this_ptr);
+       }
+
+       public AnnouncementSignatures(byte[] channel_id_arg, long short_channel_id_arg, byte[] node_signature_arg, byte[] bitcoin_signature_arg) {
+               super(bindings.AnnouncementSignatures_new(channel_id_arg, short_channel_id_arg, node_signature_arg, bitcoin_signature_arg));
+       }
+
        // Skipped AnnouncementSignatures_write
        // Skipped AnnouncementSignatures_read
 }
index 7ed2abd9064479bdc82fdea1575fbbae40d23de4..f3b04916a6bdd23b0af8c368718ce2be1a6b63b0 100644 (file)
@@ -15,14 +15,50 @@ public class ChannelAnnouncement extends CommonBase {
                this.ptrs_to.add(orig);
        }
 
-       // Skipped ChannelAnnouncement_get_node_signature_1
-       // Skipped ChannelAnnouncement_set_node_signature_1
-       // Skipped ChannelAnnouncement_get_node_signature_2
-       // Skipped ChannelAnnouncement_set_node_signature_2
-       // Skipped ChannelAnnouncement_get_bitcoin_signature_1
-       // Skipped ChannelAnnouncement_set_bitcoin_signature_1
-       // Skipped ChannelAnnouncement_get_bitcoin_signature_2
-       // Skipped ChannelAnnouncement_set_bitcoin_signature_2
+       public byte[] get_node_signature_1(ChannelAnnouncement this_ptr) {
+               byte[] ret = bindings.ChannelAnnouncement_get_node_signature_1(this_ptr.ptr & ~1);
+               this.ptrs_to.add(this_ptr);
+               return ret;
+       }
+
+       public void set_node_signature_1(ChannelAnnouncement this_ptr, byte[] val) {
+               bindings.ChannelAnnouncement_set_node_signature_1(this_ptr.ptr & ~1, val);
+               this.ptrs_to.add(this_ptr);
+       }
+
+       public byte[] get_node_signature_2(ChannelAnnouncement this_ptr) {
+               byte[] ret = bindings.ChannelAnnouncement_get_node_signature_2(this_ptr.ptr & ~1);
+               this.ptrs_to.add(this_ptr);
+               return ret;
+       }
+
+       public void set_node_signature_2(ChannelAnnouncement this_ptr, byte[] val) {
+               bindings.ChannelAnnouncement_set_node_signature_2(this_ptr.ptr & ~1, val);
+               this.ptrs_to.add(this_ptr);
+       }
+
+       public byte[] get_bitcoin_signature_1(ChannelAnnouncement this_ptr) {
+               byte[] ret = bindings.ChannelAnnouncement_get_bitcoin_signature_1(this_ptr.ptr & ~1);
+               this.ptrs_to.add(this_ptr);
+               return ret;
+       }
+
+       public void set_bitcoin_signature_1(ChannelAnnouncement this_ptr, byte[] val) {
+               bindings.ChannelAnnouncement_set_bitcoin_signature_1(this_ptr.ptr & ~1, val);
+               this.ptrs_to.add(this_ptr);
+       }
+
+       public byte[] get_bitcoin_signature_2(ChannelAnnouncement this_ptr) {
+               byte[] ret = bindings.ChannelAnnouncement_get_bitcoin_signature_2(this_ptr.ptr & ~1);
+               this.ptrs_to.add(this_ptr);
+               return ret;
+       }
+
+       public void set_bitcoin_signature_2(ChannelAnnouncement this_ptr, byte[] val) {
+               bindings.ChannelAnnouncement_set_bitcoin_signature_2(this_ptr.ptr & ~1, val);
+               this.ptrs_to.add(this_ptr);
+       }
+
        public UnsignedChannelAnnouncement get_contents(ChannelAnnouncement this_ptr) {
                UnsignedChannelAnnouncement ret = new UnsignedChannelAnnouncement(null, bindings.ChannelAnnouncement_get_contents(this_ptr.ptr & ~1));
                this.ptrs_to.add(this_ptr);
@@ -35,7 +71,11 @@ public class ChannelAnnouncement extends CommonBase {
                this.ptrs_to.add(val);
        }
 
-       // Skipped ChannelAnnouncement_new
+       public ChannelAnnouncement(byte[] node_signature_1_arg, byte[] node_signature_2_arg, byte[] bitcoin_signature_1_arg, byte[] bitcoin_signature_2_arg, UnsignedChannelAnnouncement contents_arg) {
+               super(bindings.ChannelAnnouncement_new(node_signature_1_arg, node_signature_2_arg, bitcoin_signature_1_arg, bitcoin_signature_2_arg, contents_arg.ptr & ~1));
+               this.ptrs_to.add(contents_arg);
+       }
+
        // Skipped ChannelAnnouncement_write
        // Skipped ChannelAnnouncement_read
 }
index 8f5d60e7480cca74dc78b85c7fb8ab2c1beca16e..6ad541d9ad485584d263c0cc266ed551fed3285c 100644 (file)
@@ -15,8 +15,17 @@ public class ChannelUpdate extends CommonBase {
                this.ptrs_to.add(orig);
        }
 
-       // Skipped ChannelUpdate_get_signature
-       // Skipped ChannelUpdate_set_signature
+       public byte[] get_signature(ChannelUpdate this_ptr) {
+               byte[] ret = bindings.ChannelUpdate_get_signature(this_ptr.ptr & ~1);
+               this.ptrs_to.add(this_ptr);
+               return ret;
+       }
+
+       public void set_signature(ChannelUpdate this_ptr, byte[] val) {
+               bindings.ChannelUpdate_set_signature(this_ptr.ptr & ~1, val);
+               this.ptrs_to.add(this_ptr);
+       }
+
        public UnsignedChannelUpdate get_contents(ChannelUpdate this_ptr) {
                UnsignedChannelUpdate ret = new UnsignedChannelUpdate(null, bindings.ChannelUpdate_get_contents(this_ptr.ptr & ~1));
                this.ptrs_to.add(this_ptr);
@@ -29,7 +38,11 @@ public class ChannelUpdate extends CommonBase {
                this.ptrs_to.add(val);
        }
 
-       // Skipped ChannelUpdate_new
+       public ChannelUpdate(byte[] signature_arg, UnsignedChannelUpdate contents_arg) {
+               super(bindings.ChannelUpdate_new(signature_arg, contents_arg.ptr & ~1));
+               this.ptrs_to.add(contents_arg);
+       }
+
        // Skipped ChannelUpdate_write
        // Skipped ChannelUpdate_read
 }
index 4b2e845412cead7bff490f731d68ad1bd4fb3aaf..573ba289fc9e7fc045f7a980ab447cf6d9d4e82c 100644 (file)
@@ -37,9 +37,21 @@ public class ClosingSigned extends CommonBase {
                this.ptrs_to.add(this_ptr);
        }
 
-       // Skipped ClosingSigned_get_signature
-       // Skipped ClosingSigned_set_signature
-       // Skipped ClosingSigned_new
+       public byte[] get_signature(ClosingSigned this_ptr) {
+               byte[] ret = bindings.ClosingSigned_get_signature(this_ptr.ptr & ~1);
+               this.ptrs_to.add(this_ptr);
+               return ret;
+       }
+
+       public void set_signature(ClosingSigned this_ptr, byte[] val) {
+               bindings.ClosingSigned_set_signature(this_ptr.ptr & ~1, val);
+               this.ptrs_to.add(this_ptr);
+       }
+
+       public ClosingSigned(byte[] channel_id_arg, long fee_satoshis_arg, byte[] signature_arg) {
+               super(bindings.ClosingSigned_new(channel_id_arg, fee_satoshis_arg, signature_arg));
+       }
+
        // Skipped ClosingSigned_write
        // Skipped ClosingSigned_read
 }
index 1ac5af6085fcffd7e85358a52d5ae303bf4df8be..8ef67b84686d96f01459c2e5ca9bb5424a22b25b 100644 (file)
@@ -26,8 +26,17 @@ public class CommitmentSigned extends CommonBase {
                this.ptrs_to.add(this_ptr);
        }
 
-       // Skipped CommitmentSigned_get_signature
-       // Skipped CommitmentSigned_set_signature
+       public byte[] get_signature(CommitmentSigned this_ptr) {
+               byte[] ret = bindings.CommitmentSigned_get_signature(this_ptr.ptr & ~1);
+               this.ptrs_to.add(this_ptr);
+               return ret;
+       }
+
+       public void set_signature(CommitmentSigned this_ptr, byte[] val) {
+               bindings.CommitmentSigned_set_signature(this_ptr.ptr & ~1, val);
+               this.ptrs_to.add(this_ptr);
+       }
+
        // Skipped CommitmentSigned_set_htlc_signatures
        // Skipped CommitmentSigned_new
        // Skipped CommitmentSigned_write
index 0101c77f71b6a579a311ffede4f6b712dd0225ea..c4a1cf2d1097cc6dd70ab060ec1b4c7ce649f656 100644 (file)
@@ -48,9 +48,21 @@ public class FundingCreated extends CommonBase {
                this.ptrs_to.add(this_ptr);
        }
 
-       // Skipped FundingCreated_get_signature
-       // Skipped FundingCreated_set_signature
-       // Skipped FundingCreated_new
+       public byte[] get_signature(FundingCreated this_ptr) {
+               byte[] ret = bindings.FundingCreated_get_signature(this_ptr.ptr & ~1);
+               this.ptrs_to.add(this_ptr);
+               return ret;
+       }
+
+       public void set_signature(FundingCreated this_ptr, byte[] val) {
+               bindings.FundingCreated_set_signature(this_ptr.ptr & ~1, val);
+               this.ptrs_to.add(this_ptr);
+       }
+
+       public FundingCreated(byte[] temporary_channel_id_arg, byte[] funding_txid_arg, short funding_output_index_arg, byte[] signature_arg) {
+               super(bindings.FundingCreated_new(temporary_channel_id_arg, funding_txid_arg, funding_output_index_arg, signature_arg));
+       }
+
        // Skipped FundingCreated_write
        // Skipped FundingCreated_read
 }
index 468c0265c9147ccba304cc69c5b0b29cf3f2ac44..1d1fef6179fe2bb0170c7a4e07750b9d99d70fc2 100644 (file)
@@ -26,9 +26,21 @@ public class FundingSigned extends CommonBase {
                this.ptrs_to.add(this_ptr);
        }
 
-       // Skipped FundingSigned_get_signature
-       // Skipped FundingSigned_set_signature
-       // Skipped FundingSigned_new
+       public byte[] get_signature(FundingSigned this_ptr) {
+               byte[] ret = bindings.FundingSigned_get_signature(this_ptr.ptr & ~1);
+               this.ptrs_to.add(this_ptr);
+               return ret;
+       }
+
+       public void set_signature(FundingSigned this_ptr, byte[] val) {
+               bindings.FundingSigned_set_signature(this_ptr.ptr & ~1, val);
+               this.ptrs_to.add(this_ptr);
+       }
+
+       public FundingSigned(byte[] channel_id_arg, byte[] signature_arg) {
+               super(bindings.FundingSigned_new(channel_id_arg, signature_arg));
+       }
+
        // Skipped FundingSigned_write
        // Skipped FundingSigned_read
 }
index 78fe05c05a2b246d20413e7b6631356847629683..eb83c6a4ff9819776652a02f6a5ee03157fb3315 100644 (file)
@@ -17,8 +17,17 @@ public class HolderCommitmentTransaction extends CommonBase {
 
        // Skipped HolderCommitmentTransaction_get_unsigned_tx
        // Skipped HolderCommitmentTransaction_set_unsigned_tx
-       // Skipped HolderCommitmentTransaction_get_counterparty_sig
-       // Skipped HolderCommitmentTransaction_set_counterparty_sig
+       public byte[] get_counterparty_sig(HolderCommitmentTransaction this_ptr) {
+               byte[] ret = bindings.HolderCommitmentTransaction_get_counterparty_sig(this_ptr.ptr & ~1);
+               this.ptrs_to.add(this_ptr);
+               return ret;
+       }
+
+       public void set_counterparty_sig(HolderCommitmentTransaction this_ptr, byte[] val) {
+               bindings.HolderCommitmentTransaction_set_counterparty_sig(this_ptr.ptr & ~1, val);
+               this.ptrs_to.add(this_ptr);
+       }
+
        public int get_feerate_per_kw(HolderCommitmentTransaction this_ptr) {
                int ret = bindings.HolderCommitmentTransaction_get_feerate_per_kw(this_ptr.ptr & ~1);
                this.ptrs_to.add(this_ptr);
index 46123a79c933bce227d6e5deb69e80403f1c5b9f..034cdd9f9a88ad3416887d940205463a5bef1479 100644 (file)
@@ -15,8 +15,17 @@ public class NodeAnnouncement extends CommonBase {
                this.ptrs_to.add(orig);
        }
 
-       // Skipped NodeAnnouncement_get_signature
-       // Skipped NodeAnnouncement_set_signature
+       public byte[] get_signature(NodeAnnouncement this_ptr) {
+               byte[] ret = bindings.NodeAnnouncement_get_signature(this_ptr.ptr & ~1);
+               this.ptrs_to.add(this_ptr);
+               return ret;
+       }
+
+       public void set_signature(NodeAnnouncement this_ptr, byte[] val) {
+               bindings.NodeAnnouncement_set_signature(this_ptr.ptr & ~1, val);
+               this.ptrs_to.add(this_ptr);
+       }
+
        public UnsignedNodeAnnouncement get_contents(NodeAnnouncement this_ptr) {
                UnsignedNodeAnnouncement ret = new UnsignedNodeAnnouncement(null, bindings.NodeAnnouncement_get_contents(this_ptr.ptr & ~1));
                this.ptrs_to.add(this_ptr);
@@ -29,7 +38,11 @@ public class NodeAnnouncement extends CommonBase {
                this.ptrs_to.add(val);
        }
 
-       // Skipped NodeAnnouncement_new
+       public NodeAnnouncement(byte[] signature_arg, UnsignedNodeAnnouncement contents_arg) {
+               super(bindings.NodeAnnouncement_new(signature_arg, contents_arg.ptr & ~1));
+               this.ptrs_to.add(contents_arg);
+       }
+
        // Skipped NodeAnnouncement_write
        // Skipped NodeAnnouncement_read
 }
index f3c8a5531c73620b640aba90d212f5b69bd2b1c2..061bec45f43f9beaf73aeaa1dd38baba514b660f 100644 (file)
@@ -504,6 +504,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVecTempl_1TxOut_1new(JNIE
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2TupleTempl_1ThirtyTwoBytes_1_1CVecTempl_1TxOut_1new(JNIEnv *_env, jclass _b, jbyteArray a, jlong b) {
        LDKC2TupleTempl_ThirtyTwoBytes__CVecTempl_TxOut* ret = MALLOC(sizeof(LDKC2TupleTempl_ThirtyTwoBytes__CVecTempl_TxOut), "LDKC2TupleTempl_ThirtyTwoBytes__CVecTempl_TxOut");
        LDKThirtyTwoBytes a_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, a) == 32);
        (*_env)->GetByteArrayRegion (_env, a, 0, 32, a_ref.data);
        ret->a = a_ref;
        LDKCVecTempl_TxOut b_conv = *(LDKCVecTempl_TxOut*)b;
@@ -521,29 +522,12 @@ JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKCVecTempl_1Signature_1ar
        LDKCVecTempl_Signature *vec = (LDKCVecTempl_Signature*)ptr;
        return (*env)->NewObject(env, slicedef_cls, slicedef_meth, (long)vec->data, (long)vec->datalen, sizeof(LDKSignature));
 }
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVecTempl_1Signature_1new(JNIEnv *env, jclass _b, jlongArray elems){
-       LDKCVecTempl_Signature *ret = MALLOC(sizeof(LDKCVecTempl_Signature), "LDKCVecTempl_Signature");
-       ret->datalen = (*env)->GetArrayLength(env, elems);
-       if (ret->datalen == 0) {
-               ret->data = NULL;
-       } else {
-               ret->data = MALLOC(sizeof(LDKSignature) * ret->datalen, "LDKCVecTempl_Signature Data");
-               jlong *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL);
-               for (size_t i = 0; i < ret->datalen; i++) {
-                       jlong arr_elem = java_elems[i];
-                       LDKSignature arr_elem_conv = *(LDKSignature*)arr_elem;
-                       FREE((void*)arr_elem);
-                       ret->data[i] = arr_elem_conv;
-               }
-               (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0);
-       }
-       return (long)ret;
-}
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2TupleTempl_1Signature_1_1CVecTempl_1Signature_1new(JNIEnv *_env, jclass _b, jlong a, jlong b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2TupleTempl_1Signature_1_1CVecTempl_1Signature_1new(JNIEnv *_env, jclass _b, jbyteArray a, jlong b) {
        LDKC2TupleTempl_Signature__CVecTempl_Signature* ret = MALLOC(sizeof(LDKC2TupleTempl_Signature__CVecTempl_Signature), "LDKC2TupleTempl_Signature__CVecTempl_Signature");
-       LDKSignature a_conv = *(LDKSignature*)a;
-       FREE((void*)a);
-       ret->a = a_conv;
+       LDKSignature a_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, a) == 64);
+       (*_env)->GetByteArrayRegion (_env, a, 0, 64, a_ref.compact_form);
+       ret->a = a_ref;
        LDKCVecTempl_Signature b_conv = *(LDKCVecTempl_Signature*)b;
        FREE((void*)b);
        ret->b = b_conv;
@@ -699,7 +683,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErr
                return (long)(val->contents.err->inner) | (val->contents.err->is_owned ? 1 : 0);
        }
 }
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2TupleTempl_1HTLCOutputInCommitment_1_1Signature_1new(JNIEnv *_env, jclass _b, jlong a, jlong b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2TupleTempl_1HTLCOutputInCommitment_1_1Signature_1new(JNIEnv *_env, jclass _b, jlong a, jbyteArray b) {
        LDKC2TupleTempl_HTLCOutputInCommitment__Signature* ret = MALLOC(sizeof(LDKC2TupleTempl_HTLCOutputInCommitment__Signature), "LDKC2TupleTempl_HTLCOutputInCommitment__Signature");
        LDKHTLCOutputInCommitment a_conv;
        a_conv.inner = (void*)(a & (~1));
@@ -707,9 +691,10 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2TupleTempl_1HTLCOutputIn
        if (a_conv.inner != NULL)
                a_conv = HTLCOutputInCommitment_clone(&a_conv);
        ret->a = a_conv;
-       LDKSignature b_conv = *(LDKSignature*)b;
-       FREE((void*)b);
-       ret->b = b_conv;
+       LDKSignature b_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, b) == 64);
+       (*_env)->GetByteArrayRegion (_env, b, 0, 64, b_ref.compact_form);
+       ret->b = b_ref;
        return (long)ret;
 }
 static jclass LDKSpendableOutputDescriptor_StaticOutput_class = NULL;
@@ -1645,6 +1630,7 @@ JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKAccess_1get_1obj_1from_1
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Access_1call_1get_1utxo(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray genesis_hash, jlong short_channel_id) {
        LDKAccess* this_arg_conv = (LDKAccess*)this_arg;
        unsigned char genesis_hash_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, genesis_hash) == 32);
        (*_env)->GetByteArrayRegion (_env, genesis_hash, 0, 32, genesis_hash_arr);
        unsigned char (*genesis_hash_ref)[32] = &genesis_hash_arr;
        LDKCResult_TxOutAccessErrorZ* ret = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ");
@@ -1708,6 +1694,7 @@ LDKPublicKey get_per_commitment_point_jcall(const void* this_arg, uint64_t idx)
        DO_ASSERT(obj != NULL);
        jbyteArray jret = (*env)->CallObjectMethod(env, obj, j_calls->get_per_commitment_point_meth, idx);
        LDKPublicKey ret;
+       DO_ASSERT((*env)->GetArrayLength(env, jret) == 33);
        (*env)->GetByteArrayRegion(env, jret, 0, 33, ret.compressed_form);
        return ret;
 }
@@ -1719,6 +1706,7 @@ LDKThirtyTwoBytes release_commitment_secret_jcall(const void* this_arg, uint64_t
        DO_ASSERT(obj != NULL);
        jbyteArray jret = (*env)->CallObjectMethod(env, obj, j_calls->release_commitment_secret_meth, idx);
        LDKThirtyTwoBytes ret;
+       DO_ASSERT((*env)->GetArrayLength(env, jret) == 32);
        (*env)->GetByteArrayRegion(env, jret, 0, 32, ret.data);
        return ret;
 }
@@ -1959,6 +1947,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1call_1sign_1just
        LDKTransaction justice_tx_conv = *(LDKTransaction*)justice_tx;
        FREE((void*)justice_tx);
        unsigned char per_commitment_key_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, per_commitment_key) == 32);
        (*_env)->GetByteArrayRegion (_env, per_commitment_key, 0, 32, per_commitment_key_arr);
        unsigned char (*per_commitment_key_ref)[32] = &per_commitment_key_arr;
        LDKHTLCOutputInCommitment htlc_conv;
@@ -1974,6 +1963,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1call_1sign_1coun
        LDKTransaction htlc_tx_conv = *(LDKTransaction*)htlc_tx;
        FREE((void*)htlc_tx);
        LDKPublicKey per_commitment_point_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, per_commitment_point) == 33);
        (*_env)->GetByteArrayRegion (_env, per_commitment_point, 0, 33, per_commitment_point_ref.compressed_form);
        LDKHTLCOutputInCommitment htlc_conv;
        htlc_conv.inner = (void*)(htlc & (~1));
@@ -2277,6 +2267,7 @@ JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKFilter_1get_1obj_1from_1
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Filter_1call_1register_1tx(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray txid, jlong script_pubkey) {
        LDKFilter* this_arg_conv = (LDKFilter*)this_arg;
        unsigned char txid_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, txid) == 32);
        (*_env)->GetByteArrayRegion (_env, txid, 0, 32, txid_arr);
        unsigned char (*txid_ref)[32] = &txid_arr;
        LDKu8slice script_pubkey_conv = *(LDKu8slice*)script_pubkey;
@@ -2501,6 +2492,7 @@ LDKSecretKey get_node_secret_jcall(const void* this_arg) {
        DO_ASSERT(obj != NULL);
        jbyteArray jret = (*env)->CallObjectMethod(env, obj, j_calls->get_node_secret_meth);
        LDKSecretKey ret;
+       DO_ASSERT((*env)->GetArrayLength(env, jret) == 32);
        (*env)->GetByteArrayRegion(env, jret, 0, 32, ret.bytes);
        return ret;
 }
@@ -2523,6 +2515,7 @@ LDKPublicKey get_shutdown_pubkey_jcall(const void* this_arg) {
        DO_ASSERT(obj != NULL);
        jbyteArray jret = (*env)->CallObjectMethod(env, obj, j_calls->get_shutdown_pubkey_meth);
        LDKPublicKey ret;
+       DO_ASSERT((*env)->GetArrayLength(env, jret) == 33);
        (*env)->GetByteArrayRegion(env, jret, 0, 33, ret.compressed_form);
        return ret;
 }
@@ -2545,6 +2538,7 @@ LDKThirtyTwoBytes get_secure_random_bytes_jcall(const void* this_arg) {
        DO_ASSERT(obj != NULL);
        jbyteArray jret = (*env)->CallObjectMethod(env, obj, j_calls->get_secure_random_bytes_meth);
        LDKThirtyTwoBytes ret;
+       DO_ASSERT((*env)->GetArrayLength(env, jret) == 32);
        (*env)->GetByteArrayRegion(env, jret, 0, 32, ret.data);
        return ret;
 }
@@ -3075,6 +3069,7 @@ JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKChannelMessageHandler_1g
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1open_1channel(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong their_features, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKInitFeatures their_features_conv;
        their_features_conv.inner = (void*)(their_features & (~1));
@@ -3088,6 +3083,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1accept_1channel(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong their_features, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKInitFeatures their_features_conv;
        their_features_conv.inner = (void*)(their_features & (~1));
@@ -3101,6 +3097,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1funding_1created(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKFundingCreated msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3111,6 +3108,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1funding_1signed(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKFundingSigned msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3121,6 +3119,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1funding_1locked(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKFundingLocked msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3131,6 +3130,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1shutdown(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKShutdown msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3141,6 +3141,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1closing_1signed(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKClosingSigned msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3151,6 +3152,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1update_1add_1htlc(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKUpdateAddHTLC msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3161,6 +3163,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1update_1fulfill_1htlc(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKUpdateFulfillHTLC msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3171,6 +3174,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1update_1fail_1htlc(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKUpdateFailHTLC msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3181,6 +3185,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1update_1fail_1malformed_1htlc(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKUpdateFailMalformedHTLC msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3191,6 +3196,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1commitment_1signed(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKCommitmentSigned msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3201,6 +3207,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1revoke_1and_1ack(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKRevokeAndACK msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3211,6 +3218,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1update_1fee(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKUpdateFee msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3221,6 +3229,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1announcement_1signatures(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKAnnouncementSignatures msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3231,6 +3240,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1peer_1disconnected(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jboolean no_connection_possible) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        return (this_arg_conv->peer_disconnected)(this_arg_conv->this_arg, their_node_id_ref, no_connection_possible);
 }
@@ -3238,6 +3248,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1p
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1peer_1connected(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKInit msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3248,6 +3259,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1p
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1channel_1reestablish(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKChannelReestablish msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3258,6 +3270,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1h
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1call_1handle_1error(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray their_node_id, jlong msg) {
        LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg;
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKErrorMessage msg_conv;
        msg_conv.inner = (void*)(msg & (~1));
@@ -3699,6 +3712,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1call_1
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1call_1get_1next_1node_1announcements(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray starting_point, jbyte batch_amount) {
        LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg;
        LDKPublicKey starting_point_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, starting_point) == 33);
        (*_env)->GetByteArrayRegion (_env, starting_point, 0, 33, starting_point_ref.compressed_form);
        LDKCVec_NodeAnnouncementZ* ret = MALLOC(sizeof(LDKCVec_NodeAnnouncementZ), "LDKCVec_NodeAnnouncementZ");
        *ret = (this_arg_conv->get_next_node_announcements)(this_arg_conv->this_arg, starting_point_ref, batch_amount);
@@ -3708,6 +3722,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1call_1
 JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1call_1should_1request_1full_1sync(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray node_id) {
        LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg;
        LDKPublicKey node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, node_id, 0, 33, node_id_ref.compressed_form);
        return (this_arg_conv->should_request_full_sync)(this_arg_conv->this_arg, node_id_ref);
 }
@@ -4175,6 +4190,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeySecpErrorZ_1
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeySecpErrorZ_1ok(JNIEnv * _env, jclass _b, jbyteArray arg) {
        LDKPublicKey arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, arg) == 33);
        (*_env)->GetByteArrayRegion (_env, arg, 0, 33, arg_ref.compressed_form);
        LDKCResult_PublicKeySecpErrorZ* ret = MALLOC(sizeof(LDKCResult_PublicKeySecpErrorZ), "LDKCResult_PublicKeySecpErrorZ");
        *ret = CResult_PublicKeySecpErrorZ_ok(arg_ref);
@@ -4219,6 +4235,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeySecpErrorZ_1
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeySecpErrorZ_1ok(JNIEnv * _env, jclass _b, jbyteArray arg) {
        LDKSecretKey arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, arg) == 32);
        (*_env)->GetByteArrayRegion (_env, arg, 0, 32, arg_ref.bytes);
        LDKCResult_SecretKeySecpErrorZ* ret = MALLOC(sizeof(LDKCResult_SecretKeySecpErrorZ), "LDKCResult_SecretKeySecpErrorZ");
        *ret = CResult_SecretKeySecpErrorZ_ok(arg_ref);
@@ -4231,11 +4248,12 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1SignatureNoneZ_1free(
        return CResult_SignatureNoneZ_free(arg_conv);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SignatureNoneZ_1ok(JNIEnv * _env, jclass _b, jlong arg) {
-       LDKSignature arg_conv = *(LDKSignature*)arg;
-       FREE((void*)arg);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SignatureNoneZ_1ok(JNIEnv * _env, jclass _b, jbyteArray arg) {
+       LDKSignature arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, arg) == 64);
+       (*_env)->GetByteArrayRegion (_env, arg, 0, 64, arg_ref.compact_form);
        LDKCResult_SignatureNoneZ* ret = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
-       *ret = CResult_SignatureNoneZ_ok(arg_conv);
+       *ret = CResult_SignatureNoneZ_ok(arg_ref);
        return (long)ret;
 }
 
@@ -4526,6 +4544,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1new
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1TxidCVec_1TxOutZZ_1new(JNIEnv * _env, jclass _b, jbyteArray a, jlong b) {
        LDKThirtyTwoBytes a_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, a) == 32);
        (*_env)->GetByteArrayRegion (_env, a, 0, 32, a_ref.data);
        LDKCVec_TxOutZ b_conv = *(LDKCVec_TxOutZ*)b;
        FREE((void*)b);
@@ -4540,13 +4559,14 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1new(JNIEnv
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1new(JNIEnv * _env, jclass _b, jlong a, jlong b) {
-       LDKSignature a_conv = *(LDKSignature*)a;
-       FREE((void*)a);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1new(JNIEnv * _env, jclass _b, jbyteArray a, jlong b) {
+       LDKSignature a_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, a) == 64);
+       (*_env)->GetByteArrayRegion (_env, a, 0, 64, a_ref.compact_form);
        LDKCVec_SignatureZ b_conv = *(LDKCVec_SignatureZ*)b;
        FREE((void*)b);
        LDKC2Tuple_SignatureCVec_SignatureZZ* ret = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ");
-       *ret = C2Tuple_SignatureCVec_SignatureZZ_new(a_conv, b_conv);
+       *ret = C2Tuple_SignatureCVec_SignatureZZ_new(a_ref, b_conv);
        return (long)ret;
 }
 
@@ -4607,16 +4627,17 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ
        return (long)ret;
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1HTLCOutputInCommitmentSignatureZ_1new(JNIEnv * _env, jclass _b, jlong a, jlong b) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1HTLCOutputInCommitmentSignatureZ_1new(JNIEnv * _env, jclass _b, jlong a, jbyteArray b) {
        LDKHTLCOutputInCommitment a_conv;
        a_conv.inner = (void*)(a & (~1));
        a_conv.is_owned = (a & 1) || (a == 0);
        if (a_conv.inner != NULL)
                a_conv = HTLCOutputInCommitment_clone(&a_conv);
-       LDKSignature b_conv = *(LDKSignature*)b;
-       FREE((void*)b);
+       LDKSignature b_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, b) == 64);
+       (*_env)->GetByteArrayRegion (_env, b, 0, 64, b_ref.compact_form);
        LDKC2Tuple_HTLCOutputInCommitmentSignatureZ* ret = MALLOC(sizeof(LDKC2Tuple_HTLCOutputInCommitmentSignatureZ), "LDKC2Tuple_HTLCOutputInCommitmentSignatureZ");
-       *ret = C2Tuple_HTLCOutputInCommitmentSignatureZ_new(a_conv, b_conv);
+       *ret = C2Tuple_HTLCOutputInCommitmentSignatureZ_new(a_conv, b_ref);
        return (long)ret;
 }
 
@@ -5117,6 +5138,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChainMonitor_1block_1connected
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        unsigned char header_arr[80];
+       DO_ASSERT((*_env)->GetArrayLength (_env, header) == 80);
        (*_env)->GetByteArrayRegion (_env, header, 0, 80, header_arr);
        unsigned char (*header_ref)[80] = &header_arr;
        LDKCVec_C2Tuple_usizeTransactionZZ txdata_conv = *(LDKCVec_C2Tuple_usizeTransactionZZ*)txdata;
@@ -5129,6 +5151,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChainMonitor_1block_1disconnec
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        unsigned char header_arr[80];
+       DO_ASSERT((*_env)->GetArrayLength (_env, header) == 80);
        (*_env)->GetByteArrayRegion (_env, header, 0, 80, header_arr);
        unsigned char (*header_ref)[80] = &header_arr;
        return ChainMonitor_block_disconnected(&this_arg_conv, header_ref, disconnected_height);
@@ -5333,6 +5356,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1block_1connec
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        unsigned char header_arr[80];
+       DO_ASSERT((*_env)->GetArrayLength (_env, header) == 80);
        (*_env)->GetByteArrayRegion (_env, header, 0, 80, header_arr);
        unsigned char (*header_ref)[80] = &header_arr;
        LDKCVec_C2Tuple_usizeTransactionZZ txdata_conv = *(LDKCVec_C2Tuple_usizeTransactionZZ*)txdata;
@@ -5362,6 +5386,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1block_1disconn
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        unsigned char header_arr[80];
+       DO_ASSERT((*_env)->GetArrayLength (_env, header) == 80);
        (*_env)->GetByteArrayRegion (_env, header, 0, 80, header_arr);
        unsigned char (*header_ref)[80] = &header_arr;
        LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)broadcaster;
@@ -5411,6 +5436,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OutPoint_1set_1txid(JNIEnv * _
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return OutPoint_set_txid(&this_ptr_conv, val_ref);
 }
@@ -5431,6 +5457,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OutPoint_1set_1index(JNIEnv *
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1new(JNIEnv * _env, jclass _b, jbyteArray txid_arg, jshort index_arg) {
        LDKThirtyTwoBytes txid_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, txid_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, txid_arg, 0, 32, txid_arg_ref.data);
        LDKOutPoint ret = OutPoint_new(txid_arg_ref, index_arg);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
@@ -5507,6 +5534,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1fund
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKSecretKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.bytes);
        return InMemoryChannelKeys_set_funding_key(&this_ptr_conv, val_ref);
 }
@@ -5525,6 +5553,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1revo
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKSecretKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.bytes);
        return InMemoryChannelKeys_set_revocation_base_key(&this_ptr_conv, val_ref);
 }
@@ -5543,6 +5572,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1paym
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKSecretKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.bytes);
        return InMemoryChannelKeys_set_payment_key(&this_ptr_conv, val_ref);
 }
@@ -5561,6 +5591,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1dela
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKSecretKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.bytes);
        return InMemoryChannelKeys_set_delayed_payment_base_key(&this_ptr_conv, val_ref);
 }
@@ -5579,6 +5610,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1htlc
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKSecretKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.bytes);
        return InMemoryChannelKeys_set_htlc_base_key(&this_ptr_conv, val_ref);
 }
@@ -5597,22 +5629,29 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1comm
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return InMemoryChannelKeys_set_commitment_seed(&this_ptr_conv, val_ref);
 }
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1new(JNIEnv * _env, jclass _b, jbyteArray funding_key, jbyteArray revocation_base_key, jbyteArray payment_key, jbyteArray delayed_payment_base_key, jbyteArray htlc_base_key, jbyteArray commitment_seed, jlong channel_value_satoshis, jlong key_derivation_params) {
        LDKSecretKey funding_key_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, funding_key) == 32);
        (*_env)->GetByteArrayRegion (_env, funding_key, 0, 32, funding_key_ref.bytes);
        LDKSecretKey revocation_base_key_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, revocation_base_key) == 32);
        (*_env)->GetByteArrayRegion (_env, revocation_base_key, 0, 32, revocation_base_key_ref.bytes);
        LDKSecretKey payment_key_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, payment_key) == 32);
        (*_env)->GetByteArrayRegion (_env, payment_key, 0, 32, payment_key_ref.bytes);
        LDKSecretKey delayed_payment_base_key_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, delayed_payment_base_key) == 32);
        (*_env)->GetByteArrayRegion (_env, delayed_payment_base_key, 0, 32, delayed_payment_base_key_ref.bytes);
        LDKSecretKey htlc_base_key_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, htlc_base_key) == 32);
        (*_env)->GetByteArrayRegion (_env, htlc_base_key, 0, 32, htlc_base_key_ref.bytes);
        LDKThirtyTwoBytes commitment_seed_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, commitment_seed) == 32);
        (*_env)->GetByteArrayRegion (_env, commitment_seed, 0, 32, commitment_seed_ref.data);
        LDKC2Tuple_u64u64Z key_derivation_params_conv = *(LDKC2Tuple_u64u64Z*)key_derivation_params;
        FREE((void*)key_derivation_params);
@@ -5675,6 +5714,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_KeysManager_1free(JNIEnv * _en
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_KeysManager_1new(JNIEnv * _env, jclass _b, jbyteArray seed, jclass network, jlong starting_time_secs, jint starting_time_nanos) {
        unsigned char seed_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, seed) == 32);
        (*_env)->GetByteArrayRegion (_env, seed, 0, 32, seed_arr);
        unsigned char (*seed_ref)[32] = &seed_arr;
        LDKNetwork network_conv = LDKNetwork_from_java(_env, network);
@@ -5727,6 +5767,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1channel_1
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return ChannelDetails_set_channel_id(&this_ptr_conv, val_ref);
 }
@@ -5745,6 +5786,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1remote_1n
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return ChannelDetails_set_remote_network_id(&this_ptr_conv, val_ref);
 }
@@ -5885,6 +5927,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1create_1chann
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        LDKPublicKey their_network_key_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_network_key) == 33);
        (*_env)->GetByteArrayRegion (_env, their_network_key, 0, 33, their_network_key_ref.compressed_form);
        LDKUserConfig override_config_conv;
        override_config_conv.inner = (void*)(override_config & (~1));
@@ -5919,6 +5962,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1close_1channe
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        unsigned char channel_id_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, channel_id) == 32);
        (*_env)->GetByteArrayRegion (_env, channel_id, 0, 32, channel_id_arr);
        unsigned char (*channel_id_ref)[32] = &channel_id_arr;
        LDKCResult_NoneAPIErrorZ* ret = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ");
@@ -5931,6 +5975,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1force_1close_1
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        unsigned char channel_id_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, channel_id) == 32);
        (*_env)->GetByteArrayRegion (_env, channel_id, 0, 32, channel_id_arr);
        unsigned char (*channel_id_ref)[32] = &channel_id_arr;
        return ChannelManager_force_close_channel(&this_arg_conv, channel_id_ref);
@@ -5951,8 +5996,10 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1send_1payment
        route_conv.inner = (void*)(route & (~1));
        route_conv.is_owned = (route & 1) || (route == 0);
        LDKThirtyTwoBytes payment_hash_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, payment_hash) == 32);
        (*_env)->GetByteArrayRegion (_env, payment_hash, 0, 32, payment_hash_ref.data);
        LDKThirtyTwoBytes payment_secret_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, payment_secret) == 32);
        (*_env)->GetByteArrayRegion (_env, payment_secret, 0, 32, payment_secret_ref.data);
        LDKCResult_NonePaymentSendFailureZ* ret = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ");
        *ret = ChannelManager_send_payment(&this_arg_conv, &route_conv, payment_hash_ref, payment_secret_ref);
@@ -5964,6 +6011,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1funding_1trans
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        unsigned char temporary_channel_id_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, temporary_channel_id) == 32);
        (*_env)->GetByteArrayRegion (_env, temporary_channel_id, 0, 32, temporary_channel_id_arr);
        unsigned char (*temporary_channel_id_ref)[32] = &temporary_channel_id_arr;
        LDKOutPoint funding_txo_conv;
@@ -5981,6 +6029,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1broadcast_1nod
        LDKThreeBytes rgb_conv = *(LDKThreeBytes*)rgb;
        FREE((void*)rgb);
        LDKThirtyTwoBytes alias_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, alias) == 32);
        (*_env)->GetByteArrayRegion (_env, alias, 0, 32, alias_ref.data);
        LDKCVec_NetAddressZ addresses_conv = *(LDKCVec_NetAddressZ*)addresses;
        FREE((void*)addresses);
@@ -6006,9 +6055,11 @@ JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelManager_1fail_1htlc
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        unsigned char payment_hash_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, payment_hash) == 32);
        (*_env)->GetByteArrayRegion (_env, payment_hash, 0, 32, payment_hash_arr);
        unsigned char (*payment_hash_ref)[32] = &payment_hash_arr;
        LDKThirtyTwoBytes payment_secret_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, payment_secret) == 32);
        (*_env)->GetByteArrayRegion (_env, payment_secret, 0, 32, payment_secret_ref.data);
        return ChannelManager_fail_htlc_backwards(&this_arg_conv, payment_hash_ref, payment_secret_ref);
 }
@@ -6018,8 +6069,10 @@ JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelManager_1claim_1fun
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        LDKThirtyTwoBytes payment_preimage_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, payment_preimage) == 32);
        (*_env)->GetByteArrayRegion (_env, payment_preimage, 0, 32, payment_preimage_ref.data);
        LDKThirtyTwoBytes payment_secret_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, payment_secret) == 32);
        (*_env)->GetByteArrayRegion (_env, payment_secret, 0, 32, payment_secret_ref.data);
        return ChannelManager_claim_funds(&this_arg_conv, payment_preimage_ref, payment_secret_ref, expected_amount);
 }
@@ -6066,6 +6119,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1block_1connect
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        unsigned char header_arr[80];
+       DO_ASSERT((*_env)->GetArrayLength (_env, header) == 80);
        (*_env)->GetByteArrayRegion (_env, header, 0, 80, header_arr);
        unsigned char (*header_ref)[80] = &header_arr;
        LDKCVec_C2Tuple_usizeTransactionZZ txdata_conv = *(LDKCVec_C2Tuple_usizeTransactionZZ*)txdata;
@@ -6078,6 +6132,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1block_1disconn
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        unsigned char header_arr[80];
+       DO_ASSERT((*_env)->GetArrayLength (_env, header) == 80);
        (*_env)->GetByteArrayRegion (_env, header, 0, 80, header_arr);
        unsigned char (*header_ref)[80] = &header_arr;
        return ChannelManager_block_disconnected(&this_arg_conv, header_ref);
@@ -6299,6 +6354,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1set_1channel_1id
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return ErrorMessage_set_channel_id(&this_ptr_conv, val_ref);
 }
@@ -6323,6 +6379,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1set_1data(JNIEnv
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jlong data_arg) {
        LDKThirtyTwoBytes channel_id_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, channel_id_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, channel_id_arg, 0, 32, channel_id_arg_ref.data);
        LDKCVec_u8Z data_arg_conv = *(LDKCVec_u8Z*)data_arg;
        FREE((void*)data_arg);
@@ -6425,6 +6482,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1chain_1hash(
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return OpenChannel_set_chain_hash(&this_ptr_conv, val_ref);
 }
@@ -6443,6 +6501,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1temporary_1c
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return OpenChannel_set_temporary_channel_id(&this_ptr_conv, val_ref);
 }
@@ -6587,6 +6646,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1funding_1pub
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return OpenChannel_set_funding_pubkey(&this_ptr_conv, val_ref);
 }
@@ -6605,6 +6665,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1revocation_1
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return OpenChannel_set_revocation_basepoint(&this_ptr_conv, val_ref);
 }
@@ -6623,6 +6684,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1payment_1poi
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return OpenChannel_set_payment_point(&this_ptr_conv, val_ref);
 }
@@ -6641,6 +6703,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1delayed_1pay
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return OpenChannel_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
 }
@@ -6659,6 +6722,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1htlc_1basepo
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return OpenChannel_set_htlc_basepoint(&this_ptr_conv, val_ref);
 }
@@ -6677,6 +6741,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1first_1per_1
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return OpenChannel_set_first_per_commitment_point(&this_ptr_conv, val_ref);
 }
@@ -6724,6 +6789,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1temporary_
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return AcceptChannel_set_temporary_channel_id(&this_ptr_conv, val_ref);
 }
@@ -6840,6 +6906,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1funding_1p
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return AcceptChannel_set_funding_pubkey(&this_ptr_conv, val_ref);
 }
@@ -6858,6 +6925,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1revocation
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return AcceptChannel_set_revocation_basepoint(&this_ptr_conv, val_ref);
 }
@@ -6876,6 +6944,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1payment_1p
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return AcceptChannel_set_payment_point(&this_ptr_conv, val_ref);
 }
@@ -6894,6 +6963,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1delayed_1p
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return AcceptChannel_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
 }
@@ -6912,6 +6982,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1htlc_1base
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return AcceptChannel_set_htlc_basepoint(&this_ptr_conv, val_ref);
 }
@@ -6930,6 +7001,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1first_1per
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return AcceptChannel_set_first_per_commitment_point(&this_ptr_conv, val_ref);
 }
@@ -6963,6 +7035,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1temporary
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return FundingCreated_set_temporary_channel_id(&this_ptr_conv, val_ref);
 }
@@ -6981,6 +7054,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1funding_1
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return FundingCreated_set_funding_txid(&this_ptr_conv, val_ref);
 }
@@ -6999,32 +7073,36 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1funding_1
        return FundingCreated_set_funding_output_index(&this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_FundingCreated_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = FundingCreated_get_signature(&this_ptr_conv);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, FundingCreated_get_signature(&this_ptr_conv).compact_form);
+       return arg_arr;
 }
 
-JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jbyteArray val) {
        LDKFundingCreated this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature val_conv = *(LDKSignature*)val;
-       FREE((void*)val);
-       return FundingCreated_set_signature(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 64);
+       (*_env)->GetByteArrayRegion (_env, val, 0, 64, val_ref.compact_form);
+       return FundingCreated_set_signature(&this_ptr_conv, val_ref);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1new(JNIEnv * _env, jclass _b, jbyteArray temporary_channel_id_arg, jbyteArray funding_txid_arg, jshort funding_output_index_arg, jlong signature_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1new(JNIEnv * _env, jclass _b, jbyteArray temporary_channel_id_arg, jbyteArray funding_txid_arg, jshort funding_output_index_arg, jbyteArray signature_arg) {
        LDKThirtyTwoBytes temporary_channel_id_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, temporary_channel_id_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, temporary_channel_id_arg, 0, 32, temporary_channel_id_arg_ref.data);
        LDKThirtyTwoBytes funding_txid_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, funding_txid_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, funding_txid_arg, 0, 32, funding_txid_arg_ref.data);
-       LDKSignature signature_arg_conv = *(LDKSignature*)signature_arg;
-       FREE((void*)signature_arg);
-       LDKFundingCreated ret = FundingCreated_new(temporary_channel_id_arg_ref, funding_txid_arg_ref, funding_output_index_arg, signature_arg_conv);
+       LDKSignature signature_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, signature_arg) == 64);
+       (*_env)->GetByteArrayRegion (_env, signature_arg, 0, 64, signature_arg_ref.compact_form);
+       LDKFundingCreated ret = FundingCreated_new(temporary_channel_id_arg_ref, funding_txid_arg_ref, funding_output_index_arg, signature_arg_ref);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
 }
 
@@ -7057,34 +7135,38 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1set_1channel_1i
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return FundingSigned_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_FundingSigned_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKFundingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = FundingSigned_get_signature(&this_ptr_conv);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, FundingSigned_get_signature(&this_ptr_conv).compact_form);
+       return arg_arr;
 }
 
-JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jbyteArray val) {
        LDKFundingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature val_conv = *(LDKSignature*)val;
-       FREE((void*)val);
-       return FundingSigned_set_signature(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 64);
+       (*_env)->GetByteArrayRegion (_env, val, 0, 64, val_ref.compact_form);
+       return FundingSigned_set_signature(&this_ptr_conv, val_ref);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jlong signature_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jbyteArray signature_arg) {
        LDKThirtyTwoBytes channel_id_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, channel_id_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, channel_id_arg, 0, 32, channel_id_arg_ref.data);
-       LDKSignature signature_arg_conv = *(LDKSignature*)signature_arg;
-       FREE((void*)signature_arg);
-       LDKFundingSigned ret = FundingSigned_new(channel_id_arg_ref, signature_arg_conv);
+       LDKSignature signature_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, signature_arg) == 64);
+       (*_env)->GetByteArrayRegion (_env, signature_arg, 0, 64, signature_arg_ref.compact_form);
+       LDKFundingSigned ret = FundingSigned_new(channel_id_arg_ref, signature_arg_ref);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
 }
 
@@ -7117,6 +7199,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingLocked_1set_1channel_1i
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return FundingLocked_set_channel_id(&this_ptr_conv, val_ref);
 }
@@ -7135,14 +7218,17 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingLocked_1set_1next_1per_
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return FundingLocked_set_next_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingLocked_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jbyteArray next_per_commitment_point_arg) {
        LDKThirtyTwoBytes channel_id_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, channel_id_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, channel_id_arg, 0, 32, channel_id_arg_ref.data);
        LDKPublicKey next_per_commitment_point_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, next_per_commitment_point_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, next_per_commitment_point_arg, 0, 33, next_per_commitment_point_arg_ref.compressed_form);
        LDKFundingLocked ret = FundingLocked_new(channel_id_arg_ref, next_per_commitment_point_arg_ref);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
@@ -7177,6 +7263,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Shutdown_1set_1channel_1id(JNI
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return Shutdown_set_channel_id(&this_ptr_conv, val_ref);
 }
@@ -7201,6 +7288,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Shutdown_1set_1scriptpubkey(JN
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Shutdown_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jlong scriptpubkey_arg) {
        LDKThirtyTwoBytes channel_id_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, channel_id_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, channel_id_arg, 0, 32, channel_id_arg_ref.data);
        LDKCVec_u8Z scriptpubkey_arg_conv = *(LDKCVec_u8Z*)scriptpubkey_arg;
        FREE((void*)scriptpubkey_arg);
@@ -7237,6 +7325,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1set_1channel_1i
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return ClosingSigned_set_channel_id(&this_ptr_conv, val_ref);
 }
@@ -7255,30 +7344,33 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1set_1fee_1satos
        return ClosingSigned_set_fee_satoshis(&this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = ClosingSigned_get_signature(&this_ptr_conv);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, ClosingSigned_get_signature(&this_ptr_conv).compact_form);
+       return arg_arr;
 }
 
-JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jbyteArray val) {
        LDKClosingSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature val_conv = *(LDKSignature*)val;
-       FREE((void*)val);
-       return ClosingSigned_set_signature(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 64);
+       (*_env)->GetByteArrayRegion (_env, val, 0, 64, val_ref.compact_form);
+       return ClosingSigned_set_signature(&this_ptr_conv, val_ref);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jlong fee_satoshis_arg, jlong signature_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jlong fee_satoshis_arg, jbyteArray signature_arg) {
        LDKThirtyTwoBytes channel_id_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, channel_id_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, channel_id_arg, 0, 32, channel_id_arg_ref.data);
-       LDKSignature signature_arg_conv = *(LDKSignature*)signature_arg;
-       FREE((void*)signature_arg);
-       LDKClosingSigned ret = ClosingSigned_new(channel_id_arg_ref, fee_satoshis_arg, signature_arg_conv);
+       LDKSignature signature_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, signature_arg) == 64);
+       (*_env)->GetByteArrayRegion (_env, signature_arg, 0, 64, signature_arg_ref.compact_form);
+       LDKClosingSigned ret = ClosingSigned_new(channel_id_arg_ref, fee_satoshis_arg, signature_arg_ref);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
 }
 
@@ -7311,6 +7403,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1channel_1i
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return UpdateAddHTLC_set_channel_id(&this_ptr_conv, val_ref);
 }
@@ -7357,6 +7450,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1payment_1h
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return UpdateAddHTLC_set_payment_hash(&this_ptr_conv, val_ref);
 }
@@ -7404,6 +7498,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1set_1channe
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return UpdateFulfillHTLC_set_channel_id(&this_ptr_conv, val_ref);
 }
@@ -7436,14 +7531,17 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1set_1paymen
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return UpdateFulfillHTLC_set_payment_preimage(&this_ptr_conv, val_ref);
 }
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jlong htlc_id_arg, jbyteArray payment_preimage_arg) {
        LDKThirtyTwoBytes channel_id_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, channel_id_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, channel_id_arg, 0, 32, channel_id_arg_ref.data);
        LDKThirtyTwoBytes payment_preimage_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, payment_preimage_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, payment_preimage_arg, 0, 32, payment_preimage_arg_ref.data);
        LDKUpdateFulfillHTLC ret = UpdateFulfillHTLC_new(channel_id_arg_ref, htlc_id_arg, payment_preimage_arg_ref);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
@@ -7478,6 +7576,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1set_1channel_1
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return UpdateFailHTLC_set_channel_id(&this_ptr_conv, val_ref);
 }
@@ -7525,6 +7624,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1set_1
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return UpdateFailMalformedHTLC_set_channel_id(&this_ptr_conv, val_ref);
 }
@@ -7586,26 +7686,28 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1channel
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return CommitmentSigned_set_channel_id(&this_ptr_conv, val_ref);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKCommitmentSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = CommitmentSigned_get_signature(&this_ptr_conv);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, CommitmentSigned_get_signature(&this_ptr_conv).compact_form);
+       return arg_arr;
 }
 
-JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jbyteArray val) {
        LDKCommitmentSigned this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature val_conv = *(LDKSignature*)val;
-       FREE((void*)val);
-       return CommitmentSigned_set_signature(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 64);
+       (*_env)->GetByteArrayRegion (_env, val, 0, 64, val_ref.compact_form);
+       return CommitmentSigned_set_signature(&this_ptr_conv, val_ref);
 }
 
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1htlc_1signatures(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
@@ -7617,14 +7719,16 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1htlc_1s
        return CommitmentSigned_set_htlc_signatures(&this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jlong signature_arg, jlong htlc_signatures_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jbyteArray signature_arg, jlong htlc_signatures_arg) {
        LDKThirtyTwoBytes channel_id_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, channel_id_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, channel_id_arg, 0, 32, channel_id_arg_ref.data);
-       LDKSignature signature_arg_conv = *(LDKSignature*)signature_arg;
-       FREE((void*)signature_arg);
+       LDKSignature signature_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, signature_arg) == 64);
+       (*_env)->GetByteArrayRegion (_env, signature_arg, 0, 64, signature_arg_ref.compact_form);
        LDKCVec_SignatureZ htlc_signatures_arg_conv = *(LDKCVec_SignatureZ*)htlc_signatures_arg;
        FREE((void*)htlc_signatures_arg);
-       LDKCommitmentSigned ret = CommitmentSigned_new(channel_id_arg_ref, signature_arg_conv, htlc_signatures_arg_conv);
+       LDKCommitmentSigned ret = CommitmentSigned_new(channel_id_arg_ref, signature_arg_ref, htlc_signatures_arg_conv);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
 }
 
@@ -7657,6 +7761,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1set_1channel_1id
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return RevokeAndACK_set_channel_id(&this_ptr_conv, val_ref);
 }
@@ -7675,6 +7780,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1set_1per_1commit
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return RevokeAndACK_set_per_commitment_secret(&this_ptr_conv, val_ref);
 }
@@ -7693,16 +7799,20 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1set_1next_1per_1
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return RevokeAndACK_set_next_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jbyteArray per_commitment_secret_arg, jbyteArray next_per_commitment_point_arg) {
        LDKThirtyTwoBytes channel_id_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, channel_id_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, channel_id_arg, 0, 32, channel_id_arg_ref.data);
        LDKThirtyTwoBytes per_commitment_secret_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, per_commitment_secret_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, per_commitment_secret_arg, 0, 32, per_commitment_secret_arg_ref.data);
        LDKPublicKey next_per_commitment_point_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, next_per_commitment_point_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, next_per_commitment_point_arg, 0, 33, next_per_commitment_point_arg_ref.compressed_form);
        LDKRevokeAndACK ret = RevokeAndACK_new(channel_id_arg_ref, per_commitment_secret_arg_ref, next_per_commitment_point_arg_ref);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
@@ -7737,6 +7847,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFee_1set_1channel_1id(JN
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return UpdateFee_set_channel_id(&this_ptr_conv, val_ref);
 }
@@ -7757,6 +7868,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFee_1set_1feerate_1per_1
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFee_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jint feerate_per_kw_arg) {
        LDKThirtyTwoBytes channel_id_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, channel_id_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, channel_id_arg, 0, 32, channel_id_arg_ref.data);
        LDKUpdateFee ret = UpdateFee_new(channel_id_arg_ref, feerate_per_kw_arg);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
@@ -7791,6 +7903,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1set_1your_1la
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return DataLossProtect_set_your_last_per_commitment_secret(&this_ptr_conv, val_ref);
 }
@@ -7809,14 +7922,17 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1set_1my_1curr
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return DataLossProtect_set_my_current_per_commitment_point(&this_ptr_conv, val_ref);
 }
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1new(JNIEnv * _env, jclass _b, jbyteArray your_last_per_commitment_secret_arg, jbyteArray my_current_per_commitment_point_arg) {
        LDKThirtyTwoBytes your_last_per_commitment_secret_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, your_last_per_commitment_secret_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, your_last_per_commitment_secret_arg, 0, 32, your_last_per_commitment_secret_arg_ref.data);
        LDKPublicKey my_current_per_commitment_point_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, my_current_per_commitment_point_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, my_current_per_commitment_point_arg, 0, 33, my_current_per_commitment_point_arg_ref.compressed_form);
        LDKDataLossProtect ret = DataLossProtect_new(your_last_per_commitment_secret_arg_ref, my_current_per_commitment_point_arg_ref);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
@@ -7851,6 +7967,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1set_1chann
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return ChannelReestablish_set_channel_id(&this_ptr_conv, val_ref);
 }
@@ -7912,6 +8029,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1c
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return AnnouncementSignatures_set_channel_id(&this_ptr_conv, val_ref);
 }
@@ -7930,50 +8048,55 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1s
        return AnnouncementSignatures_set_short_channel_id(&this_ptr_conv, val);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1node_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1node_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = AnnouncementSignatures_get_node_signature(&this_ptr_conv);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, AnnouncementSignatures_get_node_signature(&this_ptr_conv).compact_form);
+       return arg_arr;
 }
 
-JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1node_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1node_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jbyteArray val) {
        LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature val_conv = *(LDKSignature*)val;
-       FREE((void*)val);
-       return AnnouncementSignatures_set_node_signature(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 64);
+       (*_env)->GetByteArrayRegion (_env, val, 0, 64, val_ref.compact_form);
+       return AnnouncementSignatures_set_node_signature(&this_ptr_conv, val_ref);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1bitcoin_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1bitcoin_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = AnnouncementSignatures_get_bitcoin_signature(&this_ptr_conv);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, AnnouncementSignatures_get_bitcoin_signature(&this_ptr_conv).compact_form);
+       return arg_arr;
 }
 
-JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1bitcoin_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1bitcoin_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jbyteArray val) {
        LDKAnnouncementSignatures this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature val_conv = *(LDKSignature*)val;
-       FREE((void*)val);
-       return AnnouncementSignatures_set_bitcoin_signature(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 64);
+       (*_env)->GetByteArrayRegion (_env, val, 0, 64, val_ref.compact_form);
+       return AnnouncementSignatures_set_bitcoin_signature(&this_ptr_conv, val_ref);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jlong short_channel_id_arg, jlong node_signature_arg, jlong bitcoin_signature_arg) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1new(JNIEnv * _env, jclass _b, jbyteArray channel_id_arg, jlong short_channel_id_arg, jbyteArray node_signature_arg, jbyteArray bitcoin_signature_arg) {
        LDKThirtyTwoBytes channel_id_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, channel_id_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, channel_id_arg, 0, 32, channel_id_arg_ref.data);
-       LDKSignature node_signature_arg_conv = *(LDKSignature*)node_signature_arg;
-       FREE((void*)node_signature_arg);
-       LDKSignature bitcoin_signature_arg_conv = *(LDKSignature*)bitcoin_signature_arg;
-       FREE((void*)bitcoin_signature_arg);
-       LDKAnnouncementSignatures ret = AnnouncementSignatures_new(channel_id_arg_ref, short_channel_id_arg, node_signature_arg_conv, bitcoin_signature_arg_conv);
+       LDKSignature node_signature_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, node_signature_arg) == 64);
+       (*_env)->GetByteArrayRegion (_env, node_signature_arg, 0, 64, node_signature_arg_ref.compact_form);
+       LDKSignature bitcoin_signature_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, bitcoin_signature_arg) == 64);
+       (*_env)->GetByteArrayRegion (_env, bitcoin_signature_arg, 0, 64, bitcoin_signature_arg_ref.compact_form);
+       LDKAnnouncementSignatures ret = AnnouncementSignatures_new(channel_id_arg_ref, short_channel_id_arg, node_signature_arg_ref, bitcoin_signature_arg_ref);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
 }
 
@@ -8044,6 +8167,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return UnsignedNodeAnnouncement_set_node_id(&this_ptr_conv, val_ref);
 }
@@ -8080,6 +8204,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return UnsignedNodeAnnouncement_set_alias(&this_ptr_conv, val_ref);
 }
@@ -8108,22 +8233,23 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1clone(JNIEn
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKNodeAnnouncement this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = NodeAnnouncement_get_signature(&this_ptr_conv);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, NodeAnnouncement_get_signature(&this_ptr_conv).compact_form);
+       return arg_arr;
 }
 
-JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jbyteArray val) {
        LDKNodeAnnouncement this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature val_conv = *(LDKSignature*)val;
-       FREE((void*)val);
-       return NodeAnnouncement_set_signature(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 64);
+       (*_env)->GetByteArrayRegion (_env, val, 0, 64, val_ref.compact_form);
+       return NodeAnnouncement_set_signature(&this_ptr_conv, val_ref);
 }
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1get_1contents(JNIEnv * _env, jclass _b, jlong this_ptr) {
@@ -8146,15 +8272,16 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1set_1content
        return NodeAnnouncement_set_contents(&this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1new(JNIEnv * _env, jclass _b, jlong signature_arg, jlong contents_arg) {
-       LDKSignature signature_arg_conv = *(LDKSignature*)signature_arg;
-       FREE((void*)signature_arg);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1new(JNIEnv * _env, jclass _b, jbyteArray signature_arg, jlong contents_arg) {
+       LDKSignature signature_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, signature_arg) == 64);
+       (*_env)->GetByteArrayRegion (_env, signature_arg, 0, 64, signature_arg_ref.compact_form);
        LDKUnsignedNodeAnnouncement contents_arg_conv;
        contents_arg_conv.inner = (void*)(contents_arg & (~1));
        contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
        if (contents_arg_conv.inner != NULL)
                contents_arg_conv = UnsignedNodeAnnouncement_clone(&contents_arg_conv);
-       LDKNodeAnnouncement ret = NodeAnnouncement_new(signature_arg_conv, contents_arg_conv);
+       LDKNodeAnnouncement ret = NodeAnnouncement_new(signature_arg_ref, contents_arg_conv);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
 }
 
@@ -8205,6 +8332,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1s
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return UnsignedChannelAnnouncement_set_chain_hash(&this_ptr_conv, val_ref);
 }
@@ -8237,6 +8365,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1s
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return UnsignedChannelAnnouncement_set_node_id_1(&this_ptr_conv, val_ref);
 }
@@ -8255,6 +8384,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1s
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return UnsignedChannelAnnouncement_set_node_id_2(&this_ptr_conv, val_ref);
 }
@@ -8273,6 +8403,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1s
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return UnsignedChannelAnnouncement_set_bitcoin_key_1(&this_ptr_conv, val_ref);
 }
@@ -8291,6 +8422,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1s
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return UnsignedChannelAnnouncement_set_bitcoin_key_2(&this_ptr_conv, val_ref);
 }
@@ -8310,76 +8442,80 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1clone(JN
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1node_1signature_11(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1node_1signature_11(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelAnnouncement this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = ChannelAnnouncement_get_node_signature_1(&this_ptr_conv);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, ChannelAnnouncement_get_node_signature_1(&this_ptr_conv).compact_form);
+       return arg_arr;
 }
 
-JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1node_1signature_11(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1node_1signature_11(JNIEnv * _env, jclass _b, jlong this_ptr, jbyteArray val) {
        LDKChannelAnnouncement this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature val_conv = *(LDKSignature*)val;
-       FREE((void*)val);
-       return ChannelAnnouncement_set_node_signature_1(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 64);
+       (*_env)->GetByteArrayRegion (_env, val, 0, 64, val_ref.compact_form);
+       return ChannelAnnouncement_set_node_signature_1(&this_ptr_conv, val_ref);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1node_1signature_12(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1node_1signature_12(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelAnnouncement this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = ChannelAnnouncement_get_node_signature_2(&this_ptr_conv);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, ChannelAnnouncement_get_node_signature_2(&this_ptr_conv).compact_form);
+       return arg_arr;
 }
 
-JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1node_1signature_12(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1node_1signature_12(JNIEnv * _env, jclass _b, jlong this_ptr, jbyteArray val) {
        LDKChannelAnnouncement this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature val_conv = *(LDKSignature*)val;
-       FREE((void*)val);
-       return ChannelAnnouncement_set_node_signature_2(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 64);
+       (*_env)->GetByteArrayRegion (_env, val, 0, 64, val_ref.compact_form);
+       return ChannelAnnouncement_set_node_signature_2(&this_ptr_conv, val_ref);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1bitcoin_1signature_11(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1bitcoin_1signature_11(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelAnnouncement this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = ChannelAnnouncement_get_bitcoin_signature_1(&this_ptr_conv);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, ChannelAnnouncement_get_bitcoin_signature_1(&this_ptr_conv).compact_form);
+       return arg_arr;
 }
 
-JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1bitcoin_1signature_11(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1bitcoin_1signature_11(JNIEnv * _env, jclass _b, jlong this_ptr, jbyteArray val) {
        LDKChannelAnnouncement this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature val_conv = *(LDKSignature*)val;
-       FREE((void*)val);
-       return ChannelAnnouncement_set_bitcoin_signature_1(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 64);
+       (*_env)->GetByteArrayRegion (_env, val, 0, 64, val_ref.compact_form);
+       return ChannelAnnouncement_set_bitcoin_signature_1(&this_ptr_conv, val_ref);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1bitcoin_1signature_12(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1bitcoin_1signature_12(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelAnnouncement this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = ChannelAnnouncement_get_bitcoin_signature_2(&this_ptr_conv);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, ChannelAnnouncement_get_bitcoin_signature_2(&this_ptr_conv).compact_form);
+       return arg_arr;
 }
 
-JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1bitcoin_1signature_12(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1bitcoin_1signature_12(JNIEnv * _env, jclass _b, jlong this_ptr, jbyteArray val) {
        LDKChannelAnnouncement this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature val_conv = *(LDKSignature*)val;
-       FREE((void*)val);
-       return ChannelAnnouncement_set_bitcoin_signature_2(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 64);
+       (*_env)->GetByteArrayRegion (_env, val, 0, 64, val_ref.compact_form);
+       return ChannelAnnouncement_set_bitcoin_signature_2(&this_ptr_conv, val_ref);
 }
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1contents(JNIEnv * _env, jclass _b, jlong this_ptr) {
@@ -8402,21 +8538,25 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1cont
        return ChannelAnnouncement_set_contents(&this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1new(JNIEnv * _env, jclass _b, jlong node_signature_1_arg, jlong node_signature_2_arg, jlong bitcoin_signature_1_arg, jlong bitcoin_signature_2_arg, jlong contents_arg) {
-       LDKSignature node_signature_1_arg_conv = *(LDKSignature*)node_signature_1_arg;
-       FREE((void*)node_signature_1_arg);
-       LDKSignature node_signature_2_arg_conv = *(LDKSignature*)node_signature_2_arg;
-       FREE((void*)node_signature_2_arg);
-       LDKSignature bitcoin_signature_1_arg_conv = *(LDKSignature*)bitcoin_signature_1_arg;
-       FREE((void*)bitcoin_signature_1_arg);
-       LDKSignature bitcoin_signature_2_arg_conv = *(LDKSignature*)bitcoin_signature_2_arg;
-       FREE((void*)bitcoin_signature_2_arg);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1new(JNIEnv * _env, jclass _b, jbyteArray node_signature_1_arg, jbyteArray node_signature_2_arg, jbyteArray bitcoin_signature_1_arg, jbyteArray bitcoin_signature_2_arg, jlong contents_arg) {
+       LDKSignature node_signature_1_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, node_signature_1_arg) == 64);
+       (*_env)->GetByteArrayRegion (_env, node_signature_1_arg, 0, 64, node_signature_1_arg_ref.compact_form);
+       LDKSignature node_signature_2_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, node_signature_2_arg) == 64);
+       (*_env)->GetByteArrayRegion (_env, node_signature_2_arg, 0, 64, node_signature_2_arg_ref.compact_form);
+       LDKSignature bitcoin_signature_1_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, bitcoin_signature_1_arg) == 64);
+       (*_env)->GetByteArrayRegion (_env, bitcoin_signature_1_arg, 0, 64, bitcoin_signature_1_arg_ref.compact_form);
+       LDKSignature bitcoin_signature_2_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, bitcoin_signature_2_arg) == 64);
+       (*_env)->GetByteArrayRegion (_env, bitcoin_signature_2_arg, 0, 64, bitcoin_signature_2_arg_ref.compact_form);
        LDKUnsignedChannelAnnouncement contents_arg_conv;
        contents_arg_conv.inner = (void*)(contents_arg & (~1));
        contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
        if (contents_arg_conv.inner != NULL)
                contents_arg_conv = UnsignedChannelAnnouncement_clone(&contents_arg_conv);
-       LDKChannelAnnouncement ret = ChannelAnnouncement_new(node_signature_1_arg_conv, node_signature_2_arg_conv, bitcoin_signature_1_arg_conv, bitcoin_signature_2_arg_conv, contents_arg_conv);
+       LDKChannelAnnouncement ret = ChannelAnnouncement_new(node_signature_1_arg_ref, node_signature_2_arg_ref, bitcoin_signature_1_arg_ref, bitcoin_signature_2_arg_ref, contents_arg_conv);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
 }
 
@@ -8449,6 +8589,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1ch
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return UnsignedChannelUpdate_set_chain_hash(&this_ptr_conv, val_ref);
 }
@@ -8566,22 +8707,23 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1clone(JNIEnv *
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1get_1signature(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKChannelUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = ChannelUpdate_get_signature(&this_ptr_conv);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, ChannelUpdate_get_signature(&this_ptr_conv).compact_form);
+       return arg_arr;
 }
 
-JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1set_1signature(JNIEnv * _env, jclass _b, jlong this_ptr, jbyteArray val) {
        LDKChannelUpdate this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature val_conv = *(LDKSignature*)val;
-       FREE((void*)val);
-       return ChannelUpdate_set_signature(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 64);
+       (*_env)->GetByteArrayRegion (_env, val, 0, 64, val_ref.compact_form);
+       return ChannelUpdate_set_signature(&this_ptr_conv, val_ref);
 }
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1get_1contents(JNIEnv * _env, jclass _b, jlong this_ptr) {
@@ -8604,15 +8746,16 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1set_1contents(J
        return ChannelUpdate_set_contents(&this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1new(JNIEnv * _env, jclass _b, jlong signature_arg, jlong contents_arg) {
-       LDKSignature signature_arg_conv = *(LDKSignature*)signature_arg;
-       FREE((void*)signature_arg);
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1new(JNIEnv * _env, jclass _b, jbyteArray signature_arg, jlong contents_arg) {
+       LDKSignature signature_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, signature_arg) == 64);
+       (*_env)->GetByteArrayRegion (_env, signature_arg, 0, 64, signature_arg_ref.compact_form);
        LDKUnsignedChannelUpdate contents_arg_conv;
        contents_arg_conv.inner = (void*)(contents_arg & (~1));
        contents_arg_conv.is_owned = (contents_arg & 1) || (contents_arg == 0);
        if (contents_arg_conv.inner != NULL)
                contents_arg_conv = UnsignedChannelUpdate_clone(&contents_arg_conv);
-       LDKChannelUpdate ret = ChannelUpdate_new(signature_arg_conv, contents_arg_conv);
+       LDKChannelUpdate ret = ChannelUpdate_new(signature_arg_ref, contents_arg_conv);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
 }
 
@@ -8645,6 +8788,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1set_1chain_
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return QueryChannelRange_set_chain_hash(&this_ptr_conv, val_ref);
 }
@@ -8679,6 +8823,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1set_1number
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1new(JNIEnv * _env, jclass _b, jbyteArray chain_hash_arg, jint first_blocknum_arg, jint number_of_blocks_arg) {
        LDKThirtyTwoBytes chain_hash_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, chain_hash_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, chain_hash_arg, 0, 32, chain_hash_arg_ref.data);
        LDKQueryChannelRange ret = QueryChannelRange_new(chain_hash_arg_ref, first_blocknum_arg, number_of_blocks_arg);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
@@ -8713,6 +8858,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1set_1chain_
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return ReplyChannelRange_set_chain_hash(&this_ptr_conv, val_ref);
 }
@@ -8770,6 +8916,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1set_1short_
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1new(JNIEnv * _env, jclass _b, jbyteArray chain_hash_arg, jint first_blocknum_arg, jint number_of_blocks_arg, jboolean full_information_arg, jlong short_channel_ids_arg) {
        LDKThirtyTwoBytes chain_hash_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, chain_hash_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, chain_hash_arg, 0, 32, chain_hash_arg_ref.data);
        LDKCVec_u64Z short_channel_ids_arg_conv = *(LDKCVec_u64Z*)short_channel_ids_arg;
        FREE((void*)short_channel_ids_arg);
@@ -8806,6 +8953,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1set_1cha
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return QueryShortChannelIds_set_chain_hash(&this_ptr_conv, val_ref);
 }
@@ -8821,6 +8969,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1set_1sho
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1new(JNIEnv * _env, jclass _b, jbyteArray chain_hash_arg, jlong short_channel_ids_arg) {
        LDKThirtyTwoBytes chain_hash_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, chain_hash_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, chain_hash_arg, 0, 32, chain_hash_arg_ref.data);
        LDKCVec_u64Z short_channel_ids_arg_conv = *(LDKCVec_u64Z*)short_channel_ids_arg;
        FREE((void*)short_channel_ids_arg);
@@ -8857,6 +9006,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1set_1
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return ReplyShortChannelIdsEnd_set_chain_hash(&this_ptr_conv, val_ref);
 }
@@ -8877,6 +9027,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1set_1
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1new(JNIEnv * _env, jclass _b, jbyteArray chain_hash_arg, jboolean full_information_arg) {
        LDKThirtyTwoBytes chain_hash_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, chain_hash_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, chain_hash_arg, 0, 32, chain_hash_arg_ref.data);
        LDKReplyShortChannelIdsEnd ret = ReplyShortChannelIdsEnd_new(chain_hash_arg_ref, full_information_arg);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
@@ -8911,6 +9062,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1set_1ch
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return GossipTimestampFilter_set_chain_hash(&this_ptr_conv, val_ref);
 }
@@ -8945,6 +9097,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1set_1ti
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1new(JNIEnv * _env, jclass _b, jbyteArray chain_hash_arg, jint first_timestamp_arg, jint timestamp_range_arg) {
        LDKThirtyTwoBytes chain_hash_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, chain_hash_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, chain_hash_arg, 0, 32, chain_hash_arg_ref.data);
        LDKGossipTimestampFilter ret = GossipTimestampFilter_new(chain_hash_arg_ref, first_timestamp_arg, timestamp_range_arg);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
@@ -9711,8 +9864,10 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1new(JNIEnv * _en
        message_handler_conv.inner = (void*)(message_handler & (~1));
        message_handler_conv.is_owned = (message_handler & 1) || (message_handler == 0);
        LDKSecretKey our_node_secret_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, our_node_secret) == 32);
        (*_env)->GetByteArrayRegion (_env, our_node_secret, 0, 32, our_node_secret_ref.bytes);
        unsigned char ephemeral_random_data_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, ephemeral_random_data) == 32);
        (*_env)->GetByteArrayRegion (_env, ephemeral_random_data, 0, 32, ephemeral_random_data_arr);
        unsigned char (*ephemeral_random_data_ref)[32] = &ephemeral_random_data_arr;
        LDKLogger logger_conv = *(LDKLogger*)logger;
@@ -9738,6 +9893,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerManager_1new_1outbound_1c
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        LDKPublicKey their_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, their_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, their_node_id, 0, 33, their_node_id_ref.compressed_form);
        LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)descriptor;
        if (descriptor_conv.free == LDKSocketDescriptor_JCalls_free) {
@@ -9808,6 +9964,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerManager_1timer_1tick_1occu
 
 JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_build_1commitment_1secret(JNIEnv * _env, jclass _b, jbyteArray commitment_seed, jlong idx) {
        unsigned char commitment_seed_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, commitment_seed) == 32);
        (*_env)->GetByteArrayRegion (_env, commitment_seed, 0, 32, commitment_seed_arr);
        unsigned char (*commitment_seed_ref)[32] = &commitment_seed_arr;
        jbyteArray arg_arr = (*_env)->NewByteArray(_env, 32);
@@ -9817,8 +9974,10 @@ JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_build_1commitment_1secre
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_derive_1private_1key(JNIEnv * _env, jclass _b, jbyteArray per_commitment_point, jbyteArray base_secret) {
        LDKPublicKey per_commitment_point_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, per_commitment_point) == 33);
        (*_env)->GetByteArrayRegion (_env, per_commitment_point, 0, 33, per_commitment_point_ref.compressed_form);
        unsigned char base_secret_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, base_secret) == 32);
        (*_env)->GetByteArrayRegion (_env, base_secret, 0, 32, base_secret_arr);
        unsigned char (*base_secret_ref)[32] = &base_secret_arr;
        LDKCResult_SecretKeySecpErrorZ* ret = MALLOC(sizeof(LDKCResult_SecretKeySecpErrorZ), "LDKCResult_SecretKeySecpErrorZ");
@@ -9828,8 +9987,10 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_derive_1private_1key(JNIEnv *
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_derive_1public_1key(JNIEnv * _env, jclass _b, jbyteArray per_commitment_point, jbyteArray base_point) {
        LDKPublicKey per_commitment_point_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, per_commitment_point) == 33);
        (*_env)->GetByteArrayRegion (_env, per_commitment_point, 0, 33, per_commitment_point_ref.compressed_form);
        LDKPublicKey base_point_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, base_point) == 33);
        (*_env)->GetByteArrayRegion (_env, base_point, 0, 33, base_point_ref.compressed_form);
        LDKCResult_PublicKeySecpErrorZ* ret = MALLOC(sizeof(LDKCResult_PublicKeySecpErrorZ), "LDKCResult_PublicKeySecpErrorZ");
        *ret = derive_public_key(per_commitment_point_ref, base_point_ref);
@@ -9838,9 +9999,11 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_derive_1public_1key(JNIEnv *
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_derive_1private_1revocation_1key(JNIEnv * _env, jclass _b, jbyteArray per_commitment_secret, jbyteArray countersignatory_revocation_base_secret) {
        unsigned char per_commitment_secret_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, per_commitment_secret) == 32);
        (*_env)->GetByteArrayRegion (_env, per_commitment_secret, 0, 32, per_commitment_secret_arr);
        unsigned char (*per_commitment_secret_ref)[32] = &per_commitment_secret_arr;
        unsigned char countersignatory_revocation_base_secret_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, countersignatory_revocation_base_secret) == 32);
        (*_env)->GetByteArrayRegion (_env, countersignatory_revocation_base_secret, 0, 32, countersignatory_revocation_base_secret_arr);
        unsigned char (*countersignatory_revocation_base_secret_ref)[32] = &countersignatory_revocation_base_secret_arr;
        LDKCResult_SecretKeySecpErrorZ* ret = MALLOC(sizeof(LDKCResult_SecretKeySecpErrorZ), "LDKCResult_SecretKeySecpErrorZ");
@@ -9850,8 +10013,10 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_derive_1private_1revocation_1
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_derive_1public_1revocation_1key(JNIEnv * _env, jclass _b, jbyteArray per_commitment_point, jbyteArray countersignatory_revocation_base_point) {
        LDKPublicKey per_commitment_point_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, per_commitment_point) == 33);
        (*_env)->GetByteArrayRegion (_env, per_commitment_point, 0, 33, per_commitment_point_ref.compressed_form);
        LDKPublicKey countersignatory_revocation_base_point_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, countersignatory_revocation_base_point) == 33);
        (*_env)->GetByteArrayRegion (_env, countersignatory_revocation_base_point, 0, 33, countersignatory_revocation_base_point_ref.compressed_form);
        LDKCResult_PublicKeySecpErrorZ* ret = MALLOC(sizeof(LDKCResult_PublicKeySecpErrorZ), "LDKCResult_PublicKeySecpErrorZ");
        *ret = derive_public_revocation_key(per_commitment_point_ref, countersignatory_revocation_base_point_ref);
@@ -9887,6 +10052,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1per_1comm
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return TxCreationKeys_set_per_commitment_point(&this_ptr_conv, val_ref);
 }
@@ -9905,6 +10071,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1revocatio
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return TxCreationKeys_set_revocation_key(&this_ptr_conv, val_ref);
 }
@@ -9923,6 +10090,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1broadcast
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return TxCreationKeys_set_broadcaster_htlc_key(&this_ptr_conv, val_ref);
 }
@@ -9941,6 +10109,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1countersi
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return TxCreationKeys_set_countersignatory_htlc_key(&this_ptr_conv, val_ref);
 }
@@ -9959,20 +10128,26 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1broadcast
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return TxCreationKeys_set_broadcaster_delayed_payment_key(&this_ptr_conv, val_ref);
 }
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1new(JNIEnv * _env, jclass _b, jbyteArray per_commitment_point_arg, jbyteArray revocation_key_arg, jbyteArray broadcaster_htlc_key_arg, jbyteArray countersignatory_htlc_key_arg, jbyteArray broadcaster_delayed_payment_key_arg) {
        LDKPublicKey per_commitment_point_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, per_commitment_point_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, per_commitment_point_arg, 0, 33, per_commitment_point_arg_ref.compressed_form);
        LDKPublicKey revocation_key_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, revocation_key_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, revocation_key_arg, 0, 33, revocation_key_arg_ref.compressed_form);
        LDKPublicKey broadcaster_htlc_key_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, broadcaster_htlc_key_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, broadcaster_htlc_key_arg, 0, 33, broadcaster_htlc_key_arg_ref.compressed_form);
        LDKPublicKey countersignatory_htlc_key_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, countersignatory_htlc_key_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, countersignatory_htlc_key_arg, 0, 33, countersignatory_htlc_key_arg_ref.compressed_form);
        LDKPublicKey broadcaster_delayed_payment_key_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, broadcaster_delayed_payment_key_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, broadcaster_delayed_payment_key_arg, 0, 33, broadcaster_delayed_payment_key_arg_ref.compressed_form);
        LDKTxCreationKeys ret = TxCreationKeys_new(per_commitment_point_arg_ref, revocation_key_arg_ref, broadcaster_htlc_key_arg_ref, countersignatory_htlc_key_arg_ref, broadcaster_delayed_payment_key_arg_ref);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
@@ -10056,6 +10231,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1fundin
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return ChannelPublicKeys_set_funding_pubkey(&this_ptr_conv, val_ref);
 }
@@ -10074,6 +10250,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1revoca
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return ChannelPublicKeys_set_revocation_basepoint(&this_ptr_conv, val_ref);
 }
@@ -10092,6 +10269,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1paymen
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return ChannelPublicKeys_set_payment_point(&this_ptr_conv, val_ref);
 }
@@ -10110,6 +10288,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1delaye
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return ChannelPublicKeys_set_delayed_payment_basepoint(&this_ptr_conv, val_ref);
 }
@@ -10128,20 +10307,26 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1htlc_1
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return ChannelPublicKeys_set_htlc_basepoint(&this_ptr_conv, val_ref);
 }
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1new(JNIEnv * _env, jclass _b, jbyteArray funding_pubkey_arg, jbyteArray revocation_basepoint_arg, jbyteArray payment_point_arg, jbyteArray delayed_payment_basepoint_arg, jbyteArray htlc_basepoint_arg) {
        LDKPublicKey funding_pubkey_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, funding_pubkey_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, funding_pubkey_arg, 0, 33, funding_pubkey_arg_ref.compressed_form);
        LDKPublicKey revocation_basepoint_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, revocation_basepoint_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, revocation_basepoint_arg, 0, 33, revocation_basepoint_arg_ref.compressed_form);
        LDKPublicKey payment_point_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, payment_point_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, payment_point_arg, 0, 33, payment_point_arg_ref.compressed_form);
        LDKPublicKey delayed_payment_basepoint_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, delayed_payment_basepoint_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, delayed_payment_basepoint_arg, 0, 33, delayed_payment_basepoint_arg_ref.compressed_form);
        LDKPublicKey htlc_basepoint_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, htlc_basepoint_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, htlc_basepoint_arg, 0, 33, htlc_basepoint_arg_ref.compressed_form);
        LDKChannelPublicKeys ret = ChannelPublicKeys_new(funding_pubkey_arg_ref, revocation_basepoint_arg_ref, payment_point_arg_ref, delayed_payment_basepoint_arg_ref, htlc_basepoint_arg_ref);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
@@ -10164,14 +10349,19 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1read(JNIEn
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1derive_1new(JNIEnv * _env, jclass _b, jbyteArray per_commitment_point, jbyteArray broadcaster_delayed_payment_base, jbyteArray broadcaster_htlc_base, jbyteArray countersignatory_revocation_base, jbyteArray countersignatory_htlc_base) {
        LDKPublicKey per_commitment_point_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, per_commitment_point) == 33);
        (*_env)->GetByteArrayRegion (_env, per_commitment_point, 0, 33, per_commitment_point_ref.compressed_form);
        LDKPublicKey broadcaster_delayed_payment_base_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, broadcaster_delayed_payment_base) == 33);
        (*_env)->GetByteArrayRegion (_env, broadcaster_delayed_payment_base, 0, 33, broadcaster_delayed_payment_base_ref.compressed_form);
        LDKPublicKey broadcaster_htlc_base_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, broadcaster_htlc_base) == 33);
        (*_env)->GetByteArrayRegion (_env, broadcaster_htlc_base, 0, 33, broadcaster_htlc_base_ref.compressed_form);
        LDKPublicKey countersignatory_revocation_base_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, countersignatory_revocation_base) == 33);
        (*_env)->GetByteArrayRegion (_env, countersignatory_revocation_base, 0, 33, countersignatory_revocation_base_ref.compressed_form);
        LDKPublicKey countersignatory_htlc_base_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, countersignatory_htlc_base) == 33);
        (*_env)->GetByteArrayRegion (_env, countersignatory_htlc_base, 0, 33, countersignatory_htlc_base_ref.compressed_form);
        LDKCResult_TxCreationKeysSecpErrorZ* ret = MALLOC(sizeof(LDKCResult_TxCreationKeysSecpErrorZ), "LDKCResult_TxCreationKeysSecpErrorZ");
        *ret = TxCreationKeys_derive_new(per_commitment_point_ref, broadcaster_delayed_payment_base_ref, broadcaster_htlc_base_ref, countersignatory_revocation_base_ref, countersignatory_htlc_base_ref);
@@ -10180,8 +10370,10 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1derive_1new(J
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_get_1revokeable_1redeemscript(JNIEnv * _env, jclass _b, jbyteArray revocation_key, jshort contest_delay, jbyteArray broadcaster_delayed_payment_key) {
        LDKPublicKey revocation_key_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, revocation_key) == 33);
        (*_env)->GetByteArrayRegion (_env, revocation_key, 0, 33, revocation_key_ref.compressed_form);
        LDKPublicKey broadcaster_delayed_payment_key_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, broadcaster_delayed_payment_key) == 33);
        (*_env)->GetByteArrayRegion (_env, broadcaster_delayed_payment_key, 0, 33, broadcaster_delayed_payment_key_ref.compressed_form);
        LDKCVec_u8Z* ret = MALLOC(sizeof(LDKCVec_u8Z), "LDKCVec_u8Z");
        *ret = get_revokeable_redeemscript(revocation_key_ref, contest_delay, broadcaster_delayed_payment_key_ref);
@@ -10259,6 +10451,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1set_1p
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return HTLCOutputInCommitment_set_payment_hash(&this_ptr_conv, val_ref);
 }
@@ -10292,8 +10485,10 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_get_1htlc_1redeemscript(JNIEn
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_make_1funding_1redeemscript(JNIEnv * _env, jclass _b, jbyteArray broadcaster, jbyteArray countersignatory) {
        LDKPublicKey broadcaster_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, broadcaster) == 33);
        (*_env)->GetByteArrayRegion (_env, broadcaster, 0, 33, broadcaster_ref.compressed_form);
        LDKPublicKey countersignatory_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, countersignatory) == 33);
        (*_env)->GetByteArrayRegion (_env, countersignatory, 0, 33, countersignatory_ref.compressed_form);
        LDKCVec_u8Z* ret = MALLOC(sizeof(LDKCVec_u8Z), "LDKCVec_u8Z");
        *ret = make_funding_redeemscript(broadcaster_ref, countersignatory_ref);
@@ -10302,14 +10497,17 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_make_1funding_1redeemscript(J
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_build_1htlc_1transaction(JNIEnv * _env, jclass _b, jbyteArray prev_hash, jint feerate_per_kw, jshort contest_delay, jlong htlc, jbyteArray broadcaster_delayed_payment_key, jbyteArray revocation_key) {
        unsigned char prev_hash_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, prev_hash) == 32);
        (*_env)->GetByteArrayRegion (_env, prev_hash, 0, 32, prev_hash_arr);
        unsigned char (*prev_hash_ref)[32] = &prev_hash_arr;
        LDKHTLCOutputInCommitment htlc_conv;
        htlc_conv.inner = (void*)(htlc & (~1));
        htlc_conv.is_owned = (htlc & 1) || (htlc == 0);
        LDKPublicKey broadcaster_delayed_payment_key_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, broadcaster_delayed_payment_key) == 33);
        (*_env)->GetByteArrayRegion (_env, broadcaster_delayed_payment_key, 0, 33, broadcaster_delayed_payment_key_ref.compressed_form);
        LDKPublicKey revocation_key_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, revocation_key) == 33);
        (*_env)->GetByteArrayRegion (_env, revocation_key, 0, 33, revocation_key_ref.compressed_form);
        LDKTransaction* ret = MALLOC(sizeof(LDKTransaction), "LDKTransaction");
        *ret = build_htlc_transaction(prev_hash_ref, feerate_per_kw, contest_delay, &htlc_conv, broadcaster_delayed_payment_key_ref, revocation_key_ref);
@@ -10349,22 +10547,23 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1s
        return HolderCommitmentTransaction_set_unsigned_tx(&this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1get_1counterparty_1sig(JNIEnv * _env, jclass _b, jlong this_ptr) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1get_1counterparty_1sig(JNIEnv * _env, jclass _b, jlong this_ptr) {
        LDKHolderCommitmentTransaction this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = HolderCommitmentTransaction_get_counterparty_sig(&this_ptr_conv);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, HolderCommitmentTransaction_get_counterparty_sig(&this_ptr_conv).compact_form);
+       return arg_arr;
 }
 
-JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1set_1counterparty_1sig(JNIEnv * _env, jclass _b, jlong this_ptr, jlong val) {
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1set_1counterparty_1sig(JNIEnv * _env, jclass _b, jlong this_ptr, jbyteArray val) {
        LDKHolderCommitmentTransaction this_ptr_conv;
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
-       LDKSignature val_conv = *(LDKSignature*)val;
-       FREE((void*)val);
-       return HolderCommitmentTransaction_set_counterparty_sig(&this_ptr_conv, val_conv);
+       LDKSignature val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 64);
+       (*_env)->GetByteArrayRegion (_env, val, 0, 64, val_ref.compact_form);
+       return HolderCommitmentTransaction_set_counterparty_sig(&this_ptr_conv, val_ref);
 }
 
 JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1get_1feerate_1per_1kw(JNIEnv * _env, jclass _b, jlong this_ptr) {
@@ -10390,14 +10589,17 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1s
        return HolderCommitmentTransaction_set_per_htlc(&this_ptr_conv, val_conv);
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1new_1missing_1holder_1sig(JNIEnv * _env, jclass _b, jlong unsigned_tx, jlong counterparty_sig, jbyteArray holder_funding_key, jbyteArray counterparty_funding_key, jlong keys, jint feerate_per_kw, jlong htlc_data) {
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1new_1missing_1holder_1sig(JNIEnv * _env, jclass _b, jlong unsigned_tx, jbyteArray counterparty_sig, jbyteArray holder_funding_key, jbyteArray counterparty_funding_key, jlong keys, jint feerate_per_kw, jlong htlc_data) {
        LDKTransaction unsigned_tx_conv = *(LDKTransaction*)unsigned_tx;
        FREE((void*)unsigned_tx);
-       LDKSignature counterparty_sig_conv = *(LDKSignature*)counterparty_sig;
-       FREE((void*)counterparty_sig);
+       LDKSignature counterparty_sig_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, counterparty_sig) == 64);
+       (*_env)->GetByteArrayRegion (_env, counterparty_sig, 0, 64, counterparty_sig_ref.compact_form);
        LDKPublicKey holder_funding_key_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, holder_funding_key) == 33);
        (*_env)->GetByteArrayRegion (_env, holder_funding_key, 0, 33, holder_funding_key_ref.compressed_form);
        LDKPublicKey counterparty_funding_key_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, counterparty_funding_key) == 33);
        (*_env)->GetByteArrayRegion (_env, counterparty_funding_key, 0, 33, counterparty_funding_key_ref.compressed_form);
        LDKTxCreationKeys keys_conv;
        keys_conv.inner = (void*)(keys & (~1));
@@ -10406,7 +10608,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1
                keys_conv = TxCreationKeys_clone(&keys_conv);
        LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ htlc_data_conv = *(LDKCVec_C2Tuple_HTLCOutputInCommitmentSignatureZZ*)htlc_data;
        FREE((void*)htlc_data);
-       LDKHolderCommitmentTransaction ret = HolderCommitmentTransaction_new_missing_holder_sig(unsigned_tx_conv, counterparty_sig_conv, holder_funding_key_ref, counterparty_funding_key_ref, keys_conv, feerate_per_kw, htlc_data_conv);
+       LDKHolderCommitmentTransaction ret = HolderCommitmentTransaction_new_missing_holder_sig(unsigned_tx_conv, counterparty_sig_ref, holder_funding_key_ref, counterparty_funding_key_ref, keys_conv, feerate_per_kw, htlc_data_conv);
        return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
 }
 
@@ -10427,17 +10629,18 @@ JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransact
        return arg_arr;
 }
 
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1get_1holder_1sig(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray funding_key, jlong funding_redeemscript, jlong channel_value_satoshis) {
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1get_1holder_1sig(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray funding_key, jlong funding_redeemscript, jlong channel_value_satoshis) {
        LDKHolderCommitmentTransaction this_arg_conv;
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        unsigned char funding_key_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, funding_key) == 32);
        (*_env)->GetByteArrayRegion (_env, funding_key, 0, 32, funding_key_arr);
        unsigned char (*funding_key_ref)[32] = &funding_key_arr;
        LDKu8slice funding_redeemscript_conv = *(LDKu8slice*)funding_redeemscript;
-       LDKSignature* ret = MALLOC(sizeof(LDKSignature), "LDKSignature");
-       *ret = HolderCommitmentTransaction_get_holder_sig(&this_arg_conv, funding_key_ref, funding_redeemscript_conv, channel_value_satoshis);
-       return (long)ret;
+       jbyteArray arg_arr = (*_env)->NewByteArray(_env, 64);
+       (*_env)->SetByteArrayRegion(_env, arg_arr, 0, 64, HolderCommitmentTransaction_get_holder_sig(&this_arg_conv, funding_key_ref, funding_redeemscript_conv, channel_value_satoshis).compact_form);
+       return arg_arr;
 }
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1get_1htlc_1sigs(JNIEnv * _env, jclass _b, jlong this_arg, jbyteArray htlc_base_key, jshort counterparty_selected_contest_delay) {
@@ -10445,6 +10648,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1
        this_arg_conv.inner = (void*)(this_arg & (~1));
        this_arg_conv.is_owned = (this_arg & 1) || (this_arg == 0);
        unsigned char htlc_base_key_arr[32];
+       DO_ASSERT((*_env)->GetArrayLength (_env, htlc_base_key) == 32);
        (*_env)->GetByteArrayRegion (_env, htlc_base_key, 0, 32, htlc_base_key_arr);
        unsigned char (*htlc_base_key_ref)[32] = &htlc_base_key_arr;
        LDKCResult_CVec_SignatureZNoneZ* ret = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ");
@@ -10517,6 +10721,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1set_1pubkey(JNIEnv *
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return RouteHop_set_pubkey(&this_ptr_conv, val_ref);
 }
@@ -10601,6 +10806,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1set_1cltv_1expiry_1d
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHop_1new(JNIEnv * _env, jclass _b, jbyteArray pubkey_arg, jlong node_features_arg, jlong short_channel_id_arg, jlong channel_features_arg, jlong fee_msat_arg, jint cltv_expiry_delta_arg) {
        LDKPublicKey pubkey_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, pubkey_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, pubkey_arg, 0, 33, pubkey_arg_ref.compressed_form);
        LDKNodeFeatures node_features_arg_conv;
        node_features_arg_conv.inner = (void*)(node_features_arg & (~1));
@@ -10679,6 +10885,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1set_1src_1node_1id(
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return RouteHint_set_src_node_id(&this_ptr_conv, val_ref);
 }
@@ -10747,6 +10954,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1set_1htlc_1minimum_
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1new(JNIEnv * _env, jclass _b, jbyteArray src_node_id_arg, jlong short_channel_id_arg, jlong fees_arg, jshort cltv_expiry_delta_arg, jlong htlc_minimum_msat_arg) {
        LDKPublicKey src_node_id_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, src_node_id_arg) == 33);
        (*_env)->GetByteArrayRegion (_env, src_node_id_arg, 0, 33, src_node_id_arg_ref.compressed_form);
        LDKRoutingFees fees_arg_conv;
        fees_arg_conv.inner = (void*)(fees_arg & (~1));
@@ -10759,11 +10967,13 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1new(JNIEnv * _env,
 
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_get_1route(JNIEnv * _env, jclass _b, jbyteArray our_node_id, jlong network, jbyteArray target, jlong first_hops, jlong last_hops, jlong final_value_msat, jint final_cltv, jlong logger) {
        LDKPublicKey our_node_id_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, our_node_id) == 33);
        (*_env)->GetByteArrayRegion (_env, our_node_id, 0, 33, our_node_id_ref.compressed_form);
        LDKNetworkGraph network_conv;
        network_conv.inner = (void*)(network & (~1));
        network_conv.is_owned = (network & 1) || (network == 0);
        LDKPublicKey target_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, target) == 33);
        (*_env)->GetByteArrayRegion (_env, target, 0, 33, target_ref.compressed_form);
        LDKCVec_ChannelDetailsZ* first_hops_conv = (LDKCVec_ChannelDetailsZ*)first_hops;
        LDKCVec_RouteHintZ last_hops_conv = *(LDKCVec_RouteHintZ*)last_hops;
@@ -10986,6 +11196,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1set_1node_1one(JN
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return ChannelInfo_set_node_one(&this_ptr_conv, val_ref);
 }
@@ -11022,6 +11233,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1set_1node_1two(JN
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKPublicKey val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 33);
        (*_env)->GetByteArrayRegion (_env, val, 0, 33, val_ref.compressed_form);
        return ChannelInfo_set_node_two(&this_ptr_conv, val_ref);
 }
@@ -11213,6 +11425,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1set_1ali
        this_ptr_conv.inner = (void*)(this_ptr & (~1));
        this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
        LDKThirtyTwoBytes val_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, val) == 32);
        (*_env)->GetByteArrayRegion (_env, val, 0, 32, val_ref.data);
        return NodeAnnouncementInfo_set_alias(&this_ptr_conv, val_ref);
 }
@@ -11253,6 +11466,7 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1new(JNI
        LDKThreeBytes rgb_arg_conv = *(LDKThreeBytes*)rgb_arg;
        FREE((void*)rgb_arg);
        LDKThirtyTwoBytes alias_arg_ref;
+       DO_ASSERT((*_env)->GetArrayLength (_env, alias_arg) == 32);
        (*_env)->GetByteArrayRegion (_env, alias_arg, 0, 32, alias_arg_ref.data);
        LDKCVec_NetAddressZ addresses_arg_conv = *(LDKCVec_NetAddressZ*)addresses_arg;
        FREE((void*)addresses_arg);
index 452366946cd0bfabbf89d3d0e7aedc00cd5e9bb5..8fcce85b60d9c4d44ce274a9832ee576071545f4 100644 (file)
@@ -191,21 +191,13 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2TupleTempl_1u64_1_1u64_1
 JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKCVecTempl_1Signature_1arr_1info
   (JNIEnv *, jclass, jlong);
 
-/*
- * Class:     org_ldk_impl_bindings
- * Method:    LDKCVecTempl_Signature_new
- * Signature: ([J)J
- */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVecTempl_1Signature_1new
-  (JNIEnv *, jclass, jlongArray);
-
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    LDKC2TupleTempl_Signature__CVecTempl_Signature_new
- * Signature: (JJ)J
+ * Signature: ([BJ)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2TupleTempl_1Signature_1_1CVecTempl_1Signature_1new
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jbyteArray, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -322,10 +314,10 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErr
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    LDKC2TupleTempl_HTLCOutputInCommitment__Signature_new
- * Signature: (JJ)J
+ * Signature: (J[B)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2TupleTempl_1HTLCOutputInCommitment_1_1Signature_1new
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -1786,10 +1778,10 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1SignatureNoneZ_1free
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    CResult_SignatureNoneZ_ok
- * Signature: (J)J
+ * Signature: ([B)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SignatureNoneZ_1ok
-  (JNIEnv *, jclass, jlong);
+  (JNIEnv *, jclass, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -2162,10 +2154,10 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1new
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    C2Tuple_SignatureCVec_SignatureZZ_new
- * Signature: (JJ)J
+ * Signature: ([BJ)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1new
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jbyteArray, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -2226,10 +2218,10 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    C2Tuple_HTLCOutputInCommitmentSignatureZ_new
- * Signature: (JJ)J
+ * Signature: (J[B)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1HTLCOutputInCommitmentSignatureZ_1new
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -4490,26 +4482,26 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1funding_1
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    FundingCreated_get_signature
- * Signature: (J)J
+ * Signature: (J)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1get_1signature
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_FundingCreated_1get_1signature
   (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    FundingCreated_set_signature
- * Signature: (JJ)V
+ * Signature: (J[B)V
  */
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1set_1signature
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    FundingCreated_new
- * Signature: ([B[BSJ)J
+ * Signature: ([B[BS[B)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1new
-  (JNIEnv *, jclass, jbyteArray, jbyteArray, jshort, jlong);
+  (JNIEnv *, jclass, jbyteArray, jbyteArray, jshort, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -4546,26 +4538,26 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1set_1channel_1i
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    FundingSigned_get_signature
- * Signature: (J)J
+ * Signature: (J)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1get_1signature
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_FundingSigned_1get_1signature
   (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    FundingSigned_set_signature
- * Signature: (JJ)V
+ * Signature: (J[B)V
  */
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1set_1signature
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    FundingSigned_new
- * Signature: ([BJ)J
+ * Signature: ([B[B)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1new
-  (JNIEnv *, jclass, jbyteArray, jlong);
+  (JNIEnv *, jclass, jbyteArray, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -4730,26 +4722,26 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1set_1fee_1satos
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ClosingSigned_get_signature
- * Signature: (J)J
+ * Signature: (J)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1get_1signature
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1get_1signature
   (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ClosingSigned_set_signature
- * Signature: (JJ)V
+ * Signature: (J[B)V
  */
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1set_1signature
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ClosingSigned_new
- * Signature: ([BJJ)J
+ * Signature: ([BJ[B)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1new
-  (JNIEnv *, jclass, jbyteArray, jlong, jlong);
+  (JNIEnv *, jclass, jbyteArray, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -5066,18 +5058,18 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1channel
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    CommitmentSigned_get_signature
- * Signature: (J)J
+ * Signature: (J)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1get_1signature
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1get_1signature
   (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    CommitmentSigned_set_signature
- * Signature: (JJ)V
+ * Signature: (J[B)V
  */
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1signature
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -5090,10 +5082,10 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1set_1htlc_1s
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    CommitmentSigned_new
- * Signature: ([BJJ)J
+ * Signature: ([B[BJ)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1new
-  (JNIEnv *, jclass, jbyteArray, jlong, jlong);
+  (JNIEnv *, jclass, jbyteArray, jbyteArray, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -5394,42 +5386,42 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1s
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    AnnouncementSignatures_get_node_signature
- * Signature: (J)J
+ * Signature: (J)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1node_1signature
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1node_1signature
   (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    AnnouncementSignatures_set_node_signature
- * Signature: (JJ)V
+ * Signature: (J[B)V
  */
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1node_1signature
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    AnnouncementSignatures_get_bitcoin_signature
- * Signature: (J)J
+ * Signature: (J)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1bitcoin_1signature
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1bitcoin_1signature
   (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    AnnouncementSignatures_set_bitcoin_signature
- * Signature: (JJ)V
+ * Signature: (J[B)V
  */
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1bitcoin_1signature
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    AnnouncementSignatures_new
- * Signature: ([BJJJ)J
+ * Signature: ([BJ[B[B)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1new
-  (JNIEnv *, jclass, jbyteArray, jlong, jlong, jlong);
+  (JNIEnv *, jclass, jbyteArray, jlong, jbyteArray, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -5562,18 +5554,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1clone
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    NodeAnnouncement_get_signature
- * Signature: (J)J
+ * Signature: (J)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1get_1signature
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1get_1signature
   (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    NodeAnnouncement_set_signature
- * Signature: (JJ)V
+ * Signature: (J[B)V
  */
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1set_1signature
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -5594,10 +5586,10 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1set_1content
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    NodeAnnouncement_new
- * Signature: (JJ)J
+ * Signature: ([BJ)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1new
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jbyteArray, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -5746,66 +5738,66 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1clone
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ChannelAnnouncement_get_node_signature_1
- * Signature: (J)J
+ * Signature: (J)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1node_1signature_11
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1node_1signature_11
   (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ChannelAnnouncement_set_node_signature_1
- * Signature: (JJ)V
+ * Signature: (J[B)V
  */
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1node_1signature_11
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ChannelAnnouncement_get_node_signature_2
- * Signature: (J)J
+ * Signature: (J)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1node_1signature_12
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1node_1signature_12
   (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ChannelAnnouncement_set_node_signature_2
- * Signature: (JJ)V
+ * Signature: (J[B)V
  */
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1node_1signature_12
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ChannelAnnouncement_get_bitcoin_signature_1
- * Signature: (J)J
+ * Signature: (J)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1bitcoin_1signature_11
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1bitcoin_1signature_11
   (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ChannelAnnouncement_set_bitcoin_signature_1
- * Signature: (JJ)V
+ * Signature: (J[B)V
  */
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1bitcoin_1signature_11
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ChannelAnnouncement_get_bitcoin_signature_2
- * Signature: (J)J
+ * Signature: (J)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1bitcoin_1signature_12
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1bitcoin_1signature_12
   (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ChannelAnnouncement_set_bitcoin_signature_2
- * Signature: (JJ)V
+ * Signature: (J[B)V
  */
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1bitcoin_1signature_12
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -5826,10 +5818,10 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1set_1cont
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ChannelAnnouncement_new
- * Signature: (JJJJJ)J
+ * Signature: ([B[B[B[BJ)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1new
-  (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jlong);
+  (JNIEnv *, jclass, jbyteArray, jbyteArray, jbyteArray, jbyteArray, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -5994,18 +5986,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1clone
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ChannelUpdate_get_signature
- * Signature: (J)J
+ * Signature: (J)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1get_1signature
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1get_1signature
   (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ChannelUpdate_set_signature
- * Signature: (JJ)V
+ * Signature: (J[B)V
  */
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1set_1signature
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -6026,10 +6018,10 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1set_1contents
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    ChannelUpdate_new
- * Signature: (JJ)J
+ * Signature: ([BJ)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1new
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jbyteArray, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -7690,18 +7682,18 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1s
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    HolderCommitmentTransaction_get_counterparty_sig
- * Signature: (J)J
+ * Signature: (J)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1get_1counterparty_1sig
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1get_1counterparty_1sig
   (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    HolderCommitmentTransaction_set_counterparty_sig
- * Signature: (JJ)V
+ * Signature: (J[B)V
  */
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1set_1counterparty_1sig
-  (JNIEnv *, jclass, jlong, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -7730,10 +7722,10 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1s
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    HolderCommitmentTransaction_new_missing_holder_sig
- * Signature: (JJ[B[BJIJ)J
+ * Signature: (J[B[B[BJIJ)J
  */
 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1new_1missing_1holder_1sig
-  (JNIEnv *, jclass, jlong, jlong, jbyteArray, jbyteArray, jlong, jint, jlong);
+  (JNIEnv *, jclass, jlong, jbyteArray, jbyteArray, jbyteArray, jlong, jint, jlong);
 
 /*
  * Class:     org_ldk_impl_bindings
@@ -7754,9 +7746,9 @@ JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransact
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    HolderCommitmentTransaction_get_holder_sig
- * Signature: (J[BJJ)J
+ * Signature: (J[BJJ)[B
  */
-JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1get_1holder_1sig
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1get_1holder_1sig
   (JNIEnv *, jclass, jlong, jbyteArray, jlong, jlong);
 
 /*
index f408b500b770a3021a0fe4c0ed09fa2f739fc20c..1b4c106b11e4316a8e052beb37f5f8b5d569843b 100644 (file)
@@ -99,7 +99,7 @@ public class HumanObjectPeerTest {
         }
 
         void connect_block(Block b, Transaction t, int height) {
-            byte[] header = b.bitcoinSerialize();
+            byte[] header = Arrays.copyOfRange(b.bitcoinSerialize(), 0, 80);
             long txn;
             if (t != null)
                 txn = bindings.LDKCVecTempl_C2TupleTempl_usize__Transaction_new(
index 8f4bee743e35b8b839eedba67dbdddab647615bc..e39bc079d89d40a400e5bda3f568c3e376f4d43c 100644 (file)
@@ -103,7 +103,7 @@ public class PeerTest {
         }
 
         void connect_block(Block b, Transaction t, int height) {
-            byte[] header = b.bitcoinSerialize();
+            byte[] header = Arrays.copyOfRange(b.bitcoinSerialize(), 0, 80);
             long txn;
             if (t != null)
                 txn = bindings.LDKCVecTempl_C2TupleTempl_usize__Transaction_new(