X-Git-Url: http://www.average.org/gitweb/?p=YkNeoCR.git;a=blobdiff_plain;f=src%2Forg%2Faverage%2Fnfcauthcr%2FTagEvent.java;h=febfa63fc9914e14089915e06130c3ecba4881c3;hp=7ef69433537bae7c64cd28196f5d2b4e0f54555b;hb=08b05b67a65e78e80fb0fffec8855a69a72ebff9;hpb=9194bb54ed7bfd3ccb2ee93151fb3b1467cdae35 diff --git a/src/org/average/nfcauthcr/TagEvent.java b/src/org/average/nfcauthcr/TagEvent.java index 7ef6943..febfa63 100644 --- a/src/org/average/nfcauthcr/TagEvent.java +++ b/src/org/average/nfcauthcr/TagEvent.java @@ -13,26 +13,35 @@ import android.nfc.tech.IsoDep; import android.util.Log; import android.widget.Toast; -import org.average.nfcauthcr.YkNeo; -import org.average.nfcauthcr.CRException; +import org.average.nfcauthcr.NfcCRdispatch; public class TagEvent extends Activity { private final String TAG = getClass().getName(); - private PendingIntent tagIntent; + private NfcCRdispatch dispatch = new NfcCRdispatch((Activity)this); @Override protected void onResume() { super.onResume(); Log.v(TAG, "Starting the work"); + new AlertDialog.Builder(this) + .setTitle(R.string.challenging) + .setMessage(R.string.swipe) + .setOnCancelListener( + new DialogInterface.OnCancelListener() { + public void onCancel(DialogInterface dialog) { + Log.v(TAG, "Cancel"); + finish(); + } + }) + .create().show(); + Intent intent = getIntent(); setResult(RESULT_CANCELED); - int slot = intent.getIntExtra("slot", -1); - if (slot > 0) { - enableDispatch(slot); - } + byte[] challenge = intent.getByteArrayExtra("challenge"); + dispatch.onResume(challenge); } @Override @@ -40,83 +49,18 @@ public class TagEvent extends Activity { super.onPause(); Log.v(TAG, "Finished the work"); - disableDispatch(); + dispatch.onPause(); } - public void onNewIntent(Intent intent) { + public void onNewIntent(Intent newintent) { Log.v(TAG, "NFC Intent arrived"); - int slot = intent.getIntExtra("slot", -1); - byte[] challenge = intent.getByteArrayExtra("challenge"); - if (slot <= 0) return; - Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); - if (tag == null) return; - IsoDep isoTag = IsoDep.get(tag); - try { - byte[] response = YkNeo.doChallengeYubiKey( - isoTag, slot, challenge); - Intent data = getIntent(); - data.putExtra("response", response); - setResult(RESULT_OK, data); - } catch (CRException e) { - Log.v(TAG, e.getMessage()); - Toast.makeText(this, e.getMessage(), - Toast.LENGTH_LONG).show(); - } - finish(); - } - -/* - - - - - - - - - - - - android.nfc.tech.IsoDep - - -*/ - - private void enableDispatch(int slot) { - Intent intent = getIntent(); - intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); - intent.putExtra("slot", slot); - tagIntent = PendingIntent.getActivity(this, 0, intent, 0); - IntentFilter iso = - new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED); - NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this); - if (adapter == null) { - Toast.makeText(this, R.string.no_nfc, - Toast.LENGTH_LONG).show(); - finish(); - } - if (! adapter.isEnabled()) { - Toast.makeText(this, R.string.nfc_disabled, - Toast.LENGTH_LONG).show(); + byte[] response = dispatch.onNewIntent(newintent); + if (response != null) { + Intent masterintent = getIntent(); + masterintent.putExtra("response", response); + setResult(RESULT_OK, masterintent); finish(); } - adapter.enableForegroundDispatch( - this, tagIntent, new IntentFilter[] {iso}, - new String[][] {new String[] {IsoDep.class.getName()}}); - } - - private void disableDispatch() { - if (tagIntent != null) { - tagIntent.cancel(); - tagIntent = null; - } - NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this); - if (adapter != null) { - adapter.disableForegroundDispatch(this); - } } }