Изменение PIN-кода пользователя с использованием PIN-кода администратора с помощью минидрайвера смарт-карты и CSP не отоC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Изменение PIN-кода пользователя с использованием PIN-кода администратора с помощью минидрайвера смарт-карты и CSP не ото

Сообщение Anonymous »

Я работаю над приложением для смарт-карт, в котором мне нужно изменить ПИН-код пользователя с помощью ПИН-кода администратора, но я столкнулся с проблемой. Несмотря на использование функции pfnCardChangeAuthenticatorEx из минидрайвера и обеспечение успешного выполнения (возвращаемое значение — ERROR_SUCCESS), изменения, похоже, не отражаются в клиентском приложении. Даже когда я ввожу случайные пароли, я получаю возвращаемое значение 0, что указывает на успех, что является неожиданным поведением. Моя смарт-карта не поддерживает PKCS#11, поэтому я использую CSP и подход мини-драйвера.
Вот фрагмент кода, который я использую для смены PIN-кода:

Код: Выделить всё

if (!pCardData)
{
dwReturn = SCARD_E_COMM_DATA_LOST;
// Handling error...
}

const char* adminPin = "Old-Password"; // Example current admin PIN
const char* newUserPin = "Password-1234"; // Desired new user PIN

// Calculate the length of the PIN values
size_t adminPinLength = strlen(adminPin);
size_t newUserPinLength = strlen(newUserPin);

// Create byte arrays to store the PIN values
BYTE adminPinBytes[256];
BYTE newUserPinBytes[256];

// Copy the PIN values into the byte arrays
memcpy(adminPinBytes, adminPin, adminPinLength);
memcpy(newUserPinBytes, newUserPin, newUserPinLength);

// Attempt to change the user PIN using the admin PIN
dwReturn = pCardData->pfnCardChangeAuthenticatorEx(
pCardData,
PIN_CHANGE_FLAG_UNBLOCK,
ROLE_ADMIN,
adminPinBytes,
adminPinLength,
ROLE_USER,
newUserPinBytes,
newUserPinLength,
0,
&pcAttemptsRemaining);

if (dwReturn == ERROR_SUCCESS)
{
// Supposedly successful PIN change
}
Контекст:
pCardData правильно инициализируется, и другие операции с использованием этих данных работают должным образом.
Несмотря на сообщение об успехе, новый PIN-код не распознается нашим клиентским приложением, и состояние смарт-карты, судя по всему, не меняется.
Во время процесса не обнаруживается никаких исключений или ошибок. и pcAttemptsRemaining не уменьшается неожиданно.
Что я делаю не так?
  • Пробывал различные флаги и методы, предоставленные документацию смарт-карты.
  • Проведено экспериментирование как с правильными, так и с намеренно неправильными PIN-кодами администратора, все результаты оказались успешными.
  • Убедился, что инициализация pCardData правильна, успешно выполнив другие операции с картами.
Ожидание: успешная смена ПИН-кода должна разрешить использование нового ПИН-кода, а неправильные ПИН-коды администратора должны привести к сбою.

Подробнее здесь: https://stackoverflow.com/questions/782 ... ails-to-re
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»