Home | History | Annotate | Download | only in hce
      1 package com.android.cts.verifier.nfc.hce;
      2 
      3 import android.content.ComponentName;
      4 import android.content.pm.PackageManager;
      5 
      6 public final class HceUtils {
      7     public static final String ACTION_APDU_SEQUENCE_COMPLETE =
      8             "com.android.cts.verifier.nfc.hce.ACTION_APDU_SEQUENCE_COMPLETE";
      9     public static final String ACTION_APDU_SEQUENCE_ERROR =
     10             "com.android.cts.verifier.nfc.hce.ACTION_APDU_SEQUENCE_ERROR";
     11 
     12     public static final String EXTRA_COMPONENT = "component";
     13     public static final String EXTRA_DURATION = "duration";
     14 
     15     public static final String PPSE_AID = "325041592E5359532E4444463031";
     16     public static final String MC_AID = "A0000000041010";
     17 
     18     public static final String TRANSPORT_AID = "F001020304";
     19     public static final String ACCESS_AID = "F005060708";
     20 
     21     public static void enableComponent(PackageManager pm, ComponentName component) {
     22         pm.setComponentEnabledSetting(
     23                 component,
     24                 PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
     25                 PackageManager.DONT_KILL_APP);
     26     }
     27 
     28     public static void disableComponent(PackageManager pm, ComponentName component) {
     29         pm.setComponentEnabledSetting(
     30                 component,
     31                 PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
     32                 PackageManager.DONT_KILL_APP);
     33     }
     34 
     35     public static String getHexBytes(String header, byte[] bytes) {
     36         StringBuilder sb = new StringBuilder();
     37         if (header != null) {
     38             sb.append(header + ": ");
     39         }
     40         for (byte b : bytes) {
     41             sb.append(String.format("%02X ", b));
     42         }
     43         return sb.toString();
     44     }
     45 
     46     public static byte[] hexStringToBytes(String s) {
     47         if (s == null || s.length() == 0) return null;
     48         int len = s.length();
     49         if (len % 2 != 0) {
     50             s = '0' + s;
     51             len++;
     52         }
     53         byte[] data = new byte[len / 2];
     54         for (int i = 0; i < len; i += 2) {
     55             data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
     56                                  + Character.digit(s.charAt(i+1), 16));
     57         }
     58         return data;
     59     }
     60 
     61     public static final String buildSelectApdu(String aid) {
     62         StringBuilder sb = new StringBuilder();
     63         sb.append("00A40400");
     64         sb.append(String.format("%02X", aid.length() / 2));
     65         sb.append(aid);
     66         return sb.toString();
     67     }
     68 }
     69