一直在尝试使用 ACS ACR1281 1S Dual Reader ICC 从我的 National eID 读取数据。它需要基本访问控制 (BAC) 身份验证。我能够正确进行身份验证,但是当我尝试使用遵循 ICAO Doc 9303 第 11 部分中的规范的安全消息传递选择 EF.COM (01 1E) 时出现错误
下面是我发送的 APDU 命令
Select EF.COM
// Send APDU
00 A4 02 0C 02 01 1E 00
// APDU Response
90 00
a) Mask class byte and pad command header:
CmdHeader = ‘0CA4020C80000000’
b) Pad data:
Data = ‘011E800000000000’
c) Encrypt data with KSEnc:
EncryptedData = ‘6375432908C044F6’
d) Build DO‘87’:
DO87 = ‘8709016375432908C044F6’
e) Concatenate CmdHeader and DO‘87’:
M = ‘0CA4020C800000008709016375432908C044F6’
App D-6 Machine Readable Travel Documents
f) Compute MAC of M:
i) Increment SSC with 1:
SSC = ‘887022120C06C227’
ii) Concatenate SSC and M and add padding:
N = ‘887022120C06C2270CA4020C800000008709016375432908C044F68000000000’
iii) Compute MAC over N with KSMAC:
CC = ‘BF8B92D635FF24F8’
g) Build DO‘8E’:
DO8E = ‘8E08BF8B92D635FF24F8’
h) Construct and send protected APDU:
ProtectedAPDU = ‘0CA4020C158709016375432908C044F68E08BF8B92D635FF24F800’
// Send APDU
00 A4 02 0C 15 87 09 01 7C 76 3C 70 98 06 45 BD 8E 08 20 42 68 2C D0 BE 14 A0 00
// APDU Response
6A 87
KsEnc 和 KsMac 是在外部验证 0x82 后计算的会话密钥。但我不断收到6A 87 - Lc 与 P1-P2 不一致作为反馈。我正在使用 PCSC 5.0.0 库与卡 (ICC) 对话。我不确定我在哪里想念它,请帮忙。