From 64d07558d97a59bf84e9e980bade2360d029f5ba Mon Sep 17 00:00:00 2001 From: Conner Fromknecht Date: Thu, 6 May 2021 09:18:42 -0700 Subject: [PATCH] lnrpc: set either payHash or setId depending on payreq type --- lnrpc/routerrpc/router_backend.go | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/lnrpc/routerrpc/router_backend.go b/lnrpc/routerrpc/router_backend.go index f6a70eba..49d60ad0 100644 --- a/lnrpc/routerrpc/router_backend.go +++ b/lnrpc/routerrpc/router_backend.go @@ -702,9 +702,31 @@ func (r *RouterBackend) extractIntentFromSendRequest( payIntent.MaxParts = 1 } - err = payIntent.SetPaymentHash(*payReq.PaymentHash) - if err != nil { - return nil, err + if payReq.Features.HasFeature(lnwire.AMPOptional) { + // Generate random SetID and root share. + var setID [32]byte + _, err = rand.Read(setID[:]) + if err != nil { + return nil, err + } + + var rootShare [32]byte + _, err = rand.Read(rootShare[:]) + if err != nil { + return nil, err + } + err := payIntent.SetAMP(&routing.AMPOptions{ + SetID: setID, + RootShare: rootShare, + }) + if err != nil { + return nil, err + } + } else { + err = payIntent.SetPaymentHash(*payReq.PaymentHash) + if err != nil { + return nil, err + } } destKey := payReq.Destination.SerializeCompressed()