diff options
| author | Vincent Breitmoser <valodim@mugenguild.com> | 2015-03-22 06:48:33 +0100 | 
|---|---|---|
| committer | Vincent Breitmoser <valodim@mugenguild.com> | 2015-03-22 06:48:33 +0100 | 
| commit | 2e838e4cce32a5926466b6069a58c6a3579c12bf (patch) | |
| tree | 864733b740b5157636fd23182401d5aadc31c6d9 /OpenKeychain/src | |
| parent | 212bba18693ebfce2dfa62afde8b11e8f0c2da0d (diff) | |
| download | open-keychain-2e838e4cce32a5926466b6069a58c6a3579c12bf.tar.gz open-keychain-2e838e4cce32a5926466b6069a58c6a3579c12bf.tar.bz2 open-keychain-2e838e4cce32a5926466b6069a58c6a3579c12bf.zip | |
enable nfc in import dialog as well
Diffstat (limited to 'OpenKeychain/src')
4 files changed, 51 insertions, 6 deletions
| diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java index 9a7c405d0..72ae1c73a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java @@ -38,6 +38,7 @@ import org.sufficientlysecure.keychain.operations.results.OperationResult;  import org.sufficientlysecure.keychain.service.KeychainIntentService;  import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;  import org.sufficientlysecure.keychain.ui.base.BaseActivity; +import org.sufficientlysecure.keychain.ui.base.BaseNfcActivity;  import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;  import org.sufficientlysecure.keychain.ui.util.Notify;  import org.sufficientlysecure.keychain.util.Log; @@ -47,7 +48,8 @@ import org.sufficientlysecure.keychain.util.ParcelableFileCache.IteratorWithSize  import java.io.IOException;  import java.util.ArrayList; -public class ImportKeysActivity extends BaseActivity { +public class ImportKeysActivity extends BaseNfcActivity { +      public static final String ACTION_IMPORT_KEY = OpenKeychainIntents.IMPORT_KEY;      public static final String ACTION_IMPORT_KEY_FROM_KEYSERVER = OpenKeychainIntents.IMPORT_KEY_FROM_KEYSERVER;      public static final String ACTION_IMPORT_KEY_FROM_KEYSERVER_AND_RETURN_RESULT = 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 3d298ea6c..fad477de3 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java @@ -559,7 +559,7 @@ public class ViewKeyActivity extends BaseNfcActivity implements                  CachedPublicKeyRing ring = mProviderHelper.getCachedPublicKeyRing(masterKeyId);                  ring.getMasterKeyId(); -                Notify.create(this, "Different key stored on Yubikey!", Notify.LENGTH_LONG, +                Notify.create(this, R.string.snack_yubi_other, Notify.LENGTH_LONG,                          Style.WARN, new ActionListener() {                              @Override                              public void onAction() { @@ -576,7 +576,7 @@ public class ViewKeyActivity extends BaseNfcActivity implements                  return;              } catch (PgpKeyNotFoundException e) { -                Notify.create(this, "Different key stored on Yubikey!", Notify.LENGTH_LONG, +                Notify.create(this, R.string.snack_yubi_other, Notify.LENGTH_LONG,                          Style.WARN, new ActionListener() {                              @Override                              public void onAction() { 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 2fd88fd66..2c2cb6067 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 @@ -16,9 +16,20 @@ import android.widget.Toast;  import org.spongycastle.bcpg.HashAlgorithmTags;  import org.spongycastle.util.encoders.Hex;  import org.sufficientlysecure.keychain.Constants; +import org.sufficientlysecure.keychain.R; +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.service.input.CryptoInputParcel;  import org.sufficientlysecure.keychain.service.input.RequiredInputParcel; +import org.sufficientlysecure.keychain.ui.CreateKeyActivity;  import org.sufficientlysecure.keychain.ui.PassphraseDialogActivity; +import org.sufficientlysecure.keychain.ui.ViewKeyActivity; +import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; +import org.sufficientlysecure.keychain.ui.util.Notify; +import org.sufficientlysecure.keychain.ui.util.Notify.ActionListener; +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; @@ -190,7 +201,38 @@ public abstract class BaseNfcActivity extends BaseActivity {      } -    protected abstract void onNfcPerform() throws IOException; +    protected void onNfcPerform() throws IOException { + +        final byte[] nfcFingerprints = nfcGetFingerprints(); +        final String nfcUserId = nfcGetUserId(); +        final byte[] nfcAid = nfcGetAid(); + +        String fp = KeyFormattingUtils.convertFingerprintToHex(nfcFingerprints); +        final long masterKeyId = KeyFormattingUtils.getKeyIdFromFingerprint(nfcFingerprints); + +        try { +            CachedPublicKeyRing ring = new ProviderHelper(this).getCachedPublicKeyRing(masterKeyId); +            ring.getMasterKeyId(); + +            Intent intent = new Intent( +                    BaseNfcActivity.this, ViewKeyActivity.class); +            intent.setData(KeyRings.buildGenericKeyRingUri(masterKeyId)); +            intent.putExtra(ViewKeyActivity.EXTRA_NFC_AID, nfcAid); +            intent.putExtra(ViewKeyActivity.EXTRA_NFC_USER_ID, nfcUserId); +            intent.putExtra(ViewKeyActivity.EXTRA_NFC_FINGERPRINTS, nfcFingerprints); +            startActivity(intent); +            finish(); +        } catch (PgpKeyNotFoundException e) { +            Intent intent = new Intent( +                    BaseNfcActivity.this, CreateKeyActivity.class); +            intent.putExtra(CreateKeyActivity.EXTRA_NFC_AID, nfcAid); +            intent.putExtra(CreateKeyActivity.EXTRA_NFC_USER_ID, nfcUserId); +            intent.putExtra(CreateKeyActivity.EXTRA_NFC_FINGERPRINTS, nfcFingerprints); +            startActivity(intent); +            finish(); +        } + +    }      /** Return the key id from application specific data stored on tag, or null       * if it doesn't exist. @@ -242,7 +284,7 @@ public abstract class BaseNfcActivity extends BaseActivity {          // return the master key fingerprint          ByteBuffer fpbuf = ByteBuffer.wrap(data);          byte[] fp = new byte[20]; -        fpbuf.position(idx*20); +        fpbuf.position(idx * 20);          fpbuf.get(fp, 0, 20);          return fp; diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index 27eda28a0..6aefbc7f5 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -1273,9 +1273,10 @@      <string name="yubikey_serno">"Serial No: %s"</string>      <string name="yubikey_key_holder">"Key holder: "</string>      <string name="yubikey_key_holder_unset">"Key holder: <unset>"</string> -    <string name="yubikey_status_bound">"Yubikey matches, bound to key"</string> +    <string name="yubikey_status_bound">"Yubikey matches and is bound to key"</string>      <string name="yubikey_status_unbound">"Yubikey matches, can be bound to key"</string>      <string name="yubikey_status_partly">"Yubikey matches, partly bound to key"</string>      <string name="btn_import">"Import"</string> +    <string name="snack_yubi_other">Different key stored on Yubikey!</string>  </resources> | 
