Попытка отправить объект групповой политики с помощью устройства чтения карт ACR39U завершается неудачей с кодом ошибки 87 (0x57), INVALID_PARAMETERS, работает с другими устройствами чтения карт. Он также работает с SELECT и READ RECORD.
Вот мой журнал APDU.
00 A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31
00 B2 01 0C 32
00 A4 04 00 08 A0 00 00 03 33 01 01 01
80 A8 00 00 0A 83 08 00 00 00 00 10 00 02 12 00
При использовании других устройств чтения карт он возвращает правильный ответ, но с ACR39U он всегда возвращает 87 Вот исходный код, изолирующий эту проблему. Это на C#, .NET8. Я использую ЛЮБОЙ процессор в Visual Studio. Windows 11. Карта UnionPay.
Попытка отправить объект групповой политики с помощью устройства чтения карт ACR39U завершается неудачей с кодом ошибки 87 (0x57), INVALID_PARAMETERS, работает с другими устройствами чтения карт. Он также работает с SELECT и READ RECORD. Вот мой журнал APDU. 00 A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00 B2 01 0C 32 00 A4 04 00 08 A0 00 00 03 33 01 01 01 80 A8 00 00 0A 83 08 00 00 00 00 10 00 02 12 00 При использовании других устройств чтения карт он возвращает правильный ответ, но с ACR39U он всегда возвращает 87 Вот исходный код, изолирующий эту проблему. Это на C#, .NET8. Я использую ЛЮБОЙ процессор в Visual Studio. Windows 11. Карта UnionPay.
[code]using System; using System.Runtime.InteropServices;
public class SmartCardCommunication { [DllImport("winscard.dll")] private static extern int SCardEstablishContext(uint dwScope, IntPtr pvReserved1, IntPtr pvReserved2, ref IntPtr phContext);
[DllImport("winscard.dll")] private static extern int SCardReleaseContext(IntPtr hContext);
[DllImport("winscard.dll")] private static extern int SCardListReaders(IntPtr hContext, string mszGroups, byte[] mszReaders, ref int pcchReaders);
try { int result = SCardEstablishContext(SCARD_SCOPE_USER, IntPtr.Zero, IntPtr.Zero, ref hContext); if (result != 0) throw new Exception("Failed to establish context.");
int readerSize = 0; result = SCardListReaders(hContext, null, null, ref readerSize); if (result != 0) throw new Exception("Failed to list readers.");
byte[] readers = new byte[readerSize]; result = SCardListReaders(hContext, null, readers, ref readerSize); if (result != 0) throw new Exception("Failed to list readers.");
result = SCardConnect(hContext, readerName, SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0, ref hCard, ref activeProtocol); if (result != 0) throw new Exception("Failed to connect to the card.");
int result = SCardTransmit(hCard, ref ioRequest, apduCommand, apduCommand.Length, ref ioRequest2, recvBuffer, ref recvLength); if (result != 0) throw new Exception("Failed to transmit APDU command.");
public static byte[] StringToByteArrayFastest(string hex) { if (hex.Length % 2 == 1) throw new Exception("The binary key cannot have an odd number of digits");
byte[] arr = new byte[hex.Length >> 1];
for (int i = 0; i < hex.Length >> 1; ++i) { arr[i] = (byte)((GetHexVal(hex[i