Я пытаюсь получить доступ к закрытому ключу 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 я вижу ту же проблему: если я пытаюсьПолучив доступ к «Контролю доступа» к информации личного ключа, приложение запрашивает у меня только один раз ПИН-код, а затем, вероятно, попытается использовать его навсегда автоматически, независимо от того, хороший он или плохой.
Мой вопрос:Можно ли это исправить ? Что я могу сделать, чтобы ОС снова запросила у меня пароль, если я не могу правильно его ввести?
Это вообще известно? Не могу найти ничего в сети.