mirror of
https://gitlab.com/fabinfra/fabaccess/borepin.git
synced 2025-03-13 07:11:56 +01:00
139 lines
3.8 KiB
C#
139 lines
3.8 KiB
C#
using NUnit.Framework;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using NFC;
|
|
using NFC.Readers.PCSC;
|
|
using System.Threading;
|
|
using NFC.Mifare_DESFire;
|
|
|
|
namespace NFC_Test
|
|
{
|
|
[TestFixture, Explicit]
|
|
public class REAL_Windows
|
|
{
|
|
[Test]
|
|
public void GetReaders()
|
|
{
|
|
IHardware hardware = new Hardware();
|
|
string[] readers = hardware.GetReaders();
|
|
|
|
Console.WriteLine("Readers detected: {0}", readers.Length);
|
|
|
|
if(readers.Length > 0)
|
|
{
|
|
Console.WriteLine("List of ReaderIDs:");
|
|
foreach (string readerID in readers)
|
|
{
|
|
Console.WriteLine("{0}", readerID);
|
|
}
|
|
}
|
|
}
|
|
|
|
[TestCase("ACS ACR122U PICC Interface 0")]
|
|
public void Connect(string readerID)
|
|
{
|
|
IHardware hardware = new Hardware();
|
|
IReader reader = hardware.OpenReader(readerID);
|
|
|
|
bool connected_successfully = false;
|
|
|
|
ReaderEventHandler handler = (sender, card) =>
|
|
{
|
|
card.Connect();
|
|
|
|
connected_successfully = true;
|
|
|
|
card.Disconnect();
|
|
};
|
|
|
|
reader.CardDiscovered += handler;
|
|
reader.Start();
|
|
|
|
Assert.AreEqual(true, connected_successfully);
|
|
|
|
reader.Stop();
|
|
reader.CardDiscovered -= handler;
|
|
}
|
|
|
|
[TestCase("ACS ACR122U PICC Interface 0")]
|
|
public void GetApplicationIDs(string readerID)
|
|
{
|
|
IHardware hardware = new Hardware();
|
|
IReader reader = hardware.OpenReader(readerID);
|
|
|
|
bool transmit_successfully = false;
|
|
|
|
ReaderEventHandler handler = (sender, card) =>
|
|
{
|
|
card.Connect();
|
|
|
|
MifareDESFire desfire = new MifareDESFire();
|
|
|
|
APDUCommand cmd = desfire.GetApplicationIDs();
|
|
|
|
APDUResponse response = card.Transmit(cmd);
|
|
|
|
if (response.StatusWord == NFC.Mifare_DESFire.APDUStatusWords.OK)
|
|
{
|
|
UInt32[] ApplicationIDs = desfire.ConvertApplicationIDs(response);
|
|
|
|
foreach(UInt32 id in ApplicationIDs)
|
|
{
|
|
Console.WriteLine("0x{0:X3}", id);
|
|
}
|
|
|
|
transmit_successfully = true;
|
|
}
|
|
|
|
card.Disconnect();
|
|
};
|
|
|
|
reader.CardDiscovered += handler;
|
|
reader.Start();
|
|
|
|
Assert.AreEqual(true, transmit_successfully);
|
|
|
|
reader.Stop();
|
|
reader.CardDiscovered -= handler;
|
|
}
|
|
|
|
[TestCase("ACS ACR122U PICC Interface 0", (UInt32)0xC0FFEE)]
|
|
public void SelectApplication(string readerID, UInt32 applicationID)
|
|
{
|
|
IHardware hardware = new Hardware();
|
|
IReader reader = hardware.OpenReader(readerID);
|
|
|
|
bool transmit_successfully = false;
|
|
|
|
ReaderEventHandler handler = (sender, card) =>
|
|
{
|
|
card.Connect();
|
|
|
|
MifareDESFire desfire = new MifareDESFire();
|
|
|
|
APDUCommand cmd = desfire.SelectApplication(applicationID);
|
|
|
|
cmd.ToArray();
|
|
|
|
APDUResponse response = card.Transmit(cmd);
|
|
|
|
if (response.StatusWord == NFC.Mifare_DESFire.APDUStatusWords.OK)
|
|
{
|
|
transmit_successfully = true;
|
|
}
|
|
|
|
card.Disconnect();
|
|
};
|
|
|
|
reader.CardDiscovered += handler;
|
|
reader.Start();
|
|
|
|
Assert.AreEqual(true, transmit_successfully);
|
|
|
|
reader.Stop();
|
|
reader.CardDiscovered -= handler;
|
|
}
|
|
}
|
|
}
|