Skip to content

Commit 6bd1af4

Browse files
authored
Merge pull request #1057 from TheBlueMatt/2021-08-invoice-fails
Fix and modernize lightning-invoice API
2 parents a265f1e + 6879348 commit 6bd1af4

File tree

8 files changed

+447
-132
lines changed

8 files changed

+447
-132
lines changed

lightning-invoice/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ num-traits = "0.2.8"
1616
bitcoin_hashes = "0.10"
1717

1818
[dev-dependencies]
19+
hex = "0.3"
1920
lightning = { version = "0.0.100", path = "../lightning", features = ["_test_utils"] }

lightning-invoice/src/de.rs

+25-10
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ mod hrp_sm {
7777
} else if ['m', 'u', 'n', 'p'].contains(&read_symbol) {
7878
Ok(States::ParseAmountSiPrefix)
7979
} else {
80-
Err(super::ParseError::MalformedHRP)
80+
Err(super::ParseError::UnknownSiPrefix)
8181
}
8282
},
8383
States::ParseAmountSiPrefix => Err(super::ParseError::MalformedHRP),
@@ -209,10 +209,18 @@ impl FromStr for SiPrefix {
209209
/// ```
210210
/// use lightning_invoice::Invoice;
211211
///
212-
/// let invoice = "lnbc1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdp\
213-
/// l2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq8rkx3yf5tcsyz3d7\
214-
/// 3gafnh3cax9rn449d9p5uxz9ezhhypd0elx87sjle52x86fux2ypatgddc6k63n7erqz25le42c4u4ec\
215-
/// ky03ylcqca784w";
212+
///
213+
/// let invoice = "lnbc100p1psj9jhxdqud3jxktt5w46x7unfv9kz6mn0v3jsnp4q0d3p2sfluzdx45tqcs\
214+
/// h2pu5qc7lgq0xs578ngs6s0s68ua4h7cvspp5q6rmq35js88zp5dvwrv9m459tnk2zunwj5jalqtyxqulh0l\
215+
/// 5gflssp5nf55ny5gcrfl30xuhzj3nphgj27rstekmr9fw3ny5989s300gyus9qyysgqcqpcrzjqw2sxwe993\
216+
/// h5pcm4dxzpvttgza8zhkqxpgffcrf5v25nwpr3cmfg7z54kuqq8rgqqqqqqqq2qqqqq9qq9qrzjqd0ylaqcl\
217+
/// j9424x9m8h2vcukcgnm6s56xfgu3j78zyqzhgs4hlpzvznlugqq9vsqqqqqqqlgqqqqqeqq9qrzjqwldmj9d\
218+
/// ha74df76zhx6l9we0vjdquygcdt3kssupehe64g6yyp5yz5rhuqqwccqqyqqqqlgqqqqjcqq9qrzjqf9e58a\
219+
/// guqr0rcun0ajlvmzq3ek63cw2w282gv3z5uupmuwvgjtq2z55qsqqg6qqqyqqqrtnqqqzq3cqygrzjqvphms\
220+
/// ywntrrhqjcraumvc4y6r8v4z5v593trte429v4hredj7ms5z52usqq9ngqqqqqqqlgqqqqqqgq9qrzjq2v0v\
221+
/// p62g49p7569ev48cmulecsxe59lvaw3wlxm7r982zxa9zzj7z5l0cqqxusqqyqqqqlgqqqqqzsqygarl9fh3\
222+
/// 8s0gyuxjjgux34w75dnc6xp2l35j7es3jd4ugt3lu0xzre26yg5m7ke54n2d5sym4xcmxtl8238xxvw5h5h5\
223+
/// j5r6drg6k6zcqj0fcwg";
216224
///
217225
/// assert!(invoice.parse::<Invoice>().is_ok());
218226
/// ```
@@ -228,10 +236,17 @@ impl FromStr for Invoice {
228236
/// ```
229237
/// use lightning_invoice::*;
230238
///
231-
/// let invoice = "lnbc1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdp\
232-
/// l2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq8rkx3yf5tcsyz3d7\
233-
/// 3gafnh3cax9rn449d9p5uxz9ezhhypd0elx87sjle52x86fux2ypatgddc6k63n7erqz25le42c4u4ec\
234-
/// ky03ylcqca784w";
239+
/// let invoice = "lnbc100p1psj9jhxdqud3jxktt5w46x7unfv9kz6mn0v3jsnp4q0d3p2sfluzdx45tqcs\
240+
/// h2pu5qc7lgq0xs578ngs6s0s68ua4h7cvspp5q6rmq35js88zp5dvwrv9m459tnk2zunwj5jalqtyxqulh0l\
241+
/// 5gflssp5nf55ny5gcrfl30xuhzj3nphgj27rstekmr9fw3ny5989s300gyus9qyysgqcqpcrzjqw2sxwe993\
242+
/// h5pcm4dxzpvttgza8zhkqxpgffcrf5v25nwpr3cmfg7z54kuqq8rgqqqqqqqq2qqqqq9qq9qrzjqd0ylaqcl\
243+
/// j9424x9m8h2vcukcgnm6s56xfgu3j78zyqzhgs4hlpzvznlugqq9vsqqqqqqqlgqqqqqeqq9qrzjqwldmj9d\
244+
/// ha74df76zhx6l9we0vjdquygcdt3kssupehe64g6yyp5yz5rhuqqwccqqyqqqqlgqqqqjcqq9qrzjqf9e58a\
245+
/// guqr0rcun0ajlvmzq3ek63cw2w282gv3z5uupmuwvgjtq2z55qsqqg6qqqyqqqrtnqqqzq3cqygrzjqvphms\
246+
/// ywntrrhqjcraumvc4y6r8v4z5v593trte429v4hredj7ms5z52usqq9ngqqqqqqqlgqqqqqqgq9qrzjq2v0v\
247+
/// p62g49p7569ev48cmulecsxe59lvaw3wlxm7r982zxa9zzj7z5l0cqqxusqqyqqqqlgqqqqqzsqygarl9fh3\
248+
/// 8s0gyuxjjgux34w75dnc6xp2l35j7es3jd4ugt3lu0xzre26yg5m7ke54n2d5sym4xcmxtl8238xxvw5h5h5\
249+
/// j5r6drg6k6zcqj0fcwg";
235250
///
236251
/// let parsed_1 = invoice.parse::<Invoice>();
237252
///
@@ -404,7 +419,7 @@ fn parse_tagged_parts(data: &[u5]) -> Result<Vec<RawTaggedField>, ParseError> {
404419
Ok(field) => {
405420
parts.push(RawTaggedField::KnownSemantics(field))
406421
},
407-
Err(ParseError::Skip) => {
422+
Err(ParseError::Skip)|Err(ParseError::Bech32Error(bech32::Error::InvalidLength)) => {
408423
parts.push(RawTaggedField::UnknownSemantics(field.into()))
409424
},
410425
Err(e) => {return Err(e)}

0 commit comments

Comments
 (0)