3
votes

I'm communicating with a Visa Electron debit card via an ACR reader and I get the following response from the GET PROCESSING OPTIONS command:

80 0A 1C 00 08 01 03 00 10 01 01 00 90 00

How should I interpret this response, when there's no AFL (Application File Locator) nor any AIP (Application Interchange Profile) in it? Here's the full communication log:

SELECT PSEv2: 00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00
SELECT PSEv2 returned: 6A82 - Wrong parameter(s) P1 P2; file not found

SELECT PSEv1: 00 A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00
SELECT PSEv1 returned: 6A82 - Wrong parameter(s) P1 P2; file not found

SELECT ADF: 00 A4 04 00 07 A0 00 00 01 52 30 10 00
SELECT ADF returned: 6A82 - Wrong parameter(s) P1 P2; file not found

SELECT ADF: 00 A4 04 00 07 A0 00 00 00 03 10 10 00
SELECT ADF returned: 6A82 - Wrong parameter(s) P1 P2; file not found

SELECT ADF: 00 A4 04 00 07 A0 00 00 00 03 20 10 00
SELECT ADF returned: 6F 2C 84 07 A0 00 00 00 03 20 10 A5 21 50 0D 56 49 53 41 20 45 4C 45 43 54 52 4F 4E 87 01 01 5F 2D 04 62 67 65 6E BF 0C 05 9F 4D 02 0B 0A 90 00

SELECT ADF: 00 A4 04 00 05 A0 00 00 00 25 00
SELECT ADF returned: 6A82 - Wrong parameter(s) P1 P2; file not found

SELECT ADF: 00 A4 04 00 07 A0 00 00 00 04 10 10 00
SELECT ADF returned: 6A82 - Wrong parameter(s) P1 P2; file not found

SELECT ADF: 00 A4 04 00 07 A0 00 00 00 03 20 10 00
SELECT ADF returned: 6F 2C 84 07 A0 00 00 00 03 20 10 A5 21 50 0D 56 49 53 41 20 45 4C 45 43 54 52 4F 4E 87 01 01 5F 2D 04 62 67 65 6E BF 0C 05 9F 4D 02 0B 0A 90 00

GET PROCESSING OPTIONS: 80 A8 00 00 02 83 00 00
GET PROCESSING OPTIONS returned: 80 0A 1C 00 08 01 03 00 10 01 01 00 90 00

Thanks a lot!

1

1 Answers

3
votes

EMV specification can help you about details. In the response Only Tags 0x82 and 0x94 values without tag and length parts.

In the Get Processing Option (GPO) Command response BER-TLV encoded data. In your sample: Under Tag 0x80 "Template, Response Message Format 1" packed Tag 0x82 "EMV, Application Interchange Profile (AIP)" value 2 bytes and rest is Tag 0x94 "EMV, Application File Locator (AFL)" value.

Here are results with EMV APDU command/response parser

> 80 A8 00 00 02 83 00 00
< 80 0A 1C 00 08 01 03 00 10 01 01 00 90 00

A8: # EMV, Get Processing Options
- rq:#"80A8000002830000" # ISO 7816-3, Case 4
  - CLA: "80" # Class byte
  - INS: "A8" # Instruction
  - P1P2: "0000" # Parameters 1 and 2
  - LcData:#"028300"
    - len: "02" # .
    - val:#"8300" # .
      - RFU: "8300" # Authorisation Cryptogram RFU
  - Le: "00" # .
- rs:#"800A1C0008010300100101009000" # Response
  - SW1SW2:#"9000" # Status byte 1 and 2
    - SW1: "90" # Status byte 1 // Normal processing
    - SW2: "00" # Status byte 2
  - DATA:#"800A1C000801030010010100" # .
    - x80:#"800A1C000801030010010100"
      - tag: "80"
      - len: "0A" #  // 10
      - val:#"1C000801030010010100" # Template, Response Message Format 1.
        - x82:#"1C00" # EMV, Application Interchange Profile (AIP)
          - val:#"1C00" # Application Interchange Profile (AIP).
            - B01: "1C"
              # ___1____ - bit 5, Cardholder verification is supported
              # ____1___ - bit 4, Terminal Risk Management is to be performed
              # _____1__ - bit 3, Issuer Authentication is supported
            - B02: "00" # RFU
        - x94:#"0801030010010100" # EMV, Application File Locator (AFL)
          - val:#"0801030010010100" # Application File Locator (AFL).
            - S1:#"08010300" # AFL Record
              - B01: "08" # SFI [xxxxx___] // 1
              - B02: "01" # From record // 1
              - B03: "03" # To record // 3
              - B04: "00" # First hashed
            - S2:#"10010100" # AFL Record
              - B01: "10" # SFI [xxxxx___] // 2
              - B02: "01" # From record // 1
              - B03: "01" # To record // 1
              - B04: "00" # First hashed