@@ -82,9 +82,11 @@ static Event get_event(ChannelManager manager) {
8282
8383 class TestRouter : RouterInterface , MessageRouterInterface {
8484 DefaultRouter inner ;
85+ DefaultMessageRouter inner_msg ;
8586 EntropySource entropy ;
86- public TestRouter ( DefaultRouter inner , EntropySource entropy ) {
87+ public TestRouter ( DefaultRouter inner , DefaultMessageRouter inner_msg , EntropySource entropy ) {
8788 this . inner = inner ;
89+ this . inner_msg = inner_msg ;
8890 this . entropy = entropy ;
8991 }
9092 public Result_RouteLightningErrorZ find_route ( byte [ ] payer , RouteParameters param , ChannelDetails [ ] chans , InFlightHtlcs htlcs ) {
@@ -102,7 +104,7 @@ public Result_CVec_BlindedPaymentPathZNoneZ create_blinded_payment_paths(byte[]
102104 }
103105
104106 public Result_OnionMessagePathNoneZ find_path ( byte [ ] sender , byte [ ] [ ] peers , Destination dest ) {
105- return inner . as_MessageRouter ( ) . find_path ( sender , peers , dest ) ;
107+ return inner_msg . as_MessageRouter ( ) . find_path ( sender , peers , dest ) ;
106108 }
107109 public Result_CVec_BlindedMessagePathZNoneZ create_blinded_paths ( byte [ ] recipient , MessageContext ctx , byte [ ] [ ] peers ) {
108110 Result_BlindedMessagePathNoneZ path = BlindedMessagePath . one_hop ( recipient , ctx , entropy ) ;
@@ -143,15 +145,17 @@ public Node(byte seed) {
143145 scorer = MultiThreadedLockableScore . of ( ProbabilisticScorer . of ( ProbabilisticScoringDecayParameters . with_default ( ) , graph , logger ) . as_Score ( ) ) ;
144146
145147 DefaultRouter router_impl = DefaultRouter . of ( graph , logger , keys . as_EntropySource ( ) , scorer . as_LockableScore ( ) , ProbabilisticScoringFeeParameters . with_default ( ) ) ;
146- TestRouter router_wrapper = new TestRouter ( router_impl , keys . as_EntropySource ( ) ) ;
147- router = Router . new_impl ( router_wrapper , router_wrapper ) ;
148+ DefaultMessageRouter msg_router_impl = DefaultMessageRouter . of ( graph , keys . as_EntropySource ( ) ) ;
149+ TestRouter router_wrapper = new TestRouter ( router_impl , msg_router_impl , keys . as_EntropySource ( ) ) ;
150+ router = Router . new_impl ( router_wrapper ) ;
151+ MessageRouter msg_router = MessageRouter . new_impl ( router_wrapper ) ;
148152
149153 UserConfig config = UserConfig . with_default ( ) ;
150154 config . set_manually_accept_inbound_channels ( true ) ;
151155
152- manager = ChannelManager . of ( estimator , chain_monitor . as_Watch ( ) , ldk_broadcaster , router , logger , keys . as_EntropySource ( ) , keys . as_NodeSigner ( ) , keys . as_SignerProvider ( ) , config , chain_params , 42 ) ;
156+ manager = ChannelManager . of ( estimator , chain_monitor . as_Watch ( ) , ldk_broadcaster , router , msg_router , logger , keys . as_EntropySource ( ) , keys . as_NodeSigner ( ) , keys . as_SignerProvider ( ) , config , chain_params , 42 ) ;
153157
154- messenger = OnionMessenger . of ( keys . as_EntropySource ( ) , keys . as_NodeSigner ( ) , logger , manager . as_NodeIdLookUp ( ) , MessageRouter . new_impl ( router_wrapper ) , manager . as_OffersMessageHandler ( ) , IgnoringMessageHandler . of ( ) . as_AsyncPaymentsMessageHandler ( ) , IgnoringMessageHandler . of ( ) . as_CustomOnionMessageHandler ( ) ) ;
158+ messenger = OnionMessenger . of ( keys . as_EntropySource ( ) , keys . as_NodeSigner ( ) , logger , manager . as_NodeIdLookUp ( ) , MessageRouter . new_impl ( router_wrapper ) , manager . as_OffersMessageHandler ( ) , IgnoringMessageHandler . of ( ) . as_AsyncPaymentsMessageHandler ( ) , manager . as_DNSResolverMessageHandler ( ) , IgnoringMessageHandler . of ( ) . as_CustomOnionMessageHandler ( ) ) ;
155159 }
156160 }
157161
@@ -341,7 +345,7 @@ static void Bolt12ParseTest() {
341345 Result_OfferBolt12ParseErrorZ offer_res = Offer . from_str ( offerStr ) ;
342346 Assert ( offer_res . is_ok ( ) , 100 ) ;
343347 Offer offer = ( ( Result_OfferBolt12ParseErrorZ . Result_OfferBolt12ParseErrorZ_OK ) offer_res ) . res ;
344- Assert ( BitConverter . ToString ( offer . signing_pubkey ( ) ) . Replace ( "-" , "" ) . ToLower ( ) == expectedPubkey , 101 ) ;
348+ Assert ( BitConverter . ToString ( offer . issuer_signing_pubkey ( ) ) . Replace ( "-" , "" ) . ToLower ( ) == expectedPubkey , 101 ) ;
345349 Assert ( offer . description ( ) . get_a ( ) == expectedDescription , 102 ) ;
346350 Assert ( offer . issuer ( ) == null , 103 ) ;
347351 Assert ( ! offer . is_expired ( ) , 104 ) ;
@@ -355,29 +359,29 @@ static void Bolt12ParseTest() {
355359 static Offer BuildOffer ( Nonce nonce , KeysManager keys ) {
356360 Result_PublicKeyNoneZ id_res = keys . as_NodeSigner ( ) . get_node_id ( Recipient . LDKRecipient_Node ) ;
357361 byte [ ] node_id = ( ( Result_PublicKeyNoneZ . Result_PublicKeyNoneZ_OK ) id_res ) . res ;
358- ExpandedKey inb_key = ExpandedKey . of ( keys . as_NodeSigner ( ) . get_inbound_payment_key_material ( ) ) ;
362+ ExpandedKey inb_key = keys . as_NodeSigner ( ) . get_inbound_payment_key ( ) ;
359363 OfferWithDerivedMetadataBuilder builder = OfferWithDerivedMetadataBuilder . deriving_signing_pubkey ( node_id , inb_key , nonce ) ;
360364 Result_OfferBolt12SemanticErrorZ res = builder . build ( ) ;
361365 return ( ( Result_OfferBolt12SemanticErrorZ . Result_OfferBolt12SemanticErrorZ_OK ) res ) . res ;
362366 }
363367
364- static InvoiceRequestWithDerivedPayerIdBuilder InvReqBuilderFromOffer ( Offer offer , KeysManager keys ) {
365- ExpandedKey inb_key = ExpandedKey . of ( keys . as_NodeSigner ( ) . get_inbound_payment_key_material ( ) ) ;
368+ static InvoiceRequestWithDerivedPayerSigningPubkeyBuilder InvReqBuilderFromOffer ( Offer offer , KeysManager keys ) {
369+ ExpandedKey inb_key = keys . as_NodeSigner ( ) . get_inbound_payment_key ( ) ;
366370 Nonce nonce = Nonce . from_entropy_source ( keys . as_EntropySource ( ) ) ;
367- Result_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ builder_res =
368- offer . request_invoice_deriving_payer_id ( inb_key , nonce , new byte [ 32 ] ) ;
369- InvoiceRequestWithDerivedPayerIdBuilder builder =
370- ( ( Result_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ . Result_InvoiceRequestWithDerivedPayerIdBuilderBolt12SemanticErrorZ_OK ) builder_res ) . res ;
371+ Result_InvoiceRequestWithDerivedPayerSigningPubkeyBuilderBolt12SemanticErrorZ builder_res =
372+ offer . request_invoice ( inb_key , nonce , new byte [ 32 ] ) ;
373+ InvoiceRequestWithDerivedPayerSigningPubkeyBuilder builder =
374+ ( ( Result_InvoiceRequestWithDerivedPayerSigningPubkeyBuilderBolt12SemanticErrorZ . Result_InvoiceRequestWithDerivedPayerSigningPubkeyBuilderBolt12SemanticErrorZ_OK ) builder_res ) . res ;
371375 return builder ;
372376 }
373377
374- static InvoiceRequest BuildInvReq ( InvoiceRequestWithDerivedPayerIdBuilder builder ) {
378+ static InvoiceRequest BuildInvReq ( InvoiceRequestWithDerivedPayerSigningPubkeyBuilder builder ) {
375379 Result_InvoiceRequestBolt12SemanticErrorZ res = builder . build_and_sign ( ) ;
376380 return ( ( Result_InvoiceRequestBolt12SemanticErrorZ . Result_InvoiceRequestBolt12SemanticErrorZ_OK ) res ) . res ;
377381 }
378382
379383 static InvoiceWithDerivedSigningPubkeyBuilder InvBuilderFromInvReq ( Nonce receiver_nonce , InvoiceRequest invreq , KeysManager keys ) {
380- ExpandedKey inb_key = ExpandedKey . of ( keys . as_NodeSigner ( ) . get_inbound_payment_key_material ( ) ) ;
384+ ExpandedKey inb_key = keys . as_NodeSigner ( ) . get_inbound_payment_key ( ) ;
381385 Result_VerifiedInvoiceRequestNoneZ verified_res = invreq . verify_using_recipient_data ( receiver_nonce , inb_key ) ;
382386 VerifiedInvoiceRequest verified_invreq =
383387 ( ( Result_VerifiedInvoiceRequestNoneZ . Result_VerifiedInvoiceRequestNoneZ_OK ) verified_res ) . res ;
@@ -388,15 +392,15 @@ static InvoiceWithDerivedSigningPubkeyBuilder InvBuilderFromInvReq(Nonce receive
388392 return builder ;
389393 }
390394
391- static InvoiceRequestWithDerivedPayerIdBuilder InvReqBuilder ( Nonce receiver_nonce , KeysManager payer , KeysManager recipient ) {
392- // Under the hood, InvoiceRequestWithDerivedPayerIdBuilder holds a reference to some
395+ static InvoiceRequestWithDerivedPayerSigningPubkeyBuilder InvReqBuilder ( Nonce receiver_nonce , KeysManager payer , KeysManager recipient ) {
396+ // Under the hood, InvoiceRequestWithDerivedPayerSigningPubkeyBuilder holds a reference to some
393397 // fields in the Offer. Thus, we build an Offer here, then return only the builder,
394398 // hoping the GC will cause us to free the Offer and use-after-free.
395399 Offer offer = BuildOffer ( receiver_nonce , payer ) ;
396400 return InvReqBuilderFromOffer ( offer , recipient ) ;
397401 }
398402
399- static InvoiceWithDerivedSigningPubkeyBuilder InvBuilderFromInvReqBuilder ( Nonce receiver_nonce , InvoiceRequestWithDerivedPayerIdBuilder builder , KeysManager payer , KeysManager recipient ) {
403+ static InvoiceWithDerivedSigningPubkeyBuilder InvBuilderFromInvReqBuilder ( Nonce receiver_nonce , InvoiceRequestWithDerivedPayerSigningPubkeyBuilder builder , KeysManager payer , KeysManager recipient ) {
400404 // Same as above, but for the Invoice itself
401405 InvoiceRequest invreq = BuildInvReq ( builder ) ;
402406 return InvBuilderFromInvReq ( receiver_nonce , invreq , recipient ) ;
@@ -413,7 +417,7 @@ static void Bolt12RespondTest() {
413417 // Run the GC between each step to see if the reference the builders hold to the
414418 // original Offer/InvoiceRequest is freed out from under us before building.
415419 Nonce receiver_nonce = Nonce . from_entropy_source ( receiver . as_EntropySource ( ) ) ;
416- InvoiceRequestWithDerivedPayerIdBuilder invreq_builder = InvReqBuilder ( receiver_nonce , sender , receiver ) ;
420+ InvoiceRequestWithDerivedPayerSigningPubkeyBuilder invreq_builder = InvReqBuilder ( receiver_nonce , sender , receiver ) ;
417421 System . GC . Collect ( ) ;
418422 GC . WaitForPendingFinalizers ( ) ;
419423 InvoiceWithDerivedSigningPubkeyBuilder inv_builder = InvBuilderFromInvReqBuilder ( receiver_nonce , invreq_builder , sender , receiver ) ;
0 commit comments