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