X-Git-Url: http://www.average.org/gitweb/?p=YkNeoCR.git;a=blobdiff_plain;f=src%2Forg%2Faverage%2Fnfcauthcr%2FNFCAuthCRYubiNeo.java;fp=src%2Forg%2Faverage%2Fnfcauthcr%2FNFCAuthCRYubiNeo.java;h=0000000000000000000000000000000000000000;hp=67596e603993d481cc226da9c54dba4495e40d39;hb=a0d60dab1717e69b6d853eb91d0065fe378e3c28;hpb=bdfe828f712fa2a187a424923c6594f12e965a5d diff --git a/src/org/average/nfcauthcr/NFCAuthCRYubiNeo.java b/src/org/average/nfcauthcr/NFCAuthCRYubiNeo.java deleted file mode 100644 index 67596e6..0000000 --- a/src/org/average/nfcauthcr/NFCAuthCRYubiNeo.java +++ /dev/null @@ -1,83 +0,0 @@ -package org.average.nfcauthcr; - -import java.io.IOException; -import java.util.Arrays; - -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.NFCAuthCRYubiNeo; - -public class NFCAuthCRYubiNeo { - - private static final String TAG = "NFCAuthCRYubiNeo"; - - // Is it CCID APDU? ISO 7816-4? - - // 00 A4 04 00 xx AID - GlobalPlatform - SELECT - // Le send data = 07: A0 00 00 05 27 20 01 - // Le recv data = 00 - private static final byte[] selectCommand = - {0x00, (byte) 0xA4, 0x04, 0x00, 0x07, (byte) 0xA0, - 0x00, 0x00, 0x05, 0x27, 0x20, 0x01, 0x00}; - - private static final byte[] crCommand = - {0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; - - private static final byte SLOT_CHAL_HMAC1 = 0x30; - private static final byte SLOT_CHAL_HMAC2 = 0x38; - - public static final byte[] doChallengeYubiKey(IsoDep isoTag, int slot, - byte[] challenge) { - try { - isoTag.connect(); - byte[] resp = isoTag.transceive(selectCommand); - 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; - } - byte[] apdu = new byte[69]; - apdu[0] = 0x00; // CLA - apdu[1] = 0x01; // INS - switch (slot) { - case 1: apdu[2] = SLOT_CHAL_HMAC1; break; // P1 - case 2: apdu[2] = SLOT_CHAL_HMAC2; break; // P1 - } - apdu[3] = 0x00; // P2 - apdu[4] = 63; // Lc - System.arraycopy(challenge, 0, apdu, 5, - challenge.length); - apdu[apdu.length-1] = 22; - resp = isoTag.transceive(apdu); - 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; - } - 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(); - } catch (IOException e) { - Log.v(TAG, e.getMessage()); - //Toast.makeText(this, - // getText(R.string.tag_error) + - // e.getMessage(), - // Toast.LENGTH_LONG).show(); - } - return null; - } -}