почему неверный пин-код токена сохраняется системой в macOS - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь получить доступ к закрытому ключу RSA на физическом токене в macOS.

Для этого я разрабатываю приложение Xamarin.mac. Код похож на этот:

    SecKey key = ((SecIdentity)identity).PrivateKey; 
    string signedData = key.CreateSignature(SecKeyAlgorithm.somealgoenum, dataToSign, out error);

Этот вызов обращается к закрытому ключу физического токена, как член цепочки для ключей . Токен доступен в цепочке для ключей, потому что его драйверы используют TokenD . Я знаю, что tokenD устарела, но у меня нет другого выбора, кроме как использовать это на данный момент.

Код работает: в моем приложении, когда я использую закрытый ключ, система автоматически отображает мне диалоггде я ввожу ПИН токена. Оно работает ! Я могу использовать закрытый ключ и подписать свои данные.

Моя проблема заключается в следующем: если я ввожу неправильный PIN-код, система запоминает его и (я думаю) пытается использовать этот неправильный PIN-код каждый разкаждый раз, когда я пытаюсь получить доступ к закрытому ключу , который, разумеется, каждый раз автоматически приводит к сбою.

Чтобы иметь возможность снова ввести PIN-код токена, мне нужно вручную отключить и снова подключить физическийтокен. Это проблема.

Я думаю, что это ошибка macOS (протестирована на mojave и catalina), потому что в приложении Keychain Access я вижу ту же проблему: если я пытаюсьПолучив доступ к «Контролю доступа» к информации личного ключа, приложение запрашивает у меня только один раз ПИН-код, а затем, вероятно, попытается использовать его навсегда автоматически, независимо от того, хороший он или плохой.

Мой вопрос:Можно ли это исправить ? Что я могу сделать, чтобы ОС снова запросила у меня пароль, если я не могу правильно его ввести?

Это вообще известно? Не могу найти ничего в сети.

...