2020-10-07 19:25:51 +02:00
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
using NFC;
|
|
|
|
|
using NFC.Readers.PCSC;
|
|
|
|
|
using NFC.Mifare_DESFire;
|
|
|
|
|
using NFC.Mifare_DESFire.Enums;
|
|
|
|
|
|
|
|
|
|
namespace NFC_Test
|
|
|
|
|
{
|
|
|
|
|
[TestFixture, Explicit]
|
|
|
|
|
public class OTA
|
|
|
|
|
{
|
|
|
|
|
private string _ReaderID = "ACS ACR122U PICC Interface 0";
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void Init()
|
|
|
|
|
{
|
|
|
|
|
IHardware hardware = new Hardware();
|
|
|
|
|
IReader reader = hardware.OpenReader(_ReaderID);
|
|
|
|
|
|
|
|
|
|
bool transmit_successfully = false;
|
|
|
|
|
|
|
|
|
|
ReaderEventHandler handler = (sender, card) =>
|
|
|
|
|
{
|
|
|
|
|
card.Connect();
|
|
|
|
|
|
|
|
|
|
MIFARE_DESFire_V2 desfire = new MIFARE_DESFire_V2(card);
|
|
|
|
|
|
2020-10-09 10:48:07 +02:00
|
|
|
|
desfire.SelectApplication(0x000000);
|
2020-10-07 19:25:51 +02:00
|
|
|
|
desfire.AuthenticateISO_DES(0x00, desfire.GenerateEmptyKey(16));
|
|
|
|
|
desfire.Format();
|
|
|
|
|
|
|
|
|
|
desfire.AuthenticateISO_DES(0x00, desfire.GenerateEmptyKey(16));
|
|
|
|
|
|
|
|
|
|
byte keySetting1 = desfire.GenerateKeySetting1(ChangeApplicationKey.MASTERKEY, ChangeMasterKeySettings.WITHMASTERKEY, CreateDeleteFile.NOKEY, FileDirectoryAccess.NOKEY, ChangeMasterKey.CHANGEABLE);
|
|
|
|
|
byte keySetting2 = desfire.GenerateKeySetting2(CryptoOperationsType.AES, FileIdentifies.NOTUSED, 0x03);
|
2020-10-08 17:23:48 +02:00
|
|
|
|
desfire.CreateApplication(0xC0FFEE, keySetting1, keySetting2);
|
2020-10-07 19:25:51 +02:00
|
|
|
|
|
2020-10-08 17:23:48 +02:00
|
|
|
|
desfire.SelectApplication(0xC0FFEE);
|
|
|
|
|
desfire.AuthenticateISO_AES(0x00, desfire.GenerateEmptyKey(16));
|
|
|
|
|
|
2020-10-09 10:48:07 +02:00
|
|
|
|
byte[] key_master = desfire.ConvertFromHexString("45eeb8338ae8f49a032e85bb11143530");
|
|
|
|
|
byte[] key_1 = desfire.ConvertFromHexString("8db1f942f2d7cc82f6fa1486a30f8c12");
|
|
|
|
|
byte[] key_2 = desfire.ConvertFromHexString("77611d170c449df6f294c48581ab315d");
|
|
|
|
|
desfire.ChangeKey_AES(0x00, key_master, 0x10);
|
2020-10-08 17:23:48 +02:00
|
|
|
|
|
2020-10-09 10:48:07 +02:00
|
|
|
|
desfire.AuthenticateISO_AES(0x00, key_master);
|
|
|
|
|
desfire.ChangeOtherKey_AES(0x01, key_1, desfire.GenerateEmptyKey(16), 0x10);
|
2020-10-08 17:23:48 +02:00
|
|
|
|
|
2020-10-09 10:48:07 +02:00
|
|
|
|
desfire.AuthenticateISO_AES(0x00, key_master);
|
|
|
|
|
desfire.ChangeOtherKey_AES(0x02, key_2, desfire.GenerateEmptyKey(16), 0x10);
|
2020-10-07 19:25:51 +02:00
|
|
|
|
|
|
|
|
|
transmit_successfully = true;
|
|
|
|
|
|
|
|
|
|
card.Disconnect();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
reader.CardDiscovered += handler;
|
|
|
|
|
reader.Start();
|
|
|
|
|
|
|
|
|
|
Assert.AreEqual(true, transmit_successfully);
|
|
|
|
|
|
|
|
|
|
reader.Stop();
|
|
|
|
|
reader.CardDiscovered -= handler;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|