aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2015-07-02 17:31:01 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2015-07-02 17:31:01 +0200
commit195508ed92434197d0d6ab2d3ef6e0b4bd0780b6 (patch)
tree50ed562c2db60cdcab183b33898de48cab30e521 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base
parent9fe05ed1e7fff479430f0042c47842151a0cb68d (diff)
downloadopen-keychain-195508ed92434197d0d6ab2d3ef6e0b4bd0780b6.tar.gz
open-keychain-195508ed92434197d0d6ab2d3ef6e0b4bd0780b6.tar.bz2
open-keychain-195508ed92434197d0d6ab2d3ef6e0b4bd0780b6.zip
Change PIN and Admin PIN after move to key operation
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseNfcActivity.java25
1 files changed, 11 insertions, 14 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseNfcActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseNfcActivity.java
index bede16b2a..ba8dd3b55 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseNfcActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseNfcActivity.java
@@ -179,8 +179,10 @@ public abstract class BaseNfcActivity extends BaseActivity {
Notify.create(this, getString(R.string.error_nfc_unknown), Style.WARN).show();
break;
}
- default:
+ default: {
Notify.create(this, getString(R.string.error_nfc, e.getMessage()), Style.WARN).show();
+ break;
+ }
}
}
@@ -311,9 +313,6 @@ public abstract class BaseNfcActivity extends BaseActivity {
mPw1ValidatedForDecrypt = false;
mPw3Validated = false;
- // TODO: Handle non-default Admin PIN
- mAdminPin = new Passphrase("12345678");
-
onNfcPerform();
mIsoDep.close();
@@ -569,12 +568,12 @@ public abstract class BaseNfcActivity extends BaseActivity {
*/
public void nfcVerifyPIN(int mode) throws IOException {
if (mPin != null || mode == 0x83) {
- byte[] pin;
+ byte[] pin;
if (mode == 0x83) {
- pin = new String(mAdminPin.getCharArray()).getBytes();
+ pin = mAdminPin.toStringUnsafe().getBytes();
} else {
- pin = new String(mPin.getCharArray()).getBytes();
+ pin = mPin.toStringUnsafe().getBytes();
}
// SW1/2 0x9000 is the generic "ok" response, which we expect most of the time.
@@ -611,12 +610,11 @@ public abstract class BaseNfcActivity extends BaseActivity {
* @param pw For PW1, this is 0x81. For PW3 (Admin PIN), mode is 0x83.
* @param newPinString The new PW1 or PW3.
*/
- public void nfcModifyPIN(int pw, String newPinString) throws IOException {
+ public void nfcModifyPIN(int pw, byte[] newPin) throws IOException {
final int MAX_PW1_LENGTH_INDEX = 1;
final int MAX_PW3_LENGTH_INDEX = 3;
byte[] pwStatusBytes = nfcGetPwStatusBytes();
- byte[] newPin = newPinString.getBytes();
if (pw == 0x81) {
if (newPin.length < 6 || newPin.length > pwStatusBytes[MAX_PW1_LENGTH_INDEX]) {
@@ -631,11 +629,10 @@ public abstract class BaseNfcActivity extends BaseActivity {
}
byte[] pin;
-
if (pw == 0x83) {
- pin = new String(mAdminPin.getCharArray()).getBytes();
+ pin = mAdminPin.toStringUnsafe().getBytes();
} else {
- pin = new String(mPin.getCharArray()).getBytes();
+ pin = mPin.toStringUnsafe().getBytes();
}
// Command APDU for CHANGE REFERENCE DATA command (page 32)
@@ -700,7 +697,7 @@ public abstract class BaseNfcActivity extends BaseActivity {
throw new IOException("Invalid key slot");
}
- RSAPrivateCrtKey crtSecretKey = null;
+ RSAPrivateCrtKey crtSecretKey;
try {
secretKey.unlock(passphrase);
crtSecretKey = secretKey.getCrtSecretKey();
@@ -719,7 +716,7 @@ public abstract class BaseNfcActivity extends BaseActivity {
}
if (!mPw3Validated) {
- nfcVerifyPIN(0x83); // (Verify PW1 with mode 83)
+ nfcVerifyPIN(0x83); // (Verify PW3 with mode 83)
}
byte[] header= Hex.decode(