/* * Copyright 2014 http://Bither.net * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.bither.utils; import net.bither.bitherj.core.Address; import net.bither.bitherj.core.AddressManager; import net.bither.bitherj.core.Out; import net.bither.bitherj.core.Tx; import net.bither.bitherj.crypto.SecureCharSequence; import net.bither.bitherj.exception.ScriptException; import net.bither.bitherj.exception.TxBuilderException; import net.bither.bitherj.script.Script; import net.bither.bitherj.utils.Utils; import javax.annotation.Nonnull; import java.util.List; public class WalletUtils { public static final char CHAR_THIN_SPACE = '\u2009'; public static String formatHash(@Nonnull final String address, final int groupSize, final int lineSize) { return formatHash(address, groupSize, lineSize, CHAR_THIN_SPACE); } public static boolean isInternal(@Nonnull final Tx tx) { if (tx.isCoinBase()) { return false; } final List<Out> outputs = tx.getOuts(); if (outputs.size() != 1) { return false; } try { final Out output = outputs.get(0); final Script scriptPubKey = output.getScriptPubKey(); if (!scriptPubKey.isSentToRawPubKey()) { return false; } return true; } catch (final ScriptException x) { return false; } } public static String formatHash(@Nonnull final String address, final int groupSize, final int lineSize, final char groupSeparator) { String str = ""; final int len = address.length(); for (int i = 0; i < len; i += groupSize) { final int end = i + groupSize; final String part = address.substring(i, end < len ? end : len); str += part; if (end < len) { final boolean endOfLine = lineSize > 0 && end % lineSize == 0; str += endOfLine ? '\n' : groupSeparator; } } return str; } public static void initTxBuilderException() { for (TxBuilderException.TxBuilderErrorType type : TxBuilderException.TxBuilderErrorType .values()) { String format = LocaliserUtils.getString("send_failed"); switch (type) { case TxNotEnoughMoney: format = LocaliserUtils.getString("send_failed_missing_btc"); break; case TxDustOut: format = LocaliserUtils.getString("send_failed_dust_out_put"); break; case TxWaitConfirm: format = LocaliserUtils.getString("send_failed_pendding"); break; } type.registerFormatString(format); } } public static Address findPrivateKey(String address) { for (Address bitherAddressWithPrivateKey : AddressManager.getInstance().getPrivKeyAddresses()) { if (Utils.compareString(address, bitherAddressWithPrivateKey.getAddress())) { return bitherAddressWithPrivateKey; } } return null; } }