make errro handling via exception
[YkNeoCR.git] / src / org / average / nfcauthcr / YkNeo.java
index a291eabe1a4f4131a2764bb880916bba31e05b9f..1537459ba7e7c6ef4513370a844fc8b234194e07 100644 (file)
@@ -7,7 +7,8 @@ import android.nfc.NfcAdapter;
 import android.nfc.Tag;
 import android.nfc.TagLostException;
 import android.nfc.tech.IsoDep;
-//import android.util.Log;
+
+import org.average.nfcauthcr.CRException;
 
 public class YkNeo {
 
@@ -23,18 +24,16 @@ public class YkNeo {
        private static final byte SLOT_CHAL_HMAC2 = 0x38;
 
        public static final byte[] doChallengeYubiKey(IsoDep isoTag, int slot,
-                                               byte[] challenge) {
+                                               byte[] challenge)
+                               throws CRException {
                try {
                        isoTag.connect();
                        byte[] resp = isoTag.transceive(selectApdu);
                        int length = resp.length;
-                       //Log.v(TAG, "response to select length is " + length);
                        if (resp[length - 2] != (byte)0x90 ||
                            resp[length - 1] != 0x00) {
-                               //Log.v(TAG, "Wrong response to select");
-                               //Toast.makeText(this, R.string.tag_error,
-                               //              Toast.LENGTH_LONG).show();
-                               return null;
+                               throw new CRException(
+                               "NFC Error code in the response to select");
                        }
                        byte[] crApdu = new byte[69];
                        crApdu[0] = 0x00; // CLA
@@ -52,24 +51,14 @@ public class YkNeo {
                        length = resp.length;
                        if (resp[length - 2] != (byte)0x90 ||
                            resp[length - 1] != 0x00) {
-                               //Log.v(TAG, "Wrong response to challenge");
-                               //Toast.makeText(this, R.string.tag_error,
-                               //              Toast.LENGTH_LONG).show();
-                               return null;
+                               throw new CRException(
+                               "NFC Error code in the response to CR");
                        }
-                       //Log.v(TAG, "response to challenge length is " + length);
                        return Arrays.copyOf(resp, length-2);
                } catch (TagLostException e) {
-                       //Log.v(TAG, e.getMessage());
-                       //Toast.makeText(this,
-                       //      R.string.tag_lost, Toast.LENGTH_LONG).show();
+                       throw new CRException("NFC connection lost", e);
                } catch (IOException e) {
-                       //Log.v(TAG, e.getMessage());
-                       //Toast.makeText(this,
-                       //      getText(R.string.tag_error) +
-                       //      e.getMessage(),
-                       //      Toast.LENGTH_LONG).show();
+                       throw new CRException("NFC I/O error", e);
                }
-               return null;
        }
 }