From ab01dc5e543118120402fb8133c2a34521cd6860 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Sat, 21 May 2022 09:22:49 +0100 Subject: [PATCH] Implemented address validation for Pirate Chain --- .../org/qortal/crosschain/PirateChain.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/org/qortal/crosschain/PirateChain.java b/src/main/java/org/qortal/crosschain/PirateChain.java index 24e57e3c..0d9a4190 100644 --- a/src/main/java/org/qortal/crosschain/PirateChain.java +++ b/src/main/java/org/qortal/crosschain/PirateChain.java @@ -218,6 +218,24 @@ public class PirateChain extends Bitcoiny { } + @Override + public boolean isValidAddress(String address) { + // Start with some simple checks + if (address == null || !address.toLowerCase().startsWith("zs") || address.length() != 78) { + return false; + } + + // Now try Bech32 decoding the address (which includes checksum verification) + try { + Bech32.Bech32Data decoded = Bech32.decode(address); + return (decoded != null && Objects.equals("zs", decoded.hrp)); + } + catch (AddressFormatException e) { + // Invalid address, checksum failed, etc + return false; + } + } + /** Returns P2SH address using passed redeem script. */ public String deriveP2shAddress(byte[] redeemScriptBytes) { Context.propagate(bitcoinjContext);