Мы разрабатываем приложение C # UWP с использованием Visual Studio 2019. Я успешно настроил мониторинг YubiKey FIPS (прошивка 4.4.5), вставляемого / удаляемого из USB-порта. Мы настроили YubiKey для использования PIV и загрузили сертификат в слот 9c (используя YubiKey PIV Manager, я не установил мини-драйвер). Я отмечаю, что когда YubiKey вставлен в USB, он автоматически загружает мое личное хранилище сертификатов с сертификатом, который находится в слоте 9c. Мы получаем запрос от нашего сервера, и мне нужно использовать его для проверки YubiKey. Каков следующий шаг для получения сертификата из слота 9c (что, если у вас есть несколько сертификатов на этом ключе)? У Yubico нет примера, показывающего, как интегрировать ключ с приложением (я не верю, что Windows Hello здесь применима, нет?). Мы пытаемся использовать пространство имен Windows.Devices.SmartCards. В этом пространстве имен, похоже, нет концепции слотов. Это правильное направление или нам нужно использовать библиотеки Yubico (мини-драйвер), я не в курсе. Документация ограничена.
var yubiKeys = Readers.Where(r => r.Value.Name.Contains("Yubi", StringComparison.OrdinalIgnoreCase));
foreach (KeyValuePair<string, SmartCardReader> item in yubiKeys)
{
IReadOnlyList<SmartCard> cards = await item.Value.FindAllCardsAsync();
foreach(SmartCard card in cards)
{
SmartCardProvisioning prov = await SmartCardProvisioning.FromSmartCardAsync(card);
using (SmartCardChallengeContext context = await prov.GetChallengeContextAsync())
{
IBuffer yubiKeyChallenge = context.Challenge; // IS THIS THE CARDS ADMIN PIN?
// Challenge to acquire cert here perhaps?
// the card object has no concept of slots, would each slot be a card in the reader?
// if so, how would I use the Challenge for that card?
}
}
}