X-Git-Url: http://www.average.org/gitweb/?p=YkNeoCR.git;a=blobdiff_plain;f=src%2Forg%2Faverage%2Fnfcauthcr%2FNFCAuthCREnroll.java;h=daea0d848c0bbe42103db9f6841ca48a3542dc57;hp=6aae6f1970e4e38b30d10285ed3b1ab904abeafc;hb=d68162938933f84fdde11f7a4ae5b919ccc469a1;hpb=e17a0ae9d37c1d36dd3a040341d4312f5296c60e diff --git a/src/org/average/nfcauthcr/NFCAuthCREnroll.java b/src/org/average/nfcauthcr/NFCAuthCREnroll.java index 6aae6f1..daea0d8 100644 --- a/src/org/average/nfcauthcr/NFCAuthCREnroll.java +++ b/src/org/average/nfcauthcr/NFCAuthCREnroll.java @@ -1,9 +1,12 @@ package org.average.nfcauthcr; +import java.util.Random; + import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.preference.PreferenceManager; +import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.content.DialogInterface; @@ -12,8 +15,10 @@ import android.view.View; import android.widget.TextView; import android.widget.RadioButton; -public class NFCAuthCREnroll extends Activity -{ +import org.average.nfcauthcr.NFCAuthCRCheck; + +public class NFCAuthCREnroll extends Activity { + private final String TAG = getClass().getName(); private static boolean waitingForResult = false; @@ -73,12 +78,27 @@ public class NFCAuthCREnroll extends Activity public void onEnrollClicked(View view) { Log.v(TAG, "Enroll clicked"); if (slot > 0) { - showEnrollResult(" using slot" + slot); + runEnrollment(slot); } else { showEnrollResult("Must specify which slot to use"); } } + public void onActivityResult(int requestCode, int resultCode, + Intent intent) { + Log.v(TAG, "Got activity result"); + waitingForResult = false; + + if (resultCode != RESULT_OK) { + Log.v(TAG, "Error result code " + resultCode); + return; + } + byte[] challenge = intent.getByteArrayExtra("challenge"); + Log.v(TAG, "Challenge is \"" + hex(challenge) + "\""); + byte[] response = intent.getByteArrayExtra("response"); + Log.v(TAG, "Response is \"" + hex(response) + "\""); + } + private void showEnrollResult(final String msg) { Log.v(TAG, "Show result: \"" + msg + "\""); @@ -95,4 +115,24 @@ public class NFCAuthCREnroll extends Activity AlertDialog dialog = builder.create(); dialog.show(); } + + private void runEnrollment(int slot) { + Random rng = new Random(); + byte[] challenge = new byte[63]; + rng.nextBytes(challenge); + Log.v(TAG, "Random challenge: " + hex(challenge)); + Log.v(TAG, "Launching challenging activity"); + Intent crIntent = new Intent(this, NFCAuthCRCheck.class); + crIntent.putExtra("slot", slot); + crIntent.putExtra("challenge", challenge); + this.startActivityForResult(crIntent, 0); + waitingForResult = true; + } + + private String hex(byte[] a) { + StringBuilder sb = new StringBuilder(); + if (a == null) return ""; + for (byte b: a) sb.append(String.format("%02x", b&0xff)); + return sb.toString(); + } }