Требуется пример приложения UWP PIV - PullRequest
0 голосов
/ 27 апреля 2020

Мы разрабатываем приложение C# UWP с использованием Visual Studio 2019. Я успешно настроил мониторинг установки / удаления прошивки YubiKey FIPS (4.4.5) из порта USB. Мы настроили YubiKey для использования PIV и загрузили сертификат в слот 9 c (используя YubiKey PIV Manager, я не установил мини-драйвер). Я отмечаю, что когда YubiKey вставлен в USB, он автоматически загружает мое личное хранилище сертификатов с сертификатом, который находится в слоте 9 c. Мы получили запрос от нашего сервера, и мне нужно использовать его для проверки на YubiKey. Каков следующий шаг для получения сертификата из слота 9 c (что, если у вас есть несколько сертификатов на этот ключ)? У 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?
       }
    }
}
...