diff --git a/Cargo.toml b/Cargo.toml index bd471d6..e35ba0d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,8 +13,8 @@ license = "GPL-3.0-only" readme = "README.md" [dependencies] -base64 = { version = "0.21.0", features = ["std"], default-features = false } -bech32 = { version = "0.9.0", default-features = false } +base64 = { version = "0.22.0", features = ["std"], default-features = false } +bech32 = { version = "0.11.0", features = ["alloc"], default-features = false } hex = { version = "0.4.3", features = ["std", "serde"], default-features = false } serde = { version = "1.0.0", features = ["derive"], default-features = false } serde_json = { version = "1.0.0", features = ["std"], default-features = false } diff --git a/src/core.rs b/src/core.rs index 6144240..ad3c4ac 100644 --- a/src/core.rs +++ b/src/core.rs @@ -41,18 +41,14 @@ pub fn resolve(s: &str) -> Result { } fn resolve_bech32(s: &str) -> Result { - let Ok((hrp, data, _)) = bech32::decode(s) else { + let Ok((hrp, bytes)) = bech32::decode(s) else { return Err("bech32 decode failed"); }; - if hrp != "lnurl" { + if hrp.to_lowercase() != "lnurl" { return Err("bech32 hrp invalid"); } - let Ok(bytes) = as bech32::FromBase32>::from_base32(&data) else { - return Err("bech32 data is not bytes"); - }; - let Ok(text) = String::from_utf8(bytes) else { return Err("bech32 bytes is not string"); }; diff --git a/tests/lud02.rs b/tests/lud02.rs index 2fd32c7..71674d3 100644 --- a/tests/lud02.rs +++ b/tests/lud02.rs @@ -50,12 +50,8 @@ async fn test() { let client = lnurlkit::Client::default(); - let lnurl = bech32::encode( - "lnurl", - bech32::ToBase32::to_base32(&query_url), - bech32::Variant::Bech32, - ) - .expect("lnurl"); + let hrp = bech32::Hrp::parse("lnurl").expect("hrp"); + let lnurl = bech32::encode::(hrp, query_url.as_bytes()).expect("lnurl"); let queried = client.entrypoint(&lnurl).await.expect("query"); let lnurlkit::client::Entrypoint::Channel(cr) = queried else { diff --git a/tests/lud03.rs b/tests/lud03.rs index 3cd36b4..d319e12 100644 --- a/tests/lud03.rs +++ b/tests/lud03.rs @@ -40,13 +40,8 @@ async fn test() { }); let client = lnurlkit::Client::default(); - - let lnurl = bech32::encode( - "lnurl", - bech32::ToBase32::to_base32(&query_url), - bech32::Variant::Bech32, - ) - .expect("lnurl"); + let hrp = bech32::Hrp::parse("lnurl").expect("hrp"); + let lnurl = bech32::encode::(hrp, query_url.as_bytes()).expect("lnurl"); let queried = client.entrypoint(&lnurl).await.expect("query"); let lnurlkit::client::Entrypoint::Withdraw(wr) = queried else { diff --git a/tests/lud04.rs b/tests/lud04.rs index 657c4dd..7f37475 100644 --- a/tests/lud04.rs +++ b/tests/lud04.rs @@ -25,13 +25,8 @@ async fn test() { }); let client = lnurlkit::Client::default(); - - let lnurl = bech32::encode( - "lnurl", - bech32::ToBase32::to_base32(&url), - bech32::Variant::Bech32, - ) - .expect("lnurl"); + let hrp = bech32::Hrp::parse("lnurl").expect("hrp"); + let lnurl = bech32::encode::(hrp, url.as_bytes()).expect("lnurl"); let queried = client.entrypoint(&lnurl).await.expect("query"); let lnurlkit::client::Entrypoint::Auth(a) = queried else { diff --git a/tests/lud06.rs b/tests/lud06.rs index 7b4c664..5869f2d 100644 --- a/tests/lud06.rs +++ b/tests/lud06.rs @@ -46,12 +46,8 @@ async fn test() { let client = lnurlkit::Client::default(); - let lnurl = bech32::encode( - "lnurl", - bech32::ToBase32::to_base32(&query_url), - bech32::Variant::Bech32, - ) - .expect("lnurl"); + let hrp = bech32::Hrp::parse("lnurl").expect("hrp"); + let lnurl = bech32::encode::(hrp, query_url.as_bytes()).expect("lnurl"); let queried = client.entrypoint(&lnurl).await.expect("query"); let lnurlkit::client::Entrypoint::Pay(pr) = queried else { diff --git a/tests/lud08.rs b/tests/lud08.rs index 5e6b323..9a9ee26 100644 --- a/tests/lud08.rs +++ b/tests/lud08.rs @@ -44,12 +44,8 @@ async fn test() { let client = lnurlkit::Client::default(); - let lnurl = bech32::encode( - "lnurl", - bech32::ToBase32::to_base32(&query_url_slow), - bech32::Variant::Bech32, - ) - .expect("lnurl"); + let hrp = bech32::Hrp::parse("lnurl").expect("hrp"); + let lnurl = bech32::encode::(hrp, query_url_slow.as_bytes()).expect("lnurl"); let queried = client.entrypoint(&lnurl).await.expect("query"); let lnurlkit::client::Entrypoint::Withdraw(wr) = queried else { @@ -61,12 +57,7 @@ async fn test() { assert_eq!(&wr.core.description as &str, "outra-descricao"); assert_eq!(wr.core.callback, callback2); - let lnurl = bech32::encode( - "lnurl", - bech32::ToBase32::to_base32(&query_url_fast), - bech32::Variant::Bech32, - ) - .expect("lnurl"); + let lnurl = bech32::encode::(hrp, query_url_fast.as_bytes()).expect("lnurl"); let queried = client.entrypoint(&lnurl).await.expect("query"); let lnurlkit::client::Entrypoint::Withdraw(wr) = queried else { diff --git a/tests/lud09.rs b/tests/lud09.rs index 8b56508..2f72b12 100644 --- a/tests/lud09.rs +++ b/tests/lud09.rs @@ -58,12 +58,8 @@ async fn test() { let client = lnurlkit::Client::default(); - let lnurl = bech32::encode( - "lnurl", - bech32::ToBase32::to_base32(&query_url), - bech32::Variant::Bech32, - ) - .expect("lnurl"); + let hrp = bech32::Hrp::parse("lnurl").expect("hrp"); + let lnurl = bech32::encode::(hrp, query_url.as_bytes()).expect("lnurl"); let queried = client.entrypoint(&lnurl).await.expect("query"); let lnurlkit::client::Entrypoint::Pay(pr) = queried else { diff --git a/tests/lud11.rs b/tests/lud11.rs index 99e4ef8..4f144cf 100644 --- a/tests/lud11.rs +++ b/tests/lud11.rs @@ -46,12 +46,8 @@ async fn test() { let client = lnurlkit::Client::default(); - let lnurl = bech32::encode( - "lnurl", - bech32::ToBase32::to_base32(&query_url), - bech32::Variant::Bech32, - ) - .expect("lnurl"); + let hrp = bech32::Hrp::parse("lnurl").expect("hrp"); + let lnurl = bech32::encode::(hrp, query_url.as_bytes()).expect("lnurl"); let queried = client.entrypoint(&lnurl).await.expect("query"); let lnurlkit::client::Entrypoint::Pay(pr) = queried else { diff --git a/tests/lud12.rs b/tests/lud12.rs index b64e780..584de48 100644 --- a/tests/lud12.rs +++ b/tests/lud12.rs @@ -46,12 +46,8 @@ async fn test() { let client = lnurlkit::Client::default(); - let lnurl = bech32::encode( - "lnurl", - bech32::ToBase32::to_base32(&query_url), - bech32::Variant::Bech32, - ) - .expect("lnurl"); + let hrp = bech32::Hrp::parse("lnurl").expect("hrp"); + let lnurl = bech32::encode::(hrp, query_url.as_bytes()).expect("lnurl"); let queried = client.entrypoint(&lnurl).await.expect("query"); let lnurlkit::client::Entrypoint::Pay(pr) = queried else { diff --git a/tests/lud16.rs b/tests/lud16.rs index 6f50076..43684f7 100644 --- a/tests/lud16.rs +++ b/tests/lud16.rs @@ -51,12 +51,8 @@ async fn test() { }; lnurl.set_scheme("http").expect("scheme"); - let bech32 = bech32::encode( - "lnurl", - bech32::ToBase32::to_base32(&lnurl.as_ref()), - bech32::Variant::Bech32, - ) - .expect("bech32"); + let hrp = bech32::Hrp::parse("lnurl").expect("hrp"); + let bech32 = bech32::encode::(hrp, lnurl.as_ref().as_bytes()).expect("bech32"); let queried = client.entrypoint(&bech32).await.expect("query"); let lnurlkit::client::Entrypoint::Pay(pr) = queried else { @@ -72,12 +68,7 @@ async fn test() { lnurl.set_scheme("http").expect("scheme"); - let bech32 = bech32::encode( - "lnurl", - bech32::ToBase32::to_base32(&lnurl.as_ref()), - bech32::Variant::Bech32, - ) - .expect("bech32"); + let bech32 = bech32::encode::(hrp, lnurl.as_ref().as_bytes()).expect("bech32"); let queried = client.entrypoint(&bech32).await.expect("query"); let lnurlkit::client::Entrypoint::Pay(pr) = queried else { diff --git a/tests/lud18.rs b/tests/lud18.rs index 7aefd1f..ca7c790 100644 --- a/tests/lud18.rs +++ b/tests/lud18.rs @@ -56,12 +56,8 @@ async fn test() { let client = lnurlkit::Client::default(); - let lnurl = bech32::encode( - "lnurl", - bech32::ToBase32::to_base32(&query_url), - bech32::Variant::Bech32, - ) - .expect("lnurl"); + let hrp = bech32::Hrp::parse("lnurl").expect("hrp"); + let lnurl = bech32::encode::(hrp, query_url.as_bytes()).expect("lnurl"); let queried = client.entrypoint(&lnurl).await.expect("query"); let lnurlkit::client::Entrypoint::Pay(pr) = queried else { diff --git a/tests/lud21.rs b/tests/lud21.rs index 7c468d9..d6e17fd 100644 --- a/tests/lud21.rs +++ b/tests/lud21.rs @@ -34,7 +34,7 @@ async fn test() { multiplier: 314.15, convertible: Some(lnurlkit::pay::CurrencyConvertible { min: 1, - max: 3 + max: 3, }), }, lnurlkit::pay::Currency { @@ -66,12 +66,8 @@ async fn test() { let client = lnurlkit::Client::default(); - let lnurl = bech32::encode( - "lnurl", - bech32::ToBase32::to_base32(&query_url), - bech32::Variant::Bech32, - ) - .expect("lnurl"); + let hrp = bech32::Hrp::parse("lnurl").expect("hrp"); + let lnurl = bech32::encode::(hrp, query_url.as_bytes()).expect("lnurl"); let queried = client.entrypoint(&lnurl).await.expect("query"); let lnurlkit::client::Entrypoint::Pay(pr) = queried else {