refactor supported bip47 script type lists

This commit is contained in:
Craig Raw 2022-08-04 11:13:27 +02:00
parent ddaf698c10
commit 8cdea77562
3 changed files with 10 additions and 3 deletions

View file

@ -38,6 +38,9 @@ public class PaymentCode {
private final byte[] pubkey;
private final byte[] chain;
public static final List<ScriptType> SEGWIT_SCRIPT_TYPES = List.of(ScriptType.P2PKH, ScriptType.P2SH_P2WPKH, ScriptType.P2WPKH);
public static final List<ScriptType> V1_SCRIPT_TYPES = List.of(ScriptType.P2PKH);
private PaymentCode(String strPaymentCode, byte[] pubkey, byte[] chain) {
this.strPaymentCode = strPaymentCode;
this.pubkey = pubkey;

View file

@ -150,10 +150,14 @@ public class Bech32 {
/** Decode a Bech32 string. */
public static Bech32Data decode(final String str) {
return decode(str, 90);
}
public static Bech32Data decode(final String str, int limit) {
boolean lower = false, upper = false;
if (str.length() < 8)
throw new ProtocolException("Input too short: " + str.length());
if (str.length() > 90)
if (str.length() > limit)
throw new ProtocolException("Input too long: " + str.length());
for (int i = 0; i < str.length(); ++i) {
char c = str.charAt(i);

View file

@ -185,7 +185,7 @@ public class Wallet extends Persistable implements Comparable<Wallet> {
throw new IllegalStateException("Cannot add payment code wallet to " + policyType.getName() + " wallet");
}
if(scriptType != P2PKH && scriptType != P2SH_P2WPKH && scriptType != P2WPKH) {
if(!PaymentCode.SEGWIT_SCRIPT_TYPES.contains(scriptType)) {
throw new IllegalStateException("Cannot add payment code wallet to " + scriptType.getName() + " wallet");
}
@ -246,7 +246,7 @@ public class Wallet extends Persistable implements Comparable<Wallet> {
public boolean hasPaymentCode() {
return getKeystores().size() == 1 && getKeystores().get(0).getBip47ExtendedPrivateKey() != null && policyType == PolicyType.SINGLE
&& (scriptType == P2PKH || scriptType == P2SH_P2WPKH || scriptType == P2WPKH);
&& PaymentCode.SEGWIT_SCRIPT_TYPES.contains(scriptType);
}
public PaymentCode getPaymentCode() {