use of org.bitcoinj.crypto.BIP38PrivateKey in project sentinel-android by Samourai-Wallet.
the class BalanceActivity method doPrivKey.
private void doPrivKey(final String data) {
// Log.d("BalanceActivity", "privkey:" + data);
PrivKeyReader privKeyReader = null;
String format = null;
try {
privKeyReader = new PrivKeyReader(new CharSequenceX(data), null);
format = privKeyReader.getFormat();
// Log.d("BalanceActivity", "privkey format:" + format);
} catch (Exception e) {
Toast.makeText(BalanceActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
return;
}
if (format != null) {
if (format.equals(PrivKeyReader.BIP38)) {
final PrivKeyReader pvr = privKeyReader;
final EditText password38 = new EditText(BalanceActivity.this);
AlertDialog.Builder dlg = new AlertDialog.Builder(BalanceActivity.this).setTitle(R.string.app_name).setMessage(R.string.bip38_pw).setView(password38).setCancelable(false).setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
String password = password38.getText().toString();
ProgressDialog progress = new ProgressDialog(BalanceActivity.this);
progress.setCancelable(false);
progress.setTitle(R.string.app_name);
progress.setMessage(getString(R.string.decrypting_bip38));
progress.show();
boolean keyDecoded = false;
try {
BIP38PrivateKey bip38 = new BIP38PrivateKey(MainNetParams.get(), data);
final ECKey ecKey = bip38.decrypt(password);
if (ecKey != null && ecKey.hasPrivKey()) {
if (progress != null && progress.isShowing()) {
progress.cancel();
}
pvr.setPassword(new CharSequenceX(password));
keyDecoded = true;
Toast.makeText(BalanceActivity.this, pvr.getFormat(), Toast.LENGTH_SHORT).show();
Toast.makeText(BalanceActivity.this, pvr.getKey().toAddress(MainNetParams.get()).toString(), Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(BalanceActivity.this, R.string.bip38_pw_error, Toast.LENGTH_SHORT).show();
}
if (progress != null && progress.isShowing()) {
progress.cancel();
}
if (keyDecoded) {
String strReceiveAddress = SamouraiSentinel.getInstance(BalanceActivity.this).getReceiveAddress();
if (strReceiveAddress != null) {
SweepUtil.getInstance(BalanceActivity.this).sweep(pvr, strReceiveAddress, SweepUtil.TYPE_P2PKH);
}
}
}
}).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
Toast.makeText(BalanceActivity.this, R.string.bip38_pw_error, Toast.LENGTH_SHORT).show();
}
});
if (!isFinishing()) {
dlg.show();
}
} else if (privKeyReader != null) {
String strReceiveAddress = SamouraiSentinel.getInstance(BalanceActivity.this).getReceiveAddress();
if (strReceiveAddress != null) {
Log.d("BalanceActivity", "receive address:" + strReceiveAddress);
SweepUtil.getInstance(BalanceActivity.this).sweep(privKeyReader, strReceiveAddress, SweepUtil.TYPE_P2PKH);
}
} else {
;
}
} else {
Toast.makeText(BalanceActivity.this, R.string.cannot_recognize_privkey, Toast.LENGTH_SHORT).show();
}
}
use of org.bitcoinj.crypto.BIP38PrivateKey in project sentinel-android by Samourai-Wallet.
the class PrivKeyReader method parseBIP38.
private ECKey parseBIP38(String encryptedKey, CharSequenceX password) {
if (password == null) {
return null;
}
try {
BIP38PrivateKey bip38 = new BIP38PrivateKey(MainNetParams.get(), encryptedKey);
final ECKey ecKey = bip38.decrypt(password.toString());
if (ecKey != null && ecKey.hasPrivKey()) {
return ecKey;
}
} catch (Exception e) {
;
}
return null;
}
use of org.bitcoinj.crypto.BIP38PrivateKey in project bitcoin-wallet by bitcoin-wallet.
the class SweepWalletFragment method maybeDecodeKey.
private void maybeDecodeKey() {
checkState(viewModel.state == SweepWalletViewModel.State.DECODE_KEY);
final PrefixedChecksummedBytes privateKeyToSweep = viewModel.privateKeyToSweep.getValue();
checkState(privateKeyToSweep != null);
if (privateKeyToSweep instanceof DumpedPrivateKey) {
final ECKey key = ((DumpedPrivateKey) privateKeyToSweep).getKey();
askConfirmSweep(key);
} else if (privateKeyToSweep instanceof BIP38PrivateKey) {
badPasswordView.setVisibility(View.INVISIBLE);
final String password = passwordView.getText().toString().trim();
// get rid of it asap
passwordView.setText(null);
if (!password.isEmpty()) {
viewModel.progress.setValue(getString(R.string.sweep_wallet_fragment_decrypt_progress));
new DecodePrivateKeyTask(backgroundHandler) {
@Override
protected void onSuccess(ECKey decryptedKey) {
log.info("successfully decoded BIP38 private key");
viewModel.progress.setValue(null);
askConfirmSweep(decryptedKey);
}
@Override
protected void onBadPassphrase() {
log.info("failed decoding BIP38 private key (bad password)");
viewModel.progress.setValue(null);
badPasswordView.setVisibility(View.VISIBLE);
passwordView.requestFocus();
}
}.decodePrivateKey((BIP38PrivateKey) privateKeyToSweep, password);
}
} else {
throw new IllegalStateException("cannot handle type: " + privateKeyToSweep.getClass().getName());
}
}
use of org.bitcoinj.crypto.BIP38PrivateKey in project samourai-wallet-android by Samourai-Wallet.
the class BalanceActivity method doPrivKey.
private void doPrivKey(final String data) {
PrivKeyReader privKeyReader = null;
String format = null;
try {
privKeyReader = new PrivKeyReader(new CharSequenceX(data), null);
format = privKeyReader.getFormat();
} catch (Exception e) {
Toast.makeText(BalanceActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
return;
}
if (format != null) {
if (format.equals(PrivKeyReader.BIP38)) {
final PrivKeyReader pvr = privKeyReader;
final EditText password38 = new EditText(BalanceActivity.this);
password38.setSingleLine(true);
password38.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
AlertDialog.Builder dlg = new AlertDialog.Builder(BalanceActivity.this).setTitle(R.string.app_name).setMessage(R.string.bip38_pw).setView(password38).setCancelable(false).setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String password = password38.getText().toString();
ProgressDialog progress = new ProgressDialog(BalanceActivity.this);
progress.setCancelable(false);
progress.setTitle(R.string.app_name);
progress.setMessage(getString(R.string.decrypting_bip38));
progress.show();
boolean keyDecoded = false;
try {
BIP38PrivateKey bip38 = new BIP38PrivateKey(SamouraiWallet.getInstance().getCurrentNetworkParams(), data);
final ECKey ecKey = bip38.decrypt(password);
if (ecKey != null && ecKey.hasPrivKey()) {
if (progress != null && progress.isShowing()) {
progress.cancel();
}
pvr.setPassword(new CharSequenceX(password));
keyDecoded = true;
Toast.makeText(BalanceActivity.this, pvr.getFormat(), Toast.LENGTH_SHORT).show();
Toast.makeText(BalanceActivity.this, pvr.getKey().toAddress(SamouraiWallet.getInstance().getCurrentNetworkParams()).toString(), Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(BalanceActivity.this, R.string.bip38_pw_error, Toast.LENGTH_SHORT).show();
}
if (progress != null && progress.isShowing()) {
progress.cancel();
}
if (keyDecoded) {
SweepUtil.getInstance(BalanceActivity.this).sweep(pvr, SweepUtil.TYPE_P2PKH);
}
}
}).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Toast.makeText(BalanceActivity.this, R.string.bip38_pw_error, Toast.LENGTH_SHORT).show();
}
});
if (!isFinishing()) {
dlg.show();
}
} else if (privKeyReader != null) {
SweepUtil.getInstance(BalanceActivity.this).sweep(privKeyReader, SweepUtil.TYPE_P2PKH);
} else {
;
}
} else {
Toast.makeText(BalanceActivity.this, R.string.cannot_recognize_privkey, Toast.LENGTH_SHORT).show();
}
}
use of org.bitcoinj.crypto.BIP38PrivateKey in project samourai-wallet-android by Samourai-Wallet.
the class PrivKeyReader method parseBIP38.
private ECKey parseBIP38(String encryptedKey, CharSequenceX password) {
if (password == null) {
return null;
}
try {
BIP38PrivateKey bip38 = new BIP38PrivateKey(SamouraiWallet.getInstance().getCurrentNetworkParams(), encryptedKey);
final ECKey ecKey = bip38.decrypt(password.toString());
if (ecKey != null && ecKey.hasPrivKey()) {
return ecKey;
}
} catch (Exception e) {
;
}
return null;
}
Aggregations