@@ -144,6 +144,14 @@ impl<'a, 'b, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, ExplicitPayerI
144144 secp_ctx : None ,
145145 }
146146 }
147+
148+ /// Builds an unsigned [`InvoiceRequest`] after checking for valid semantics. It can be signed
149+ /// by [`UnsignedInvoiceRequest::sign`].
150+ pub fn build ( self ) -> Result < UnsignedInvoiceRequest , Bolt12SemanticError > {
151+ let ( unsigned_invoice_request, keys, _) = self . build_with_checks ( ) ?;
152+ debug_assert ! ( keys. is_none( ) ) ;
153+ Ok ( unsigned_invoice_request)
154+ }
147155}
148156
149157impl < ' a , ' b , T : secp256k1:: Signing > InvoiceRequestBuilder < ' a , ' b , DerivedPayerId , T > {
@@ -163,6 +171,21 @@ impl<'a, 'b, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, DerivedPayerId
163171 secp_ctx : Some ( secp_ctx) ,
164172 }
165173 }
174+
175+ /// Builds a signed [`InvoiceRequest`] after checking for valid semantics.
176+ pub fn build_and_sign ( self ) -> Result < InvoiceRequest , Bolt12SemanticError > {
177+ let ( unsigned_invoice_request, keys, secp_ctx) = self . build_with_checks ( ) ?;
178+ debug_assert ! ( keys. is_some( ) ) ;
179+
180+ let secp_ctx = secp_ctx. unwrap ( ) ;
181+ let keys = keys. unwrap ( ) ;
182+ let invoice_request = unsigned_invoice_request
183+ . sign :: < _ , Infallible > (
184+ |message| Ok ( secp_ctx. sign_schnorr_no_aux_rand ( message. as_ref ( ) . as_digest ( ) , & keys) )
185+ )
186+ . unwrap ( ) ;
187+ Ok ( invoice_request)
188+ }
166189}
167190
168191impl < ' a , ' b , P : PayerIdStrategy , T : secp256k1:: Signing > InvoiceRequestBuilder < ' a , ' b , P , T > {
@@ -301,33 +324,6 @@ impl<'a, 'b, P: PayerIdStrategy, T: secp256k1::Signing> InvoiceRequestBuilder<'a
301324 }
302325}
303326
304- impl < ' a , ' b , T : secp256k1:: Signing > InvoiceRequestBuilder < ' a , ' b , ExplicitPayerId , T > {
305- /// Builds an unsigned [`InvoiceRequest`] after checking for valid semantics. It can be signed
306- /// by [`UnsignedInvoiceRequest::sign`].
307- pub fn build ( self ) -> Result < UnsignedInvoiceRequest , Bolt12SemanticError > {
308- let ( unsigned_invoice_request, keys, _) = self . build_with_checks ( ) ?;
309- debug_assert ! ( keys. is_none( ) ) ;
310- Ok ( unsigned_invoice_request)
311- }
312- }
313-
314- impl < ' a , ' b , T : secp256k1:: Signing > InvoiceRequestBuilder < ' a , ' b , DerivedPayerId , T > {
315- /// Builds a signed [`InvoiceRequest`] after checking for valid semantics.
316- pub fn build_and_sign ( self ) -> Result < InvoiceRequest , Bolt12SemanticError > {
317- let ( unsigned_invoice_request, keys, secp_ctx) = self . build_with_checks ( ) ?;
318- debug_assert ! ( keys. is_some( ) ) ;
319-
320- let secp_ctx = secp_ctx. unwrap ( ) ;
321- let keys = keys. unwrap ( ) ;
322- let invoice_request = unsigned_invoice_request
323- . sign :: < _ , Infallible > (
324- |message| Ok ( secp_ctx. sign_schnorr_no_aux_rand ( message. as_ref ( ) . as_digest ( ) , & keys) )
325- )
326- . unwrap ( ) ;
327- Ok ( invoice_request)
328- }
329- }
330-
331327#[ cfg( test) ]
332328impl < ' a , ' b , P : PayerIdStrategy , T : secp256k1:: Signing > InvoiceRequestBuilder < ' a , ' b , P , T > {
333329 fn chain_unchecked ( mut self , network : Network ) -> Self {
0 commit comments