/* * Aegis Bitcoin Wallet - The secure Bitcoin wallet for Android * Copyright 2014 Bojan Simic and specularX.co, designed by Reuven Yamrom * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.aegiswallet.utils; import android.os.Environment; import android.text.format.DateUtils; import com.google.bitcoin.core.Base58; import com.google.bitcoin.core.NetworkParameters; import com.google.bitcoin.params.MainNetParams; import java.io.File; import java.math.BigInteger; import java.nio.charset.Charset; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.regex.Pattern; /** * Created by bsimic on 2/15/14. */ public class Constants { public static final Pattern PATTERN_BITCOIN_ADDRESS = Pattern.compile("[" + new String(Base58.ALPHABET) + "]{20,40}"); public static final Pattern PATTERN_PRIVATE_KEY = Pattern.compile("5[" + new String(Base58.ALPHABET) + "]{50,51}"); public static final Pattern PATTERN_TRANSACTION = Pattern.compile("[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$\\*\\+\\-\\.\\/\\:]{100,}"); public static final String CURRENCY_PLUS_SIGN = "+ "; public static final String CURRENCY_MINUS_SIGN = "- "; public static final long MIN_AMOUNT_IN_SATOSHI = 10000; public static final BigInteger MIN_AMOUN_BIG_INT = BigInteger.valueOf(10000); public static final BigInteger MAX_DUST_ALLOWED = BigInteger.valueOf(5460); //public static final NetworkParameters NETWORK_PARAMETERS = TestNet3Params.get(); public static final NetworkParameters NETWORK_PARAMETERS = MainNetParams.get(); public static final String BLOCKCHAIN_FILENAME = "blockchain.dat"; private static final String FILENAME_NETWORK_SUFFIX = NETWORK_PARAMETERS.getId().equals(NetworkParameters.ID_MAINNET) ? "" : "-testnet"; public static final long BLOCKCHAIN_STATE_BROADCAST_THROTTLE_MS = DateUtils.SECOND_IN_MILLIS; public static final long BLOCKCHAIN_UPTODATE_THRESHOLD_MS = DateUtils.HOUR_IN_MILLIS; public static final String PREFS_KEY_BEST_CHAIN_HEIGHT_EVER = "best_chain_height_ever"; public static final String CHECKPOINTS_FILENAME = "checkpoints" + FILENAME_NETWORK_SUFFIX; public static final String PREFS_KEY_SELECTED_ADDRESS = "selected_address"; public static final String PREFS_KEY_REMIND_BACKUP = "remind_backup"; public static final String WALLET_KEY_BACKUP_BASE58 = "key-backup-base58" + FILENAME_NETWORK_SUFFIX; public static final Charset UTF_8 = Charset.forName("UTF-8"); public static final String WALLET_FILENAME_PROTOBUF = "wallet-protobuf" + FILENAME_NETWORK_SUFFIX; public static final String WALLET_FILENAME = "wallet" + FILENAME_NETWORK_SUFFIX; public static final int WALLET_UPDATE_COINS_RECEIVED = 1; public static final int WALLET_UPDATE_COINS_SENT = 2; public static final int WALLET_UPDATE_REORGANIZED = 3; public static final int WALLET_UPDATE_TRANS_CONFIDENCE = 4; public static final int WALLET_UPDATE_CHANGED = 5; public static final int WALLET_UPDATE_KEYS_ADDED = 6; public static final int WALLET_PASSWORD_MIN_LENGTH = 8; public static final int WALLET_PASSWORD_STRONG_LENGTH = 14; public static final int WALLET_PASSWORD_VERY_STRONG_LENGTH = 20; public static final int BTC_MAX_PRECISION = 8; public static final int BTC_MIN_PRECISION = 4; public static final String CURRENCY_PREF_KEY = "currency"; public static final String BLOCKCHAIN_CURRENCY_FILE_NAME = "tickerfile.txt"; public static final String BLOCKCHAIN_CURRENCY_CALL = "https://blockchain.info/ticker"; public static final String BLOCKCHAIN_TX_URL = NETWORK_PARAMETERS.getId().equals(NetworkParameters.ID_MAINNET) ? "https://blockchain.info/tx/" : "http://blockexplorer.com/testnet/tx/"; public static final String BLOCKCHAIN_ADDRESS_URL = NETWORK_PARAMETERS.getId().equals(NetworkParameters.ID_MAINNET) ? "https://blockchain.info/address/" : "http://blockexplorer.com/testnet/address/"; public static final int ACTION_ENCRYPT = 1; public static final int ACTION_DECRYPT = 2; public static final int ACTION_BACKUP = 3; public static final int ACTION_RESTORE_BACKUP = 4; public static final int ACTION_SWITCH_TO_NFC = 5; public static final int ACTION_IMPORT_KEY = 6; public static final DateFormat backupDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss"); public static final File WALLET_BACKUP_DIRECTORY = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); public static final String WALLET_BACKUP_FILENAME = "AegisWalletBackup" + FILENAME_NETWORK_SUFFIX; public static final int SHAMIR_N = 3; public static final int SHAMIR_K = 2; public static final String SHAMIR_LOCAL_KEY = "shamir_local_key"; public static final String SHAMIR_ENCRYPTED_KEY = "shamir_encrypted_key"; public static final String SHAMIR_EXPORTED_KEY = "shamir_exported_key"; public static final String SHAMIR_EXPORTED_KEY_SHA256 = "shamir_exported_key_sha256"; public static final String LAST_BACKUP_DATE = "last_backup_date"; public static final String LAST_BACKUP_NUM_ADDRESSES = "last_backup_num_addresses"; public static final String PASSWORD_HASH = "password_hash"; public static final String PASSWORD_SALT = "password_salt"; public static final String APP_INIT_COMPLETE = "app_init_complete"; //The password minimum score - should be 3 or 4.... public static final int MINIMUM_PASSWORD_SCORE = 3; public static final String NFC_VALUE = "com.aegis.wallet"; public static final String NFC_TAG_FORMATTED = "tag_formatted"; public static final String NFC_CANT_CONNECT = "cant_connect_nfc_adapter"; public static final String NFC_READ_ONLY = "failed_read_only"; public static final String NFC_TAG_TOO_SMALL = "too_small_tag"; public static final String NFC_CANT_FORMAT = "cant_format"; public static final String NFC_TAG_WRITTEN = "tag_written"; public static final String NFC_WRITE_EXCEPTION = "io_exception_format"; public static final String NFC_TAG_NOT_SUPPORTED = "tag_not_supported"; public static final String SHAMIR_X2_HASHED = "shamir_x2_hashed"; public static final String AEGIS_SITE = "https://bitcoinsecurityproject.org/api/aegis"; public static final String FORGOT_PASSWORD_EMAIL = "bojan@bitcoinsecurityproject.org"; public static final int SMS_STATUS_INIT = 0; public static final int SMS_STATUS_REC = 1; public static final int SMS_STATUS_COMP = 2; }