From 0fd5b45df913d1524aa400a644c48dc91044d9bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sun, 10 Jan 2016 17:17:57 +0100 Subject: [PATCH] Use more generic 'Security Token' where possible, add sutitle to create key what tokens are supported --- OpenKeychain/src/main/AndroidManifest.xml | 2 +- .../keychain/Constants.java | 2 +- .../operations/results/OperationResult.java | 6 +- .../keychain/pgp/PgpKeyOperation.java | 52 ++++----- .../keychain/remote/OpenPgpService.java | 12 +- .../keychain/service/SaveKeyringParcel.java | 45 ++++---- .../keychain/ui/CreateKeyActivity.java | 44 +++---- .../keychain/ui/CreateKeyEmailFragment.java | 4 +- .../keychain/ui/CreateKeyFinalFragment.java | 15 ++- .../keychain/ui/CreateKeyStartFragment.java | 8 +- ... => CreateSecurityTokenBlankFragment.java} | 8 +- ...eateSecurityTokenImportResetFragment.java} | 84 +++++++------- ...va => CreateSecurityTokenPinFragment.java} | 16 +-- ...a => CreateSecurityTokenWaitFragment.java} | 4 +- .../keychain/ui/EditKeyFragment.java | 8 +- .../keychain/ui/ImportKeysActivity.java | 4 +- .../keychain/ui/MainActivity.java | 4 +- .../keychain/ui/PassphraseDialogActivity.java | 4 +- ...va => SecurityTokenOperationActivity.java} | 44 ++++--- .../keychain/ui/ViewKeyActivity.java | 72 ++++++------ .../ui/ViewKeyAdvSubkeysFragment.java | 8 +- ...java => ViewKeySecurityTokenFragment.java} | 28 ++--- .../keychain/ui/adapter/SubkeysAdapter.java | 4 +- ...java => BaseSecurityTokenNfcActivity.java} | 69 ++++++----- .../ui/base/CryptoOperationHelper.java | 10 +- .../keychain/util/Preferences.java | 4 +- .../res/layout/create_key_start_fragment.xml | 56 ++++++--- ..._security_token_import_reset_fragment.xml} | 20 ++-- ...> create_security_token_wait_fragment.xml} | 2 +- .../layout/create_yubi_key_blank_fragment.xml | 4 +- ... => security_token_operation_activity.xml} | 54 ++++----- ...ubikey.xml => view_key_security_token.xml} | 8 +- .../src/main/res/values-cs/strings.xml | 6 +- .../src/main/res/values-de/strings.xml | 74 ++++++------ .../src/main/res/values-es-rMX/strings.xml | 6 +- .../src/main/res/values-es/strings.xml | 84 +++++++------- .../src/main/res/values-eu/strings.xml | 66 +++++------ .../src/main/res/values-fa/strings.xml | 4 +- .../src/main/res/values-fi/strings.xml | 4 +- .../src/main/res/values-fr/strings.xml | 84 +++++++------- .../src/main/res/values-it/strings.xml | 6 +- .../src/main/res/values-ja/strings.xml | 84 +++++++------- .../src/main/res/values-ko/strings.xml | 12 +- .../src/main/res/values-nl/strings.xml | 64 +++++------ .../src/main/res/values-pl/strings.xml | 2 +- .../src/main/res/values-ru/strings.xml | 16 +-- .../src/main/res/values-sl/strings.xml | 4 +- .../src/main/res/values-sr/strings.xml | 78 ++++++------- .../src/main/res/values-sv/strings.xml | 16 +-- .../src/main/res/values-tr/strings.xml | 2 +- .../src/main/res/values-uk/strings.xml | 2 +- .../src/main/res/values-zh-rTW/strings.xml | 16 +-- .../src/main/res/values-zh/strings.xml | 12 +- OpenKeychain/src/main/res/values/strings.xml | 107 +++++++++--------- .../main/res/xml/passphrase_preferences.xml | 2 +- .../keychain/pgp/PgpKeyOperationTest.java | 22 ++-- .../keychain/util/Iso7816TLVTest.java | 2 +- 57 files changed, 753 insertions(+), 727 deletions(-) rename OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/{CreateYubiKeyBlankFragment.java => CreateSecurityTokenBlankFragment.java} (90%) rename OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/{CreateYubiKeyImportResetFragment.java => CreateSecurityTokenImportResetFragment.java} (74%) rename OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/{CreateYubiKeyPinFragment.java => CreateSecurityTokenPinFragment.java} (91%) rename OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/{CreateYubiKeyWaitFragment.java => CreateSecurityTokenWaitFragment.java} (91%) rename OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/{NfcOperationActivity.java => SecurityTokenOperationActivity.java} (89%) rename OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/{ViewKeyYubiKeyFragment.java => ViewKeySecurityTokenFragment.java} (87%) rename OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/{BaseNfcActivity.java => BaseSecurityTokenNfcActivity.java} (93%) rename OpenKeychain/src/main/res/layout/{create_yubi_key_import_reset_fragment.xml => create_security_token_import_reset_fragment.xml} (90%) rename OpenKeychain/src/main/res/layout/{create_yubi_key_wait_fragment.xml => create_security_token_wait_fragment.xml} (97%) rename OpenKeychain/src/main/res/layout/{nfc_operation_activity.xml => security_token_operation_activity.xml} (78%) rename OpenKeychain/src/main/res/layout/{view_key_yubikey.xml => view_key_security_token.xml} (94%) diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml index 945d7164c..c301973d2 100644 --- a/OpenKeychain/src/main/AndroidManifest.xml +++ b/OpenKeychain/src/main/AndroidManifest.xml @@ -761,7 +761,7 @@ taskAffinity and allowTaskReparenting somehow prevents this from happening! --> mRevokeUserIds; public ArrayList mRevokeSubKeys; - // if these are non-null, PINs will be changed on the card - public Passphrase mCardPin; - public Passphrase mCardAdminPin; + // if these are non-null, PINs will be changed on the token + public Passphrase mSecurityTokenPin; + public Passphrase mSecurityTokenAdminPin; // private because they have to be set together with setUpdateOptions private boolean mUpload; @@ -89,8 +89,8 @@ public class SaveKeyringParcel implements Parcelable { mChangeSubKeys = new ArrayList<>(); mRevokeUserIds = new ArrayList<>(); mRevokeSubKeys = new ArrayList<>(); - mCardPin = null; - mCardAdminPin = null; + mSecurityTokenPin = null; + mSecurityTokenAdminPin = null; mUpload = false; mUploadAtomic = false; mKeyserver = null; @@ -128,7 +128,7 @@ public class SaveKeyringParcel implements Parcelable { for (SubkeyChange change : mChangeSubKeys) { if (change.mRecertify || change.mFlags != null || change.mExpiry != null - || change.mMoveKeyToCard) { + || change.mMoveKeyToSecurityToken) { return false; } } @@ -175,11 +175,11 @@ public class SaveKeyringParcel implements Parcelable { public boolean mRecertify; // if this flag is true, the subkey should be changed to a stripped key public boolean mDummyStrip; - // if this flag is true, the subkey should be moved to a card - public boolean mMoveKeyToCard; + // if this flag is true, the subkey should be moved to a security token + public boolean mMoveKeyToSecurityToken; // if this is non-null, the subkey will be changed to a divert-to-card - // key for the given serial number - public byte[] mDummyDivert; + // (security token) key for the given serial number + public byte[] mSecurityTokenSerialNo; public SubkeyChange(long keyId) { mKeyId = keyId; @@ -196,16 +196,17 @@ public class SaveKeyringParcel implements Parcelable { mExpiry = expiry; } - public SubkeyChange(long keyId, boolean dummyStrip, boolean moveKeyToCard) { + public SubkeyChange(long keyId, boolean dummyStrip, boolean moveKeyToSecurityToken) { this(keyId, null, null); // these flags are mutually exclusive! - if (dummyStrip && moveKeyToCard) { + if (dummyStrip && moveKeyToSecurityToken) { throw new AssertionError( - "cannot set strip and keytocard flags at the same time - this is a bug!"); + "cannot set strip and moveKeyToSecurityToken" + + " flags at the same time - this is a bug!"); } mDummyStrip = dummyStrip; - mMoveKeyToCard = moveKeyToCard; + mMoveKeyToSecurityToken = moveKeyToSecurityToken; } @Override @@ -214,8 +215,8 @@ public class SaveKeyringParcel implements Parcelable { out += "mFlags: " + mFlags + ", "; out += "mExpiry: " + mExpiry + ", "; out += "mDummyStrip: " + mDummyStrip + ", "; - out += "mMoveKeyToCard: " + mMoveKeyToCard + ", "; - out += "mDummyDivert: [" + (mDummyDivert == null ? 0 : mDummyDivert.length) + " bytes]"; + out += "mMoveKeyToSecurityToken: " + mMoveKeyToSecurityToken + ", "; + out += "mSecurityTokenSerialNo: [" + (mSecurityTokenSerialNo == null ? 0 : mSecurityTokenSerialNo.length) + " bytes]"; return out; } @@ -259,8 +260,8 @@ public class SaveKeyringParcel implements Parcelable { mRevokeUserIds = source.createStringArrayList(); mRevokeSubKeys = (ArrayList) source.readSerializable(); - mCardPin = source.readParcelable(Passphrase.class.getClassLoader()); - mCardAdminPin = source.readParcelable(Passphrase.class.getClassLoader()); + mSecurityTokenPin = source.readParcelable(Passphrase.class.getClassLoader()); + mSecurityTokenAdminPin = source.readParcelable(Passphrase.class.getClassLoader()); mUpload = source.readByte() != 0; mUploadAtomic = source.readByte() != 0; @@ -288,8 +289,8 @@ public class SaveKeyringParcel implements Parcelable { destination.writeStringList(mRevokeUserIds); destination.writeSerializable(mRevokeSubKeys); - destination.writeParcelable(mCardPin, flags); - destination.writeParcelable(mCardAdminPin, flags); + destination.writeParcelable(mSecurityTokenPin, flags); + destination.writeParcelable(mSecurityTokenAdminPin, flags); destination.writeByte((byte) (mUpload ? 1 : 0)); destination.writeByte((byte) (mUploadAtomic ? 1 : 0)); @@ -322,8 +323,8 @@ public class SaveKeyringParcel implements Parcelable { out += "mChangePrimaryUserId: " + mChangePrimaryUserId + "\n"; out += "mRevokeUserIds: " + mRevokeUserIds + "\n"; out += "mRevokeSubKeys: " + mRevokeSubKeys + "\n"; - out += "mCardPin: " + mCardPin + "\n"; - out += "mCardAdminPin: " + mCardAdminPin; + out += "mSecurityTokenPin: " + mSecurityTokenPin + "\n"; + out += "mSecurityTokenAdminPin: " + mSecurityTokenAdminPin; return out; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyActivity.java index a4163d7f9..925888813 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyActivity.java @@ -28,7 +28,7 @@ import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException; import org.sufficientlysecure.keychain.provider.CachedPublicKeyRing; import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings; import org.sufficientlysecure.keychain.provider.ProviderHelper; -import org.sufficientlysecure.keychain.ui.base.BaseNfcActivity; +import org.sufficientlysecure.keychain.ui.base.BaseSecurityTokenNfcActivity; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import org.sufficientlysecure.keychain.util.Passphrase; import org.sufficientlysecure.keychain.util.Preferences; @@ -36,16 +36,16 @@ import org.sufficientlysecure.keychain.util.Preferences; import java.io.IOException; import java.util.ArrayList; -public class CreateKeyActivity extends BaseNfcActivity { +public class CreateKeyActivity extends BaseSecurityTokenNfcActivity { public static final String EXTRA_NAME = "name"; public static final String EXTRA_EMAIL = "email"; public static final String EXTRA_FIRST_TIME = "first_time"; public static final String EXTRA_ADDITIONAL_EMAILS = "additional_emails"; public static final String EXTRA_PASSPHRASE = "passphrase"; - public static final String EXTRA_CREATE_YUBI_KEY = "create_yubi_key"; - public static final String EXTRA_YUBI_KEY_PIN = "yubi_key_pin"; - public static final String EXTRA_YUBI_KEY_ADMIN_PIN = "yubi_key_admin_pin"; + public static final String EXTRA_CREATE_SECURITY_TOKEN = "create_yubi_key"; + public static final String EXTRA_SECURITY_TOKEN_PIN = "yubi_key_pin"; + public static final String EXTRA_SECURITY_TOKEN_ADMIN_PIN = "yubi_key_admin_pin"; public static final String EXTRA_NFC_USER_ID = "nfc_user_id"; public static final String EXTRA_NFC_AID = "nfc_aid"; @@ -58,9 +58,9 @@ public class CreateKeyActivity extends BaseNfcActivity { ArrayList mAdditionalEmails; Passphrase mPassphrase; boolean mFirstTime; - boolean mCreateYubiKey; - Passphrase mYubiKeyPin; - Passphrase mYubiKeyAdminPin; + boolean mCreateSecurityToken; + Passphrase mSecurityTokenPin; + Passphrase mSecurityTokenAdminPin; Fragment mCurrentFragment; @@ -93,9 +93,9 @@ public class CreateKeyActivity extends BaseNfcActivity { mAdditionalEmails = savedInstanceState.getStringArrayList(EXTRA_ADDITIONAL_EMAILS); mPassphrase = savedInstanceState.getParcelable(EXTRA_PASSPHRASE); mFirstTime = savedInstanceState.getBoolean(EXTRA_FIRST_TIME); - mCreateYubiKey = savedInstanceState.getBoolean(EXTRA_CREATE_YUBI_KEY); - mYubiKeyPin = savedInstanceState.getParcelable(EXTRA_YUBI_KEY_PIN); - mYubiKeyAdminPin = savedInstanceState.getParcelable(EXTRA_YUBI_KEY_ADMIN_PIN); + mCreateSecurityToken = savedInstanceState.getBoolean(EXTRA_CREATE_SECURITY_TOKEN); + mSecurityTokenPin = savedInstanceState.getParcelable(EXTRA_SECURITY_TOKEN_PIN); + mSecurityTokenAdminPin = savedInstanceState.getParcelable(EXTRA_SECURITY_TOKEN_ADMIN_PIN); mCurrentFragment = getSupportFragmentManager().findFragmentByTag(FRAGMENT_TAG); } else { @@ -105,7 +105,7 @@ public class CreateKeyActivity extends BaseNfcActivity { mName = intent.getStringExtra(EXTRA_NAME); mEmail = intent.getStringExtra(EXTRA_EMAIL); mFirstTime = intent.getBooleanExtra(EXTRA_FIRST_TIME, false); - mCreateYubiKey = intent.getBooleanExtra(EXTRA_CREATE_YUBI_KEY, false); + mCreateSecurityToken = intent.getBooleanExtra(EXTRA_CREATE_SECURITY_TOKEN, false); if (intent.hasExtra(EXTRA_NFC_FINGERPRINTS)) { byte[] nfcFingerprints = intent.getByteArrayExtra(EXTRA_NFC_FINGERPRINTS); @@ -113,13 +113,13 @@ public class CreateKeyActivity extends BaseNfcActivity { byte[] nfcAid = intent.getByteArrayExtra(EXTRA_NFC_AID); if (containsKeys(nfcFingerprints)) { - Fragment frag = CreateYubiKeyImportResetFragment.newInstance( + Fragment frag = CreateSecurityTokenImportResetFragment.newInstance( nfcFingerprints, nfcAid, nfcUserId); loadFragment(frag, FragAction.START); setTitle(R.string.title_import_keys); } else { - Fragment frag = CreateYubiKeyBlankFragment.newInstance(); + Fragment frag = CreateSecurityTokenBlankFragment.newInstance(); loadFragment(frag, FragAction.START); setTitle(R.string.title_manage_my_keys); } @@ -169,19 +169,19 @@ public class CreateKeyActivity extends BaseNfcActivity { Intent intent = new Intent(this, ViewKeyActivity.class); intent.setData(KeyRings.buildGenericKeyRingUri(masterKeyId)); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_AID, mNfcAid); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_USER_ID, mNfcUserId); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_FINGERPRINTS, mScannedFingerprints); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_AID, mNfcAid); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_USER_ID, mNfcUserId); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_FINGERPRINTS, mScannedFingerprints); startActivity(intent); finish(); } catch (PgpKeyNotFoundException e) { - Fragment frag = CreateYubiKeyImportResetFragment.newInstance( + Fragment frag = CreateSecurityTokenImportResetFragment.newInstance( mScannedFingerprints, mNfcAid, mNfcUserId); loadFragment(frag, FragAction.TO_RIGHT); } } else { - Fragment frag = CreateYubiKeyBlankFragment.newInstance(); + Fragment frag = CreateSecurityTokenBlankFragment.newInstance(); loadFragment(frag, FragAction.TO_RIGHT); } } @@ -209,9 +209,9 @@ public class CreateKeyActivity extends BaseNfcActivity { outState.putStringArrayList(EXTRA_ADDITIONAL_EMAILS, mAdditionalEmails); outState.putParcelable(EXTRA_PASSPHRASE, mPassphrase); outState.putBoolean(EXTRA_FIRST_TIME, mFirstTime); - outState.putBoolean(EXTRA_CREATE_YUBI_KEY, mCreateYubiKey); - outState.putParcelable(EXTRA_YUBI_KEY_PIN, mYubiKeyPin); - outState.putParcelable(EXTRA_YUBI_KEY_ADMIN_PIN, mYubiKeyAdminPin); + outState.putBoolean(EXTRA_CREATE_SECURITY_TOKEN, mCreateSecurityToken); + outState.putParcelable(EXTRA_SECURITY_TOKEN_PIN, mSecurityTokenPin); + outState.putParcelable(EXTRA_SECURITY_TOKEN_ADMIN_PIN, mSecurityTokenAdminPin); } @Override diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java index acb768f55..b020a0dba 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java @@ -235,10 +235,10 @@ public class CreateKeyEmailFragment extends Fragment { CreateKeyActivity createKeyActivity = ((CreateKeyActivity) getActivity()); - if (createKeyActivity.mCreateYubiKey) { + if (createKeyActivity.mCreateSecurityToken) { hideKeyboard(); - CreateYubiKeyPinFragment frag = CreateYubiKeyPinFragment.newInstance(); + CreateSecurityTokenPinFragment frag = CreateSecurityTokenPinFragment.newInstance(); mCreateKeyActivity.loadFragment(frag, FragAction.TO_RIGHT); } else { CreateKeyPassphraseFragment frag = CreateKeyPassphraseFragment.newInstance(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java index b79e4454d..5c3ac999c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java @@ -24,7 +24,6 @@ import java.util.Iterator; import android.app.Activity; import android.content.Intent; import android.database.Cursor; -import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; @@ -188,7 +187,7 @@ public class CreateKeyFinalFragment extends Fragment { if (mSaveKeyringParcel == null) { mSaveKeyringParcel = new SaveKeyringParcel(); - if (createKeyActivity.mCreateYubiKey) { + if (createKeyActivity.mCreateSecurityToken) { mSaveKeyringParcel.mAddSubKeys.add(new SaveKeyringParcel.SubkeyAdd(Algorithm.RSA, 2048, null, KeyFlags.SIGN_DATA | KeyFlags.CERTIFY_OTHER, 0L)); mSaveKeyringParcel.mAddSubKeys.add(new SaveKeyringParcel.SubkeyAdd(Algorithm.RSA, @@ -263,7 +262,7 @@ public class CreateKeyFinalFragment extends Fragment { return; } - final boolean createYubiKey = activity.mCreateYubiKey; + final boolean createSecurityToken = activity.mCreateSecurityToken; CryptoOperationHelper.Callback createKeyCallback = new CryptoOperationHelper.Callback() { @@ -275,7 +274,7 @@ public class CreateKeyFinalFragment extends Fragment { @Override public void onCryptoOperationSuccess(EditKeyResult result) { - if (createYubiKey) { + if (createSecurityToken) { moveToCard(result); return; } @@ -327,7 +326,7 @@ public class CreateKeyFinalFragment extends Fragment { try { changeKeyringParcel = new SaveKeyringParcel(key.getMasterKeyId(), key.getFingerprint()); } catch (PgpKeyNotFoundException e) { - Log.e(Constants.TAG, "Key that should be moved to YubiKey not found in database!"); + Log.e(Constants.TAG, "Key that should be moved to Security Token not found in database!"); return; } @@ -339,7 +338,7 @@ public class CreateKeyFinalFragment extends Fragment { try { while (cursor != null && cursor.moveToNext()) { long subkeyId = cursor.getLong(0); - changeKeyringParcel.getOrCreateSubkeyChange(subkeyId).mMoveKeyToCard = true; + changeKeyringParcel.getOrCreateSubkeyChange(subkeyId).mMoveKeyToSecurityToken = true; } } finally { if (cursor != null) { @@ -348,8 +347,8 @@ public class CreateKeyFinalFragment extends Fragment { } // define new PIN and Admin PIN for the card - changeKeyringParcel.mCardPin = activity.mYubiKeyPin; - changeKeyringParcel.mCardAdminPin = activity.mYubiKeyAdminPin; + changeKeyringParcel.mSecurityTokenPin = activity.mSecurityTokenPin; + changeKeyringParcel.mSecurityTokenAdminPin = activity.mSecurityTokenAdminPin; CryptoOperationHelper.Callback callback = new CryptoOperationHelper.Callback() { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyStartFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyStartFragment.java index 68ec0e8c8..c62ec97e7 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyStartFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyStartFragment.java @@ -38,7 +38,7 @@ public class CreateKeyStartFragment extends Fragment { View mCreateKey; View mImportKey; - View mYubiKey; + View mSecurityToken; TextView mSkipOrCancel; public static final int REQUEST_CODE_IMPORT_KEY = 0x00007012; @@ -61,7 +61,7 @@ public class CreateKeyStartFragment extends Fragment { mCreateKey = view.findViewById(R.id.create_key_create_key_button); mImportKey = view.findViewById(R.id.create_key_import_button); - mYubiKey = view.findViewById(R.id.create_key_yubikey_button); + mSecurityToken = view.findViewById(R.id.create_key_security_token_button); mSkipOrCancel = (TextView) view.findViewById(R.id.create_key_cancel); if (mCreateKeyActivity.mFirstTime) { @@ -78,10 +78,10 @@ public class CreateKeyStartFragment extends Fragment { } }); - mYubiKey.setOnClickListener(new View.OnClickListener() { + mSecurityToken.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - CreateYubiKeyWaitFragment frag = new CreateYubiKeyWaitFragment(); + CreateSecurityTokenWaitFragment frag = new CreateSecurityTokenWaitFragment(); mCreateKeyActivity.loadFragment(frag, FragAction.TO_RIGHT); } }); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyBlankFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenBlankFragment.java similarity index 90% rename from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyBlankFragment.java rename to OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenBlankFragment.java index 5b13dc88e..08441c199 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyBlankFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenBlankFragment.java @@ -27,7 +27,7 @@ import android.view.ViewGroup; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction; -public class CreateYubiKeyBlankFragment extends Fragment { +public class CreateSecurityTokenBlankFragment extends Fragment { CreateKeyActivity mCreateKeyActivity; View mBackButton; @@ -36,8 +36,8 @@ public class CreateYubiKeyBlankFragment extends Fragment { /** * Creates new instance of this fragment */ - public static CreateYubiKeyBlankFragment newInstance() { - CreateYubiKeyBlankFragment frag = new CreateYubiKeyBlankFragment(); + public static CreateSecurityTokenBlankFragment newInstance() { + CreateSecurityTokenBlankFragment frag = new CreateSecurityTokenBlankFragment(); Bundle args = new Bundle(); @@ -81,7 +81,7 @@ public class CreateYubiKeyBlankFragment extends Fragment { } private void nextClicked() { - mCreateKeyActivity.mCreateYubiKey = true; + mCreateKeyActivity.mCreateSecurityToken = true; CreateKeyNameFragment frag = CreateKeyNameFragment.newInstance(); mCreateKeyActivity.loadFragment(frag, FragAction.TO_RIGHT); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyImportResetFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenImportResetFragment.java similarity index 74% rename from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyImportResetFragment.java rename to OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenImportResetFragment.java index 5712f4452..81f782149 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyImportResetFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenImportResetFragment.java @@ -49,7 +49,7 @@ import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import org.sufficientlysecure.keychain.util.Preferences; -public class CreateYubiKeyImportResetFragment +public class CreateSecurityTokenImportResetFragment extends QueueingCryptoOperationFragment implements NfcListenerFragment { @@ -61,10 +61,10 @@ public class CreateYubiKeyImportResetFragment CreateKeyActivity mCreateKeyActivity; - private byte[] mNfcFingerprints; - private byte[] mNfcAid; - private String mNfcUserId; - private String mNfcFingerprint; + private byte[] mTokenFingerprints; + private byte[] mTokenAid; + private String mTokenUserId; + private String mTokenFingerprint; private ImportKeysListFragment mListFragment; private TextView vSerNo; private TextView vUserId; @@ -79,7 +79,7 @@ public class CreateYubiKeyImportResetFragment public static Fragment newInstance(byte[] scannedFingerprints, byte[] nfcAid, String userId) { - CreateYubiKeyImportResetFragment frag = new CreateYubiKeyImportResetFragment(); + CreateSecurityTokenImportResetFragment frag = new CreateSecurityTokenImportResetFragment(); Bundle args = new Bundle(); args.putByteArray(ARG_FINGERPRINTS, scannedFingerprints); @@ -96,26 +96,26 @@ public class CreateYubiKeyImportResetFragment Bundle args = savedInstanceState != null ? savedInstanceState : getArguments(); - mNfcFingerprints = args.getByteArray(ARG_FINGERPRINTS); - mNfcAid = args.getByteArray(ARG_AID); - mNfcUserId = args.getString(ARG_USER_ID); + mTokenFingerprints = args.getByteArray(ARG_FINGERPRINTS); + mTokenAid = args.getByteArray(ARG_AID); + mTokenUserId = args.getString(ARG_USER_ID); byte[] fp = new byte[20]; - ByteBuffer.wrap(fp).put(mNfcFingerprints, 0, 20); - mNfcFingerprint = KeyFormattingUtils.convertFingerprintToHex(fp); + ByteBuffer.wrap(fp).put(mTokenFingerprints, 0, 20); + mTokenFingerprint = KeyFormattingUtils.convertFingerprintToHex(fp); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.create_yubi_key_import_reset_fragment, container, false); + View view = inflater.inflate(R.layout.create_security_token_import_reset_fragment, container, false); - vSerNo = (TextView) view.findViewById(R.id.yubikey_serno); - vUserId = (TextView) view.findViewById(R.id.yubikey_userid); + vSerNo = (TextView) view.findViewById(R.id.token_serno); + vUserId = (TextView) view.findViewById(R.id.token_userid); mNextButton = (TextView) view.findViewById(R.id.create_key_next_button); - mRadioImport = (RadioButton) view.findViewById(R.id.yubikey_decision_import); - mRadioReset = (RadioButton) view.findViewById(R.id.yubikey_decision_reset); - mResetWarning = view.findViewById(R.id.yubikey_import_reset_warning); + mRadioImport = (RadioButton) view.findViewById(R.id.token_decision_import); + mRadioReset = (RadioButton) view.findViewById(R.id.token_decision_reset); + mResetWarning = view.findViewById(R.id.token_import_reset_warning); View mBackButton = view.findViewById(R.id.create_key_back_button); mBackButton.setOnClickListener(new View.OnClickListener() { @@ -142,7 +142,7 @@ public class CreateYubiKeyImportResetFragment }); mListFragment = ImportKeysListFragment.newInstance(null, null, - "0x" + mNfcFingerprint, true, null); + "0x" + mTokenFingerprint, true, null); mRadioImport.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override @@ -154,7 +154,7 @@ public class CreateYubiKeyImportResetFragment mResetWarning.setVisibility(View.GONE); getFragmentManager().beginTransaction() - .replace(R.id.yubikey_import_fragment, mListFragment, "yubikey_import") + .replace(R.id.security_token_import_fragment, mListFragment, "token_import") .commit(); getFragmentManager().executePendingTransactions(); @@ -188,9 +188,9 @@ public class CreateYubiKeyImportResetFragment public void onSaveInstanceState(Bundle args) { super.onSaveInstanceState(args); - args.putByteArray(ARG_FINGERPRINTS, mNfcFingerprints); - args.putByteArray(ARG_AID, mNfcAid); - args.putString(ARG_USER_ID, mNfcUserId); + args.putByteArray(ARG_FINGERPRINTS, mTokenFingerprints); + args.putByteArray(ARG_AID, mTokenAid); + args.putString(ARG_USER_ID, mTokenUserId); } @Override @@ -200,25 +200,25 @@ public class CreateYubiKeyImportResetFragment } public void setData() { - String serno = Hex.toHexString(mNfcAid, 10, 4); - vSerNo.setText(getString(R.string.yubikey_serno, serno)); + String serno = Hex.toHexString(mTokenAid, 10, 4); + vSerNo.setText(getString(R.string.security_token_serial_no, serno)); - if (!mNfcUserId.isEmpty()) { - vUserId.setText(getString(R.string.yubikey_key_holder, mNfcUserId)); + if (!mTokenUserId.isEmpty()) { + vUserId.setText(getString(R.string.security_token_key_holder, mTokenUserId)); } else { - vUserId.setText(getString(R.string.yubikey_key_holder_not_set)); + vUserId.setText(getString(R.string.security_token_key_holder_not_set)); } } public void refreshSearch() { - mListFragment.loadNew(new ImportKeysListFragment.CloudLoaderState("0x" + mNfcFingerprint, + mListFragment.loadNew(new ImportKeysListFragment.CloudLoaderState("0x" + mTokenFingerprint, Preferences.getPreferences(getActivity()).getCloudSearchPrefs())); } public void importKey() { ArrayList keyList = new ArrayList<>(); - keyList.add(new ParcelableKeyRing(mNfcFingerprint, null)); + keyList.add(new ParcelableKeyRing(mTokenFingerprint, null)); mKeyList = keyList; mKeyserver = Preferences.getPreferences(getActivity()).getPreferredKeyserver(); @@ -230,11 +230,11 @@ public class CreateYubiKeyImportResetFragment } public void resetCard() { - Intent intent = new Intent(getActivity(), NfcOperationActivity.class); - intent.putExtra(NfcOperationActivity.EXTRA_SERVICE_INTENT, (Parcelable[]) null); + Intent intent = new Intent(getActivity(), SecurityTokenOperationActivity.class); + intent.putExtra(SecurityTokenOperationActivity.EXTRA_SERVICE_INTENT, (Parcelable[]) null); RequiredInputParcel resetP = RequiredInputParcel.createNfcReset(); - intent.putExtra(NfcOperationActivity.EXTRA_REQUIRED_INPUT, resetP); - intent.putExtra(NfcOperationActivity.EXTRA_CRYPTO_INPUT, new CryptoInputParcel()); + intent.putExtra(SecurityTokenOperationActivity.EXTRA_REQUIRED_INPUT, resetP); + intent.putExtra(SecurityTokenOperationActivity.EXTRA_CRYPTO_INPUT, new CryptoInputParcel()); startActivityForResult(intent, REQUEST_CODE_RESET); } @@ -251,13 +251,13 @@ public class CreateYubiKeyImportResetFragment @Override public void doNfcInBackground() throws IOException { - mNfcFingerprints = mCreateKeyActivity.nfcGetFingerprints(); - mNfcAid = mCreateKeyActivity.nfcGetAid(); - mNfcUserId = mCreateKeyActivity.nfcGetUserId(); + mTokenFingerprints = mCreateKeyActivity.nfcGetFingerprints(); + mTokenAid = mCreateKeyActivity.nfcGetAid(); + mTokenUserId = mCreateKeyActivity.nfcGetUserId(); byte[] fp = new byte[20]; - ByteBuffer.wrap(fp).put(mNfcFingerprints, 0, 20); - mNfcFingerprint = KeyFormattingUtils.convertFingerprintToHex(fp); + ByteBuffer.wrap(fp).put(mTokenFingerprints, 0, 20); + mTokenFingerprint = KeyFormattingUtils.convertFingerprintToHex(fp); } @Override @@ -284,13 +284,13 @@ public class CreateYubiKeyImportResetFragment Activity activity = getActivity(); Intent intent = new Intent(activity, ViewKeyActivity.class); - // use the imported masterKeyId, not the one from the yubikey, because + // use the imported masterKeyId, not the one from the token, because // that one might* just have been a subkey of the imported key intent.setData(KeyRings.buildGenericKeyRingUri(masterKeyIds[0])); intent.putExtra(ViewKeyActivity.EXTRA_DISPLAY_RESULT, result); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_AID, mNfcAid); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_USER_ID, mNfcUserId); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_FINGERPRINTS, mNfcFingerprints); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_AID, mTokenAid); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_USER_ID, mTokenUserId); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_FINGERPRINTS, mTokenFingerprints); startActivity(intent); activity.finish(); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyPinFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenPinFragment.java similarity index 91% rename from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyPinFragment.java rename to OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenPinFragment.java index 128383d6d..45cf7a665 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyPinFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenPinFragment.java @@ -37,7 +37,7 @@ import java.security.SecureRandom; import java.util.Arrays; import java.util.HashSet; -public class CreateYubiKeyPinFragment extends Fragment { +public class CreateSecurityTokenPinFragment extends Fragment { // view CreateKeyActivity mCreateKeyActivity; @@ -65,8 +65,8 @@ public class CreateYubiKeyPinFragment extends Fragment { /** * Creates new instance of this fragment */ - public static CreateYubiKeyPinFragment newInstance() { - CreateYubiKeyPinFragment frag = new CreateYubiKeyPinFragment(); + public static CreateSecurityTokenPinFragment newInstance() { + CreateSecurityTokenPinFragment frag = new CreateSecurityTokenPinFragment(); Bundle args = new Bundle(); frag.setArguments(args); @@ -109,7 +109,7 @@ public class CreateYubiKeyPinFragment extends Fragment { mBackButton = view.findViewById(R.id.create_key_back_button); mNextButton = view.findViewById(R.id.create_key_next_button); - if (mCreateKeyActivity.mYubiKeyPin == null) { + if (mCreateKeyActivity.mSecurityTokenPin == null) { new AsyncTask() { @Override protected Passphrase doInBackground(Void... unused) { @@ -129,13 +129,13 @@ public class CreateYubiKeyPinFragment extends Fragment { @Override protected void onPostExecute(Passphrase adminPin) { - mCreateKeyActivity.mYubiKeyAdminPin = adminPin; + mCreateKeyActivity.mSecurityTokenAdminPin = adminPin; - mAdminPin.setText(mCreateKeyActivity.mYubiKeyAdminPin.toStringUnsafe()); + mAdminPin.setText(mCreateKeyActivity.mSecurityTokenAdminPin.toStringUnsafe()); } }.execute(); } else { - mAdminPin.setText(mCreateKeyActivity.mYubiKeyAdminPin.toStringUnsafe()); + mAdminPin.setText(mCreateKeyActivity.mSecurityTokenAdminPin.toStringUnsafe()); } mPin.requestFocus(); @@ -187,7 +187,7 @@ public class CreateYubiKeyPinFragment extends Fragment { return; } - mCreateKeyActivity.mYubiKeyPin = new Passphrase(mPin.getText().toString()); + mCreateKeyActivity.mSecurityTokenPin = new Passphrase(mPin.getText().toString()); CreateKeyFinalFragment frag = CreateKeyFinalFragment.newInstance(); hideKeyboard(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyWaitFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenWaitFragment.java similarity index 91% rename from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyWaitFragment.java rename to OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenWaitFragment.java index d45195512..a3ea38e40 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyWaitFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenWaitFragment.java @@ -28,14 +28,14 @@ import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction; -public class CreateYubiKeyWaitFragment extends Fragment { +public class CreateSecurityTokenWaitFragment extends Fragment { CreateKeyActivity mCreateKeyActivity; View mBackButton; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.create_yubi_key_wait_fragment, container, false); + View view = inflater.inflate(R.layout.create_security_token_wait_fragment, container, false); mBackButton = view.findViewById(R.id.create_key_back_button); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java index 1c72cdf41..2d94d0d93 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java @@ -435,9 +435,9 @@ public class EditKeyFragment extends QueueingCryptoOperationFragment { public static final String ACTION_IMPORT_KEY = OpenKeychainIntents.IMPORT_KEY; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java index 7bd7bafcc..af60a1d9b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java @@ -40,11 +40,11 @@ import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.operations.results.OperationResult; import org.sufficientlysecure.keychain.remote.ui.AppsListFragment; -import org.sufficientlysecure.keychain.ui.base.BaseNfcActivity; +import org.sufficientlysecure.keychain.ui.base.BaseSecurityTokenNfcActivity; import org.sufficientlysecure.keychain.util.FabContainer; import org.sufficientlysecure.keychain.util.Preferences; -public class MainActivity extends BaseNfcActivity implements FabContainer, OnBackStackChangedListener { +public class MainActivity extends BaseSecurityTokenNfcActivity implements FabContainer, OnBackStackChangedListener { static final int ID_KEYS = 1; static final int ID_ENCRYPT_DECRYPT = 2; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java index 2fcbbf6c2..b934f3d5f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java @@ -261,7 +261,7 @@ public class PassphraseDialogActivity extends FragmentActivity { hint = getString(R.string.label_pin); break; case DIVERT_TO_CARD: - message = getString(R.string.yubikey_pin_for, userId); + message = getString(R.string.security_token_pin_for, userId); hint = getString(R.string.label_pin); break; // special case: empty passphrase just returns the empty passphrase @@ -313,7 +313,7 @@ public class PassphraseDialogActivity extends FragmentActivity { mPassphraseEditText.setImeActionLabel(getString(android.R.string.ok), EditorInfo.IME_ACTION_DONE); mPassphraseEditText.setOnEditorActionListener(this); - if ((keyType == CanonicalizedSecretKey.SecretKeyType.DIVERT_TO_CARD && Preferences.getPreferences(activity).useNumKeypadForYubiKeyPin()) + if ((keyType == CanonicalizedSecretKey.SecretKeyType.DIVERT_TO_CARD && Preferences.getPreferences(activity).useNumKeypadForSecurityTokenPin()) || keyType == CanonicalizedSecretKey.SecretKeyType.PIN) { mPassphraseEditText.setInputType(InputType.TYPE_CLASS_NUMBER); mPassphraseEditText.setTransformationMethod(PasswordTransformationMethod.getInstance()); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcOperationActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityTokenOperationActivity.java similarity index 89% rename from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcOperationActivity.java rename to OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityTokenOperationActivity.java index 86b0a36d0..130dd6a79 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcOperationActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityTokenOperationActivity.java @@ -27,7 +27,6 @@ import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.TextView; -import android.widget.Toast; import android.widget.ViewAnimator; import org.sufficientlysecure.keychain.Constants; @@ -40,12 +39,11 @@ import org.sufficientlysecure.keychain.remote.CryptoInputParcelCacheService; import org.sufficientlysecure.keychain.service.PassphraseCacheService; import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; import org.sufficientlysecure.keychain.service.input.RequiredInputParcel; -import org.sufficientlysecure.keychain.ui.base.BaseNfcActivity; +import org.sufficientlysecure.keychain.ui.base.BaseSecurityTokenNfcActivity; import org.sufficientlysecure.keychain.ui.util.ThemeChanger; import org.sufficientlysecure.keychain.util.Log; import org.sufficientlysecure.keychain.util.OrientationUtils; import org.sufficientlysecure.keychain.util.Passphrase; -import org.sufficientlysecure.keychain.util.Preferences; import java.io.IOException; import java.nio.ByteBuffer; @@ -56,7 +54,7 @@ import java.util.Arrays; * NFC devices. * For the full specs, see http://g10code.com/docs/openpgp-card-2.0.pdf */ -public class NfcOperationActivity extends BaseNfcActivity { +public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity { public static final String EXTRA_REQUIRED_INPUT = "required_input"; public static final String EXTRA_CRYPTO_INPUT = "crypto_input"; @@ -99,12 +97,12 @@ public class NfcOperationActivity extends BaseNfcActivity { mInputParcel = getIntent().getParcelableExtra(EXTRA_CRYPTO_INPUT); - setTitle(R.string.nfc_text); + setTitle(R.string.security_token_nfc_text); vAnimator = (ViewAnimator) findViewById(R.id.view_animator); vAnimator.setDisplayedChild(0); - vErrorText = (TextView) findViewById(R.id.nfc_activity_3_error_text); - vErrorTryAgainButton = (Button) findViewById(R.id.nfc_activity_3_error_try_again); + vErrorText = (TextView) findViewById(R.id.security_token_activity_3_error_text); + vErrorTryAgainButton = (Button) findViewById(R.id.security_token_activity_3_error_try_again); vErrorTryAgainButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -114,7 +112,7 @@ public class NfcOperationActivity extends BaseNfcActivity { vAnimator.setDisplayedChild(0); } }); - Button vCancel = (Button) findViewById(R.id.nfc_activity_0_cancel); + Button vCancel = (Button) findViewById(R.id.security_token_activity_0_cancel); vCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -136,13 +134,13 @@ public class NfcOperationActivity extends BaseNfcActivity { // obtain passphrase for this subkey if (mRequiredInput.mType != RequiredInputParcel.RequiredInputType.NFC_MOVE_KEY_TO_CARD && mRequiredInput.mType != RequiredInputParcel.RequiredInputType.NFC_RESET_CARD) { - obtainYubiKeyPin(mRequiredInput); + obtainSecurityTokenPin(mRequiredInput); } } @Override protected void initLayout() { - setContentView(R.layout.nfc_operation_activity); + setContentView(R.layout.security_token_operation_activity); } @Override @@ -186,7 +184,7 @@ public class NfcOperationActivity extends BaseNfcActivity { KeychainContract.KeyRings.buildUnifiedKeyRingsFindBySubkeyUri(mRequiredInput.getMasterKeyId()) ); } catch (ProviderHelper.NotFoundException e) { - throw new IOException("Couldn't find subkey for key to card operation."); + throw new IOException("Couldn't find subkey for key to token operation."); } byte[] newPin = mRequiredInput.mInputData[0]; @@ -202,7 +200,7 @@ public class NfcOperationActivity extends BaseNfcActivity { long keyGenerationTimestampMillis = key.getCreationTime().getTime(); long keyGenerationTimestamp = keyGenerationTimestampMillis / 1000; byte[] timestampBytes = ByteBuffer.allocate(4).putInt((int) keyGenerationTimestamp).array(); - byte[] cardSerialNumber = Arrays.copyOf(nfcGetAid(), 16); + byte[] tokenSerialNumber = Arrays.copyOf(nfcGetAid(), 16); Passphrase passphrase; try { @@ -218,7 +216,7 @@ public class NfcOperationActivity extends BaseNfcActivity { nfcPutData(0xCE, timestampBytes); nfcPutData(0xC7, key.getFingerprint()); } else { - throw new IOException("Key slot occupied; card must be reset to put new signature key."); + throw new IOException("Key slot occupied; token must be reset to put new signature key."); } } else if (key.canEncrypt()) { if (shouldPutKey(key.getFingerprint(), 1)) { @@ -226,7 +224,7 @@ public class NfcOperationActivity extends BaseNfcActivity { nfcPutData(0xCF, timestampBytes); nfcPutData(0xC8, key.getFingerprint()); } else { - throw new IOException("Key slot occupied; card must be reset to put new decryption key."); + throw new IOException("Key slot occupied; token must be reset to put new decryption key."); } } else if (key.canAuthenticate()) { if (shouldPutKey(key.getFingerprint(), 2)) { @@ -234,14 +232,14 @@ public class NfcOperationActivity extends BaseNfcActivity { nfcPutData(0xD0, timestampBytes); nfcPutData(0xC9, key.getFingerprint()); } else { - throw new IOException("Key slot occupied; card must be reset to put new authentication key."); + throw new IOException("Key slot occupied; token must be reset to put new authentication key."); } } else { - throw new IOException("Inappropriate key flags for smart card key."); + throw new IOException("Inappropriate key flags for Security Token key."); } // TODO: Is this really used anywhere? - mInputParcel.addCryptoData(subkeyBytes, cardSerialNumber); + mInputParcel.addCryptoData(subkeyBytes, tokenSerialNumber); } // change PINs afterwards @@ -282,7 +280,7 @@ public class NfcOperationActivity extends BaseNfcActivity { new AsyncTask() { @Override protected Void doInBackground(Void... params) { - // check all 200ms if YubiKey has been taken away + // check all 200ms if Security Token has been taken away while (true) { if (isNfcConnected()) { try { @@ -307,7 +305,7 @@ public class NfcOperationActivity extends BaseNfcActivity { protected void onNfcError(String error) { pauseTagHandling(); - vErrorText.setText(error + "\n\n" + getString(R.string.nfc_try_again_text)); + vErrorText.setText(error + "\n\n" + getString(R.string.security_token_nfc_try_again_text)); vAnimator.setDisplayedChild(3); } @@ -321,17 +319,17 @@ public class NfcOperationActivity extends BaseNfcActivity { } private boolean shouldPutKey(byte[] fingerprint, int idx) throws IOException { - byte[] cardFingerprint = nfcGetMasterKeyFingerprint(idx); + byte[] tokenFingerprint = nfcGetMasterKeyFingerprint(idx); // Note: special case: This should not happen, but happens with // https://github.com/FluffyKaon/OpenPGP-Card, thus for now assume true - if (cardFingerprint == null) { + if (tokenFingerprint == null) { return true; } // Slot is empty, or contains this key already. PUT KEY operation is safe - if (Arrays.equals(cardFingerprint, BLANK_FINGERPRINT) || - Arrays.equals(cardFingerprint, fingerprint)) { + if (Arrays.equals(tokenFingerprint, BLANK_FINGERPRINT) || + Arrays.equals(tokenFingerprint, fingerprint)) { return true; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java index 67487f2ca..03fc07936 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java @@ -84,7 +84,7 @@ import org.sufficientlysecure.keychain.service.ImportKeyringParcel; import org.sufficientlysecure.keychain.service.SaveKeyringParcel; import org.sufficientlysecure.keychain.service.input.RequiredInputParcel; import org.sufficientlysecure.keychain.ui.ViewKeyFragment.PostponeType; -import org.sufficientlysecure.keychain.ui.base.BaseNfcActivity; +import org.sufficientlysecure.keychain.ui.base.BaseSecurityTokenNfcActivity; import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper; import org.sufficientlysecure.keychain.ui.dialog.SetPassphraseDialogFragment; import org.sufficientlysecure.keychain.ui.util.FormattingUtils; @@ -102,13 +102,13 @@ import org.sufficientlysecure.keychain.util.Passphrase; import org.sufficientlysecure.keychain.util.Preferences; -public class ViewKeyActivity extends BaseNfcActivity implements +public class ViewKeyActivity extends BaseSecurityTokenNfcActivity implements LoaderManager.LoaderCallbacks, CryptoOperationHelper.Callback { - public static final String EXTRA_NFC_USER_ID = "nfc_user_id"; - public static final String EXTRA_NFC_AID = "nfc_aid"; - public static final String EXTRA_NFC_FINGERPRINTS = "nfc_fingerprints"; + public static final String EXTRA_SECURITY_TOKEN_USER_ID = "security_token_user_id"; + public static final String EXTRA_SECURITY_TOKEN_AID = "security_token_aid"; + public static final String EXTRA_SECURITY_TOKEN_FINGERPRINTS = "security_token_fingerprints"; @Retention(RetentionPolicy.SOURCE) @IntDef({REQUEST_QR_FINGERPRINT, REQUEST_BACKUP, REQUEST_CERTIFY, REQUEST_DELETE}) @@ -159,7 +159,7 @@ public class ViewKeyActivity extends BaseNfcActivity implements private boolean mIsRevoked = false; private boolean mIsExpired = false; - private boolean mShowYubikeyAfterCreation = false; + private boolean mShowSecurityTokenAfterCreation = false; private MenuItem mRefreshItem; private boolean mIsRefreshing; @@ -345,9 +345,9 @@ public class ViewKeyActivity extends BaseNfcActivity implements .commit(); } - // need to postpone loading of the yubikey fragment until after mMasterKeyId + // need to postpone loading of the security token fragment until after mMasterKeyId // is available, but we mark here that this should be done - mShowYubikeyAfterCreation = true; + mShowSecurityTokenAfterCreation = true; } @@ -656,69 +656,69 @@ public class ViewKeyActivity extends BaseNfcActivity implements @Override protected void onNfcPostExecute() { - long yubiKeyId = KeyFormattingUtils.getKeyIdFromFingerprint(mNfcFingerprints); + long tokenId = KeyFormattingUtils.getKeyIdFromFingerprint(mNfcFingerprints); try { - // if the yubikey matches a subkey in any key + // if the security token matches a subkey in any key CachedPublicKeyRing ring = mProviderHelper.getCachedPublicKeyRing( - KeyRings.buildUnifiedKeyRingsFindBySubkeyUri(yubiKeyId)); + KeyRings.buildUnifiedKeyRingsFindBySubkeyUri(tokenId)); byte[] candidateFp = ring.getFingerprint(); - // if the master key of that key matches this one, just show the yubikey dialog + // if the master key of that key matches this one, just show the token dialog if (KeyFormattingUtils.convertFingerprintToHex(candidateFp).equals(mFingerprintString)) { - showYubiKeyFragment(mNfcFingerprints, mNfcUserId, mNfcAid); + showSecurityTokenFragment(mNfcFingerprints, mNfcUserId, mNfcAid); return; } // otherwise, offer to go to that key final long masterKeyId = KeyFormattingUtils.getKeyIdFromFingerprint(candidateFp); - Notify.create(this, R.string.snack_yubi_other, Notify.LENGTH_LONG, + Notify.create(this, R.string.snack_security_token_other, Notify.LENGTH_LONG, Style.WARN, new ActionListener() { @Override public void onAction() { Intent intent = new Intent( ViewKeyActivity.this, ViewKeyActivity.class); intent.setData(KeyRings.buildGenericKeyRingUri(masterKeyId)); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_AID, mNfcAid); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_USER_ID, mNfcUserId); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_FINGERPRINTS, mNfcFingerprints); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_AID, mNfcAid); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_USER_ID, mNfcUserId); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_FINGERPRINTS, mNfcFingerprints); startActivity(intent); finish(); } - }, R.string.snack_yubikey_view).show(); + }, R.string.snack_security_token_view).show(); // and if it's not found, offer import } catch (PgpKeyNotFoundException e) { - Notify.create(this, R.string.snack_yubi_other, Notify.LENGTH_LONG, + Notify.create(this, R.string.snack_security_token_other, Notify.LENGTH_LONG, Style.WARN, new ActionListener() { @Override public void onAction() { Intent intent = new Intent( ViewKeyActivity.this, CreateKeyActivity.class); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_AID, mNfcAid); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_USER_ID, mNfcUserId); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_FINGERPRINTS, mNfcFingerprints); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_AID, mNfcAid); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_USER_ID, mNfcUserId); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_FINGERPRINTS, mNfcFingerprints); startActivity(intent); finish(); } - }, R.string.snack_yubikey_import).show(); + }, R.string.snack_security_token_import).show(); } } - public void showYubiKeyFragment( - final byte[] nfcFingerprints, final String nfcUserId, final byte[] nfcAid) { + public void showSecurityTokenFragment( + final byte[] tokenFingerprints, final String tokenUserId, final byte[] tokenAid) { new Handler().post(new Runnable() { @Override public void run() { - ViewKeyYubiKeyFragment frag = ViewKeyYubiKeyFragment.newInstance( - mMasterKeyId, nfcFingerprints, nfcUserId, nfcAid); + ViewKeySecurityTokenFragment frag = ViewKeySecurityTokenFragment.newInstance( + mMasterKeyId, tokenFingerprints, tokenUserId, tokenAid); FragmentManager manager = getSupportFragmentManager(); - manager.popBackStack("yubikey", FragmentManager.POP_BACK_STACK_INCLUSIVE); + manager.popBackStack("security_token", FragmentManager.POP_BACK_STACK_INCLUSIVE); manager.beginTransaction() - .addToBackStack("yubikey") + .addToBackStack("security_token") .replace(R.id.view_key_fragment, frag) // if this is called while the activity wasn't resumed, just forget it happened .commitAllowingStateLoss(); @@ -888,14 +888,14 @@ public class ViewKeyActivity extends BaseNfcActivity implements mFingerprint = data.getBlob(INDEX_FINGERPRINT); mFingerprintString = KeyFormattingUtils.convertFingerprintToHex(mFingerprint); - // if it wasn't shown yet, display yubikey fragment - if (mShowYubikeyAfterCreation && getIntent().hasExtra(EXTRA_NFC_AID)) { - mShowYubikeyAfterCreation = false; + // if it wasn't shown yet, display token fragment + if (mShowSecurityTokenAfterCreation && getIntent().hasExtra(EXTRA_SECURITY_TOKEN_AID)) { + mShowSecurityTokenAfterCreation = false; Intent intent = getIntent(); - byte[] nfcFingerprints = intent.getByteArrayExtra(EXTRA_NFC_FINGERPRINTS); - String nfcUserId = intent.getStringExtra(EXTRA_NFC_USER_ID); - byte[] nfcAid = intent.getByteArrayExtra(EXTRA_NFC_AID); - showYubiKeyFragment(nfcFingerprints, nfcUserId, nfcAid); + byte[] tokenFingerprints = intent.getByteArrayExtra(EXTRA_SECURITY_TOKEN_FINGERPRINTS); + String tokenUserId = intent.getStringExtra(EXTRA_SECURITY_TOKEN_USER_ID); + byte[] tokenAid = intent.getByteArrayExtra(EXTRA_SECURITY_TOKEN_AID); + showSecurityTokenFragment(tokenFingerprints, tokenUserId, tokenAid); } mIsSecret = data.getInt(INDEX_HAS_ANY_SECRET) != 0; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvSubkeysFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvSubkeysFragment.java index 14477723e..fc6db1b92 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvSubkeysFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvSubkeysFragment.java @@ -340,9 +340,9 @@ public class ViewKeyAdvSubkeysFragment extends LoaderFragment implements } // toggle change.mDummyStrip = !change.mDummyStrip; - if (change.mDummyStrip && change.mMoveKeyToCard) { + if (change.mDummyStrip && change.mMoveKeyToSecurityToken) { // User had chosen to divert key, but now wants to strip it instead. - change.mMoveKeyToCard = false; + change.mMoveKeyToSecurityToken = false; } break; } @@ -384,8 +384,8 @@ public class ViewKeyAdvSubkeysFragment extends LoaderFragment implements // break; // } // // toggle -// change.mMoveKeyToCard = !change.mMoveKeyToCard; -// if (change.mMoveKeyToCard && change.mDummyStrip) { +// change.mMoveKeyToSecurityToken = !change.mMoveKeyToSecurityToken; +// if (change.mMoveKeyToSecurityToken && change.mDummyStrip) { // // User had chosen to strip key, but now wants to divert it. // change.mDummyStrip = false; // } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyYubiKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeySecurityTokenFragment.java similarity index 87% rename from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyYubiKeyFragment.java rename to OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeySecurityTokenFragment.java index f980f297b..48e41c7bb 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyYubiKeyFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeySecurityTokenFragment.java @@ -44,7 +44,7 @@ import org.sufficientlysecure.keychain.ui.base.QueueingCryptoOperationFragment; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; -public class ViewKeyYubiKeyFragment +public class ViewKeySecurityTokenFragment extends QueueingCryptoOperationFragment implements LoaderCallbacks { @@ -62,9 +62,9 @@ public class ViewKeyYubiKeyFragment private Button vButton; private TextView vStatus; - public static ViewKeyYubiKeyFragment newInstance(long masterKeyId, + public static ViewKeySecurityTokenFragment newInstance(long masterKeyId, byte[] fingerprints, String userId, byte[] aid) { - ViewKeyYubiKeyFragment frag = new ViewKeyYubiKeyFragment(); + ViewKeySecurityTokenFragment frag = new ViewKeySecurityTokenFragment(); Bundle args = new Bundle(); args.putLong(ARG_MASTER_KEY_ID, masterKeyId); @@ -76,7 +76,7 @@ public class ViewKeyYubiKeyFragment return frag; } - public ViewKeyYubiKeyFragment() { + public ViewKeySecurityTokenFragment() { super(null); } @@ -102,18 +102,18 @@ public class ViewKeyYubiKeyFragment @Override public View onCreateView(LayoutInflater inflater, ViewGroup superContainer, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.view_key_yubikey, null); + View view = inflater.inflate(R.layout.view_key_security_token, null); - TextView vSerNo = (TextView) view.findViewById(R.id.yubikey_serno); - TextView vUserId = (TextView) view.findViewById(R.id.yubikey_userid); + TextView vSerNo = (TextView) view.findViewById(R.id.token_serno); + TextView vUserId = (TextView) view.findViewById(R.id.token_userid); String serno = Hex.toHexString(mCardAid, 10, 4); - vSerNo.setText(getString(R.string.yubikey_serno, serno)); + vSerNo.setText(getString(R.string.security_token_serial_no, serno)); if (!mUserId.isEmpty()) { - vUserId.setText(getString(R.string.yubikey_key_holder, mUserId)); + vUserId.setText(getString(R.string.security_token_key_holder, mUserId)); } else { - vUserId.setText(getString(R.string.yubikey_key_holder_not_set)); + vUserId.setText(getString(R.string.security_token_key_holder_not_set)); } vButton = (Button) view.findViewById(R.id.button_bind); @@ -124,7 +124,7 @@ public class ViewKeyYubiKeyFragment } }); - vStatus = (TextView) view.findViewById(R.id.yubikey_status); + vStatus = (TextView) view.findViewById(R.id.token_status); return view; } @@ -185,12 +185,12 @@ public class ViewKeyYubiKeyFragment if (allBound) { vButton.setVisibility(View.GONE); - vStatus.setText(R.string.yubikey_status_bound); + vStatus.setText(R.string.security_token_status_bound); } else { vButton.setVisibility(View.VISIBLE); vStatus.setText(noneBound - ? R.string.yubikey_status_unbound - : R.string.yubikey_status_partly); + ? R.string.security_token_status_unbound + : R.string.security_token_status_partly); } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java index 84608f2dc..b5ef1d5e4 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java @@ -174,7 +174,7 @@ public class SubkeysAdapter extends CursorAdapter { ? mSaveKeyringParcel.getSubkeyChange(keyId) : null; - if (change != null && (change.mDummyStrip || change.mMoveKeyToCard)) { + if (change != null && (change.mDummyStrip || change.mMoveKeyToSecurityToken)) { if (change.mDummyStrip) { algorithmStr.append(", "); final SpannableString boldStripped = new SpannableString( @@ -183,7 +183,7 @@ public class SubkeysAdapter extends CursorAdapter { boldStripped.setSpan(new StyleSpan(Typeface.BOLD), 0, boldStripped.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); algorithmStr.append(boldStripped); } - if (change.mMoveKeyToCard) { + if (change.mMoveKeyToSecurityToken) { algorithmStr.append(", "); final SpannableString boldDivert = new SpannableString( context.getString(R.string.key_divert) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseNfcActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseSecurityTokenNfcActivity.java similarity index 93% rename from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseNfcActivity.java rename to OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseSecurityTokenNfcActivity.java index 3e0bc7890..0f00fcd92 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseNfcActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseSecurityTokenNfcActivity.java @@ -60,9 +60,8 @@ import org.sufficientlysecure.keychain.ui.util.Notify.Style; import org.sufficientlysecure.keychain.util.Iso7816TLV; import org.sufficientlysecure.keychain.util.Log; import org.sufficientlysecure.keychain.util.Passphrase; -import org.sufficientlysecure.keychain.util.Preferences; -public abstract class BaseNfcActivity extends BaseActivity { +public abstract class BaseSecurityTokenNfcActivity extends BaseActivity { public static final int REQUEST_CODE_PIN = 1; @@ -113,9 +112,9 @@ public abstract class BaseNfcActivity extends BaseActivity { Intent intent = new Intent(this, ViewKeyActivity.class); intent.setData(KeyRings.buildGenericKeyRingUri(masterKeyId)); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_AID, mNfcAid); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_USER_ID, mNfcUserId); - intent.putExtra(ViewKeyActivity.EXTRA_NFC_FINGERPRINTS, mNfcFingerprints); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_AID, mNfcAid); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_USER_ID, mNfcUserId); + intent.putExtra(ViewKeyActivity.EXTRA_SECURITY_TOKEN_FINGERPRINTS, mNfcFingerprints); startActivity(intent); } catch (PgpKeyNotFoundException e) { Intent intent = new Intent(this, CreateKeyActivity.class); @@ -224,12 +223,12 @@ public abstract class BaseNfcActivity extends BaseActivity { private void handleNfcError(IOException e) { if (e instanceof TagLostException) { - onNfcError(getString(R.string.error_nfc_tag_lost)); + onNfcError(getString(R.string.security_token_error_tag_lost)); return; } if (e instanceof IsoDepNotSupportedException) { - onNfcError(getString(R.string.error_nfc_iso_dep_not_supported)); + onNfcError(getString(R.string.security_token_error_iso_dep_not_supported)); return; } @@ -244,69 +243,69 @@ public abstract class BaseNfcActivity extends BaseActivity { if ((status & (short) 0xFFF0) == 0x63C0) { int tries = status & 0x000F; // hook to do something different when PIN is wrong - onNfcPinError(getResources().getQuantityString(R.plurals.error_pin, tries, tries)); + onNfcPinError(getResources().getQuantityString(R.plurals.security_token_error_pin, tries, tries)); return; } // Otherwise, all status codes are fixed values. switch (status) { // These errors should not occur in everyday use; if they are returned, it means we - // made a mistake sending data to the card, or the card is misbehaving. + // made a mistake sending data to the token, or the token is misbehaving. case 0x6A80: { - onNfcError(getString(R.string.error_nfc_bad_data)); + onNfcError(getString(R.string.security_token_error_bad_data)); break; } case 0x6883: { - onNfcError(getString(R.string.error_nfc_chaining_error)); + onNfcError(getString(R.string.security_token_error_chaining_error)); break; } case 0x6B00: { - onNfcError(getString(R.string.error_nfc_header, "P1/P2")); + onNfcError(getString(R.string.security_token_error_header, "P1/P2")); break; } case 0x6D00: { - onNfcError(getString(R.string.error_nfc_header, "INS")); + onNfcError(getString(R.string.security_token_error_header, "INS")); break; } case 0x6E00: { - onNfcError(getString(R.string.error_nfc_header, "CLA")); + onNfcError(getString(R.string.security_token_error_header, "CLA")); break; } // These error conditions are more likely to be experienced by an end user. case 0x6285: { - onNfcError(getString(R.string.error_nfc_terminated)); + onNfcError(getString(R.string.security_token_error_terminated)); break; } case 0x6700: { - onNfcPinError(getString(R.string.error_nfc_wrong_length)); + onNfcPinError(getString(R.string.security_token_error_wrong_length)); break; } case 0x6982: { - onNfcError(getString(R.string.error_nfc_security_not_satisfied)); + onNfcError(getString(R.string.security_token_error_security_not_satisfied)); break; } case 0x6983: { - onNfcError(getString(R.string.error_nfc_authentication_blocked)); + onNfcError(getString(R.string.security_token_error_authentication_blocked)); break; } case 0x6985: { - onNfcError(getString(R.string.error_nfc_conditions_not_satisfied)); + onNfcError(getString(R.string.security_token_error_conditions_not_satisfied)); break; } // 6A88 is "Not Found" in the spec, but Yubikey also returns 6A83 for this in some cases. case 0x6A88: case 0x6A83: { - onNfcError(getString(R.string.error_nfc_data_not_found)); + onNfcError(getString(R.string.security_token_error_data_not_found)); break; } // 6F00 is a JavaCard proprietary status code, SW_UNKNOWN, and usually represents an - // unhandled exception on the smart card. + // unhandled exception on the security token. case 0x6F00: { - onNfcError(getString(R.string.error_nfc_unknown)); + onNfcError(getString(R.string.security_token_error_unknown)); break; } default: { - onNfcError(getString(R.string.error_nfc, e.getMessage())); + onNfcError(getString(R.string.security_token_error, e.getMessage())); break; } } @@ -335,7 +334,7 @@ public abstract class BaseNfcActivity extends BaseActivity { enableNfcForegroundDispatch(); } - protected void obtainYubiKeyPin(RequiredInputParcel requiredInput) { + protected void obtainSecurityTokenPin(RequiredInputParcel requiredInput) { try { Passphrase passphrase = PassphraseCacheService.getCachedPassphrase(this, @@ -471,7 +470,7 @@ public abstract class BaseNfcActivity extends BaseActivity { return fptlv.mV; } - /** Return the PW Status Bytes from the card. This is a simple DO; no TLV decoding needed. + /** Return the PW Status Bytes from the token. This is a simple DO; no TLV decoding needed. * * @return Seven bytes in fixed format, plus 0x9000 status word at the end. */ @@ -697,7 +696,7 @@ public abstract class BaseNfcActivity extends BaseActivity { } } - // reactivate card! + // reactivate token! String reactivate1 = "00" + "e6" + "00" + "00"; String reactivate2 = "00" + "44" + "00" + "00"; String response1 = nfcCommunicate(reactivate1); @@ -722,7 +721,7 @@ public abstract class BaseNfcActivity extends BaseActivity { } /** Modifies the user's PW1 or PW3. Before sending, the new PIN will be validated for - * conformance to the card's requirements for key length. + * conformance to the token's requirements for key length. * * @param pw For PW1, this is 0x81. For PW3 (Admin PIN), mode is 0x83. * @param newPin The new PW1 or PW3. @@ -767,7 +766,7 @@ public abstract class BaseNfcActivity extends BaseActivity { } /** - * Stores a data object on the card. Automatically validates the proper PIN for the operation. + * Stores a data object on the token. Automatically validates the proper PIN for the operation. * Supported for all data objects < 255 bytes in length. Only the cardholder certificate * (0x7F21) can exceed this length. * @@ -800,9 +799,9 @@ public abstract class BaseNfcActivity extends BaseActivity { } /** - * Puts a key on the card in the given slot. + * Puts a key on the token in the given slot. * - * @param slot The slot on the card where the key should be stored: + * @param slot The slot on the token where the key should be stored: * 0xB6: Signature Key * 0xB8: Decipherment Key * 0xA4: Authentication Key @@ -823,12 +822,12 @@ public abstract class BaseNfcActivity extends BaseActivity { // Shouldn't happen; the UI should block the user from getting an incompatible key this far. if (crtSecretKey.getModulus().bitLength() > 2048) { - throw new IOException("Key too large to export to smart card."); + throw new IOException("Key too large to export to Security Token."); } // Should happen only rarely; all GnuPG keys since 2006 use public exponent 65537. if (!crtSecretKey.getPublicExponent().equals(new BigInteger("65537"))) { - throw new IOException("Invalid public exponent for smart card key."); + throw new IOException("Invalid public exponent for smart Security Token."); } if (!mPw3Validated) { @@ -884,7 +883,7 @@ public abstract class BaseNfcActivity extends BaseActivity { String putKeyCommand = "10DB3FFF"; String lastPutKeyCommand = "00DB3FFF"; - // Now we're ready to communicate with the card. + // Now we're ready to communicate with the token. offset = 0; String response; while(offset < dataToSend.length) { @@ -903,7 +902,7 @@ public abstract class BaseNfcActivity extends BaseActivity { } if (!response.endsWith("9000")) { - throw new CardException("Key export to card failed", parseCardStatus(response)); + throw new CardException("Key export to Security Token failed", parseCardStatus(response)); } } @@ -914,7 +913,7 @@ public abstract class BaseNfcActivity extends BaseActivity { /** * Parses out the status word from a JavaCard response string. * - * @param response A hex string with the response from the card + * @param response A hex string with the response from the token * @return A short indicating the SW1/SW2, or 0 if a status could not be determined. */ short parseCardStatus(String response) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationHelper.java index 7ab9c7237..451065d6b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationHelper.java @@ -39,7 +39,7 @@ import org.sufficientlysecure.keychain.service.KeychainService; import org.sufficientlysecure.keychain.service.ServiceProgressHandler; import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; import org.sufficientlysecure.keychain.service.input.RequiredInputParcel; -import org.sufficientlysecure.keychain.ui.NfcOperationActivity; +import org.sufficientlysecure.keychain.ui.SecurityTokenOperationActivity; import org.sufficientlysecure.keychain.ui.OrbotRequiredDialogActivity; import org.sufficientlysecure.keychain.ui.PassphraseDialogActivity; import org.sufficientlysecure.keychain.ui.RetryUploadDialogActivity; @@ -133,9 +133,9 @@ public class CryptoOperationHelper - + android:minHeight="?android:attr/listPreferredItemHeight"> + + + + + + + + + android:text="@string/security_token_import_radio" /> + android:text="@string/security_token_reset_radio" /> @@ -101,19 +101,19 @@ android:background="?android:attr/listDivider" /> diff --git a/OpenKeychain/src/main/res/layout/create_yubi_key_wait_fragment.xml b/OpenKeychain/src/main/res/layout/create_security_token_wait_fragment.xml similarity index 97% rename from OpenKeychain/src/main/res/layout/create_yubi_key_wait_fragment.xml rename to OpenKeychain/src/main/res/layout/create_security_token_wait_fragment.xml index 7f26995a7..4436cfe01 100644 --- a/OpenKeychain/src/main/res/layout/create_yubi_key_wait_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_security_token_wait_fragment.xml @@ -22,7 +22,7 @@ android:layout_marginTop="16dp" android:layout_marginLeft="8dp" android:textAppearance="?android:attr/textAppearanceMedium" - android:text="@string/yubikey_create" /> + android:text="@string/security_token_create" /> + android:text="@string/first_time_blank_security_token" /> @@ -64,7 +64,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="center_vertical" - android:text="@string/first_time_blank_yubikey_yes" + android:text="@string/first_time_blank_security_token_yes" android:textAllCaps="true" android:minHeight="?android:attr/listPreferredItemHeight" android:drawableRight="@drawable/ic_chevron_right_grey_24dp" diff --git a/OpenKeychain/src/main/res/layout/nfc_operation_activity.xml b/OpenKeychain/src/main/res/layout/security_token_operation_activity.xml similarity index 78% rename from OpenKeychain/src/main/res/layout/nfc_operation_activity.xml rename to OpenKeychain/src/main/res/layout/security_token_operation_activity.xml index d3ee363d5..1644f6a6f 100644 --- a/OpenKeychain/src/main/res/layout/nfc_operation_activity.xml +++ b/OpenKeychain/src/main/res/layout/security_token_operation_activity.xml @@ -21,34 +21,34 @@ android:layout_height="wrap_content">