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 卡通信。注意这里有几个简单的读写数据的步骤。
我正在构建一个 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 卡通信。注意这里有几个简单的读写数据的步骤。