fuzz_payment_request_bech32_bytes.rs 591 B

1234567891011121314151617
  1. #![no_main]
  2. use libfuzzer_sys::fuzz_target;
  3. use bitcoin::bech32::{Bech32m, Hrp};
  4. use cashu::PaymentRequest;
  5. // Fuzz the NUT-26 TLV parser by constructing valid bech32m encoding
  6. // around arbitrary bytes. This bypasses bech32 charset validation to
  7. // directly stress-test the TLV parsing logic.
  8. fuzz_target!(|data: &[u8]| {
  9. // Construct a valid bech32m string with "creqb" HRP and fuzzed payload
  10. let hrp = Hrp::parse("creqb").unwrap();
  11. if let Ok(encoded) = bitcoin::bech32::encode::<Bech32m>(hrp, data) {
  12. let _ = PaymentRequest::from_bech32_string(&encoded);
  13. }
  14. });