Skip to content

Commit 4a69f58

Browse files
committed
Result from Bolt12Invoice::verify_using_payer_data
Use a Result return type instead of a bool when verifying a Bolt12Invoice. This way ignoring the result will produce a compiler warning.
1 parent 353b45f commit 4a69f58

File tree

4 files changed

+31
-17
lines changed

4 files changed

+31
-17
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4223,10 +4223,7 @@ where
42234223
invoice.verify_using_metadata(expanded_key, secp_ctx)
42244224
},
42254225
OffersContext::OutboundPayment { payment_id, nonce } => {
4226-
invoice
4227-
.verify_using_payer_data(*payment_id, *nonce, expanded_key, secp_ctx)
4228-
.then(|| *payment_id)
4229-
.ok_or(())
4226+
invoice.verify_using_payer_data(*payment_id, *nonce, expanded_key, secp_ctx)
42304227
},
42314228
_ => Err(()),
42324229
}

lightning/src/offers/invoice.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -790,12 +790,13 @@ impl Bolt12Invoice {
790790
/// sent through.
791791
pub fn verify_using_payer_data<T: secp256k1::Signing>(
792792
&self, payment_id: PaymentId, nonce: Nonce, key: &ExpandedKey, secp_ctx: &Secp256k1<T>
793-
) -> bool {
793+
) -> Result<PaymentId, ()> {
794794
let metadata = Metadata::payer_data(payment_id, nonce, key);
795-
match self.contents.verify(TlvStream::new(&self.bytes), &metadata, key, secp_ctx) {
796-
Ok(extracted_payment_id) => payment_id == extracted_payment_id,
797-
Err(()) => false,
798-
}
795+
self.contents.verify(TlvStream::new(&self.bytes), &metadata, key, secp_ctx)
796+
.and_then(|extracted_payment_id| (payment_id == extracted_payment_id)
797+
.then(|| payment_id)
798+
.ok_or(())
799+
)
799800
}
800801

801802
pub(crate) fn as_tlv_stream(&self) -> FullInvoiceTlvStreamRef {

lightning/src/offers/invoice_request.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1417,7 +1417,9 @@ mod tests {
14171417
Ok(payment_id) => assert_eq!(payment_id, PaymentId([1; 32])),
14181418
Err(()) => panic!("verification failed"),
14191419
}
1420-
assert!(!invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx));
1420+
assert!(
1421+
invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx).is_err()
1422+
);
14211423

14221424
// Fails verification with altered fields
14231425
let (
@@ -1488,7 +1490,9 @@ mod tests {
14881490
.build().unwrap()
14891491
.sign(recipient_sign).unwrap();
14901492
assert!(invoice.verify_using_metadata(&expanded_key, &secp_ctx).is_err());
1491-
assert!(invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx));
1493+
assert!(
1494+
invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx).is_ok()
1495+
);
14921496

14931497
// Fails verification with altered fields
14941498
let (
@@ -1511,7 +1515,9 @@ mod tests {
15111515
signature_tlv_stream.write(&mut encoded_invoice).unwrap();
15121516

15131517
let invoice = Bolt12Invoice::try_from(encoded_invoice).unwrap();
1514-
assert!(!invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx));
1518+
assert!(
1519+
invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx).is_err()
1520+
);
15151521

15161522
// Fails verification with altered payer id
15171523
let (
@@ -1534,7 +1540,9 @@ mod tests {
15341540
signature_tlv_stream.write(&mut encoded_invoice).unwrap();
15351541

15361542
let invoice = Bolt12Invoice::try_from(encoded_invoice).unwrap();
1537-
assert!(!invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx));
1543+
assert!(
1544+
invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx).is_err()
1545+
);
15381546
}
15391547

15401548
#[test]

lightning/src/offers/refund.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,7 +1049,9 @@ mod tests {
10491049
Ok(payment_id) => assert_eq!(payment_id, PaymentId([1; 32])),
10501050
Err(()) => panic!("verification failed"),
10511051
}
1052-
assert!(!invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx));
1052+
assert!(
1053+
invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx).is_err()
1054+
);
10531055

10541056
let mut tlv_stream = refund.as_tlv_stream();
10551057
tlv_stream.2.amount = Some(2000);
@@ -1111,7 +1113,9 @@ mod tests {
11111113
.build().unwrap()
11121114
.sign(recipient_sign).unwrap();
11131115
assert!(invoice.verify_using_metadata(&expanded_key, &secp_ctx).is_err());
1114-
assert!(invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx));
1116+
assert!(
1117+
invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx).is_ok()
1118+
);
11151119

11161120
// Fails verification with altered fields
11171121
let mut tlv_stream = refund.as_tlv_stream();
@@ -1125,7 +1129,9 @@ mod tests {
11251129
.unwrap()
11261130
.build().unwrap()
11271131
.sign(recipient_sign).unwrap();
1128-
assert!(!invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx));
1132+
assert!(
1133+
invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx).is_err()
1134+
);
11291135

11301136
// Fails verification with altered payer_id
11311137
let mut tlv_stream = refund.as_tlv_stream();
@@ -1140,7 +1146,9 @@ mod tests {
11401146
.unwrap()
11411147
.build().unwrap()
11421148
.sign(recipient_sign).unwrap();
1143-
assert!(!invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx));
1149+
assert!(
1150+
invoice.verify_using_payer_data(payment_id, nonce, &expanded_key, &secp_ctx).is_err()
1151+
);
11441152
}
11451153

11461154
#[test]

0 commit comments

Comments
 (0)