uwp智能卡提取用户信息

uwp smart card extracting user information

我正在构建一个 UWP 应用程序,我的目标很简单。我的电脑连接了智能卡 reader,所以在 运行 应用程序之后,我希望用户将 his/her 智能卡插入智能卡 reader 然后我想要我的应用程序提取他们的所有信息(即:名字、姓氏、地址和其他类似的东西),以便自动填写表格,然后他们可以很容易地注册到我的服务,而无需在每个文本框中填写所有信息。

到目前为止我尝试了什么

protected async override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        string selector = SmartCardReader.GetDeviceSelector();
        DeviceInformationCollection devices =
            await DeviceInformation.FindAllAsync(selector);
        var dialog = new MessageDialog("Number of devices : " + devices.Count.ToString());
        await dialog.ShowAsync();
        var device = devices[0];
        SmartCardReader reader =
            await SmartCardReader.FromIdAsync(device.Id);
        IReadOnlyList<SmartCard> cards =
            await reader.FindAllCardsAsync();
        var dialog2 = new MessageDialog("Number of cards in this device : " + cards.Count.ToString());
        await dialog2.ShowAsync();

        var card = cards[0];
        using (var conn = await card.ConnectAsync())
        {
            // after establishing connection, how can I extract the user information out of their smart cards?   
            var answer=await card.GetAnswerToResetAsync();
            // the above line is supposed to give a buffer can that be converted to string to extract out the requied data?
        }
        reader.CardAdded += Reader_CardAdded;
    }

    private void Reader_CardAdded(SmartCardReader sender, CardAddedEventArgs args)
    {
        //args has no method to extract data as well
    }

在 UWP 中处理智能卡并不容易。

WinRT 库只有使用字节与智能卡通信的读取和写入方法。智能卡没有 'global high level' 读取或写入操作。

例如,如果您想读取 Mifare Classic 智能卡,您将需要执行多项操作,例如身份验证、读取特定块和扇区到 get/set 数据。所有这些步骤都与智能卡规范相关。

您需要找到 "UAE id cards" 使用的标准并使用读取和写入操作实现所有低级操作(或找到适合您的库)。

Here 是智能卡 API 的示例,用于与支持 UWP 的 Mifare 卡通信。注意这里有几个简单的读写数据的步骤。