-
- public void onEnrollClicked(View view) {
- Log.v(TAG, "Enroll clicked");
- if (slot > 0) {
- runEnrollment();
- } else {
- showEnrollResult(R.string.need_slot);
- }
- }
-
- public void runCallback(int rc, byte[] response) {
- Log.v(TAG, "Got response");
- waitingForResult = false;
- if(swipeDialog != null) {
- swipeDialog.dismiss();
- swipeDialog = null;
- }
- if (rc != 0) {
- Log.v(TAG, "Error result code " + rc);
- return;
- }
- Log.v(TAG, "Challenge is \"" + hex(challenge) + "\"");
- Log.v(TAG, "Response is \"" + hex(response) + "\"");
- Editor editor = prefs.edit();
- editor.putString("challenge", hex(challenge));
- editor.putString("response", hex(response));
- editor.commit();
- showEnrollResult(R.string.enroll_success);
- Log.v(TAG, "stored new challenge and response");
- }
-
- private void showEnrollResult(int messageid) {
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle(R.string.enrollresult);
- builder.setMessage(messageid);
- builder.setPositiveButton(android.R.string.ok,
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- if (!waitingForResult) { finish(); }
- }
- });
- AlertDialog dialog = builder.create();
- dialog.show();
- }
-
- private void runEnrollment() {
- Random rng = new Random();
- rng.nextBytes(challenge);
- Log.v(TAG, "Random challenge: " + hex(challenge));
- waitingForResult = true;
- checkConnector.runEnroll(slot, challenge);
- if (swipeDialog != null) swipeDialog.dismiss();
- swipeDialog = makeDialog();
- swipeDialog.show();
- }
-
- private AlertDialog makeDialog() {
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle(R.string.challenging);
- builder.setMessage(R.string.swipe);
- builder.setOnCancelListener(
- new DialogInterface.OnCancelListener() {
- public void onCancel(DialogInterface dialog) {
- Log.v(TAG, "unbind service FIXME");
- }
- });
- return builder.create();
- }
-
- private String hex(byte[] a) {
- StringBuilder sb = new StringBuilder();
- if (a == null) return "<null>";
- for (byte b: a) sb.append(String.format("%02x", b&0xff));
- return sb.toString();
- }