hce 예제

사용자가 NFC 리더기로 장치를 탭하면 Android 시스템은 NFC 리더가 실제로 대화하고 싶어하는 HCE 서비스를 알아야 합니다. ISO/IEC 7816-4 사양이 들어오는 위치: 응용 프로그램 ID(AID)를 중심으로 응용 프로그램을 선택하는 방법을 정의합니다. AID는 최대 16바이트로 구성됩니다. 기존 NFC 리더 인프라에 대한 카드를 에뮬레이션하는 경우 해당 독자가 찾고 있는 AID는 일반적으로 잘 알려져 있고 공개적으로 등록되어 있습니다(예: 비자 및 마스터카드와 같은 결제 네트워크의 AID). 모든 휴대 전화에는 SIM 카드를 읽는 데 사용되는 연락처 스마트 카드 리더가 있습니다. 대부분의 안드로이드 폰은 NFC 리더의 형태로 비접촉식 스마트 카드 리더를 가지고, 우리는 사용하는 방법에 대한 예를 줄 것이다. 이 메타 데이터 태그는 apduservice.xml 파일을 가리킵니다. 두 개의 독점 적 인 AID를 포함하는 단일 AID 그룹 선언이있는 이러한 파일의 예는 다음과 같습니다 Android 4.4는 호스트 기반 카드 에뮬레이션 (HCE)을 도입했습니다. HCE에서 NFC 터미널은 안드로이드 응용 프로그램이 실행 중인 호스트 CPU(예: 인텔® 아톰™ 프로세서)로 직접 데이터를 라우팅하며, 보안 요소는 프로세스에 관여하지 않습니다(그림 2). 예를 들어 일부 카테고리(예: 결제)의 경우 사용자는 Android 설정 UI에서 기본 서비스를 선택할 수 있습니다. 다른 범주의 경우 충돌 시 어떤 서비스를 호출해야 할지 항상 사용자에게 문의하는 정책이 될 수 있습니다. 특정 범주에 대한 충돌 해결 정책을 쿼리하려면 getSelectionModeForCategory()를 참조하십시오. 이 자산의 크기는 260×96 dp이어야 하며 android:apduServiceBanner 속성을 태그에 추가하여 메타 데이터 XML 파일에 지정할 수 있습니다.

예는 아래에 나와 있습니다: 다음은 HostApduService 매니페스트 선언의 예입니다: 그리고 `ID = A0000002471001`이 있는 파일이나 Applet를 선택하는 예는 다음과 같습니다: `00 A4 0400000000241001 00` 데이터를 안전하게 저장하고 검색하기 위해 HCE 서비스에서 보내고 싶은 경우, 예를 들어 다른 앱에서 앱의 데이터를 격리하는 Android 응용 프로그램 샌드박스에 의존할 수 있습니다. Android 보안에 대한 자세한 내용은 보안 도움말을 참조하세요. 두 개의 AID를 등록하는 해당 apduservice.xml 파일의 예: CLA: 클래스 바이트는 명령이 ISO7816을 어느 정도 준수하는지 나타내기 위해 사용되며, 그렇다면 어떤 종류의 “보안 메시징”이 사용됩니다. 간단하게 하기 위해 예제에서는 이 바이트를 사용하지 않으며 항상 `00`을 전달합니다. SW1 및 SW2: 상태 바이트이며, 때로는 첫 번째 바이트가 실제 상태를 알려줄 수 있고 두 번째 바이트가 해당 상태에 대한 자세한 정보를 지정할 수 있기 때문에 구분됩니다. 예를 들어 잘못된 PIN으로 “PIN 확인”이라는 명령을 사용하는 경우 카드는 X가 남은 시도 수인 `63 CX` 상태를 반환합니다. NFC 리더기는 SEL_REQ 명령을 전송하여 HCE 장치를 선택할 수 있습니다. HCE 장치의 SEL_RES 응답에는 적어도 장치가 ISO-DEP를 지원한다는 것을 나타내는 6비트(0x20) 세트가 있습니다.

Uncategorized