Skip to content

Commit fc2320b

Browse files
committed
f - UnsignedBolt12Invoice impl for c_bindings
1 parent 75161f5 commit fc2320b

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9299,7 +9299,9 @@ where
92999299
builder.map(|b| b.into());
93009300
let response = builder.and_then(|builder| builder.allow_mpp().build())
93019301
.map_err(|e| OffersMessage::InvoiceError(e.into()))
9302-
.and_then(|invoice|
9302+
.and_then(|invoice| {
9303+
#[cfg(c_bindings)]
9304+
let mut invoice = invoice;
93039305
match invoice.sign(|invoice| self.node_signer.sign_bolt12_invoice(invoice)) {
93049306
Ok(invoice) => Ok(OffersMessage::Invoice(invoice)),
93059307
Err(SignError::Signing(())) => Err(OffersMessage::InvoiceError(
@@ -9308,7 +9310,8 @@ where
93089310
Err(SignError::Verification(_)) => Err(OffersMessage::InvoiceError(
93099311
InvoiceError::from_string("Failed invoice signature verification".to_string())
93109312
)),
9311-
});
9313+
}
9314+
});
93129315
match response {
93139316
Ok(invoice) => Some(invoice),
93149317
Err(error) => Some(error),

lightning/src/offers/invoice.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ macro_rules! invoice_derived_signing_pubkey_builder_methods { ($self: ident, $se
318318
#[cfg(not(c_bindings))]
319319
let unsigned_invoice = UnsignedBolt12Invoice::new(invreq_bytes, invoice);
320320
#[cfg(c_bindings)]
321-
let unsigned_invoice = UnsignedBolt12Invoice::new(invreq_bytes, invoice.clone());
321+
let mut unsigned_invoice = UnsignedBolt12Invoice::new(invreq_bytes, invoice.clone());
322322

323323
let invoice = unsigned_invoice
324324
.sign::<_, Infallible>(
@@ -545,18 +545,33 @@ macro_rules! unsigned_invoice_sign_method { ($self: ident, $self_type: ty $(, $s
545545
signature_tlv_stream.write(&mut $self.bytes).unwrap();
546546

547547
Ok(Bolt12Invoice {
548+
#[cfg(not(c_bindings))]
548549
bytes: $self.bytes,
550+
#[cfg(c_bindings)]
551+
bytes: $self.bytes.clone(),
552+
#[cfg(not(c_bindings))]
549553
contents: $self.contents,
554+
#[cfg(c_bindings)]
555+
contents: $self.contents.clone(),
550556
signature,
557+
#[cfg(not(c_bindings))]
551558
tagged_hash: $self.tagged_hash,
559+
#[cfg(c_bindings)]
560+
tagged_hash: $self.tagged_hash.clone(),
552561
})
553562
}
554563
} }
555564

565+
#[cfg(not(c_bindings))]
556566
impl UnsignedBolt12Invoice {
557567
unsigned_invoice_sign_method!(self, Self, mut);
558568
}
559569

570+
#[cfg(c_bindings)]
571+
impl UnsignedBolt12Invoice {
572+
unsigned_invoice_sign_method!(self, &mut Self);
573+
}
574+
560575
impl AsRef<TaggedHash> for UnsignedBolt12Invoice {
561576
fn as_ref(&self) -> &TaggedHash {
562577
&self.tagged_hash
@@ -1506,6 +1521,8 @@ mod tests {
15061521
},
15071522
}
15081523

1524+
#[cfg(c_bindings)]
1525+
let mut unsigned_invoice = unsigned_invoice;
15091526
let invoice = unsigned_invoice.sign(recipient_sign).unwrap();
15101527

15111528
let mut buffer = Vec::new();

0 commit comments

Comments
 (0)