From d601e9afb3efc3826c78e9d6230e443eb4dad55e Mon Sep 17 00:00:00 2001 From: TheJoKlLa Date: Mon, 5 Oct 2020 18:39:45 +0200 Subject: [PATCH] Backup --- NFC/APDUCommand.cs | 13 - NFC/IReader.cs | 1 + NFC/ISO7816-4/APDUCommand.cs | 47 +++ NFC/{ => ISO7816-4}/APDUResponse.cs | 57 +-- NFC/{ => ISO7816-4}/APDUStatusWords.cs | 2 - .../APDUInstructions.cs | 0 .../APDUStatusCodes.cs | 0 .../CryptoOperations.cs | 0 .../Enums/AccessRights.cs | 0 .../Enums/ChangeApplicationKey.cs | 0 .../Enums/ChangeMasterKey.cs | 0 .../Enums/ChangeMasterKeySettings.cs | 0 .../Enums/CreateDeleteFile.cs | 0 .../Enums/CryptoOperationsType.cs | 0 .../Enums/FileCommunication.cs | 0 .../Enums/FileDirectoryAccess.cs | 0 .../Enums/FileIdentifies.cs | 0 .../FileTypes.cs | 0 .../MIFARE_DESFire.cs} | 371 +++++++++++------- NFC/Readers/PCSC/Card.cs | 1 + NFC_Test/AuthCrypto_Test.cs | 6 +- NFC_Test/MifareDESFire_Commands.cs | 2 +- NFC_Test/REAL_Windows.cs | 12 +- NFC_Test/REAL_Windows_CardSetUp.cs | 20 +- 24 files changed, 319 insertions(+), 213 deletions(-) delete mode 100644 NFC/APDUCommand.cs create mode 100644 NFC/ISO7816-4/APDUCommand.cs rename NFC/{ => ISO7816-4}/APDUResponse.cs (90%) rename NFC/{ => ISO7816-4}/APDUStatusWords.cs (99%) rename NFC/{Mifare DESFire => NXP MIFARE DESFire}/APDUInstructions.cs (100%) rename NFC/{Mifare DESFire => NXP MIFARE DESFire}/APDUStatusCodes.cs (100%) rename NFC/{Mifare DESFire => NXP MIFARE DESFire}/CryptoOperations.cs (100%) rename NFC/{Mifare DESFire => NXP MIFARE DESFire}/Enums/AccessRights.cs (100%) rename NFC/{Mifare DESFire => NXP MIFARE DESFire}/Enums/ChangeApplicationKey.cs (100%) rename NFC/{Mifare DESFire => NXP MIFARE DESFire}/Enums/ChangeMasterKey.cs (100%) rename NFC/{Mifare DESFire => NXP MIFARE DESFire}/Enums/ChangeMasterKeySettings.cs (100%) rename NFC/{Mifare DESFire => NXP MIFARE DESFire}/Enums/CreateDeleteFile.cs (100%) rename NFC/{Mifare DESFire => NXP MIFARE DESFire}/Enums/CryptoOperationsType.cs (100%) rename NFC/{Mifare DESFire => NXP MIFARE DESFire}/Enums/FileCommunication.cs (100%) rename NFC/{Mifare DESFire => NXP MIFARE DESFire}/Enums/FileDirectoryAccess.cs (100%) rename NFC/{Mifare DESFire => NXP MIFARE DESFire}/Enums/FileIdentifies.cs (100%) rename NFC/{Mifare DESFire => NXP MIFARE DESFire}/FileTypes.cs (100%) rename NFC/{Mifare DESFire/MifareDESFire.cs => NXP MIFARE DESFire/MIFARE_DESFire.cs} (64%) diff --git a/NFC/APDUCommand.cs b/NFC/APDUCommand.cs deleted file mode 100644 index 7a22e30..0000000 --- a/NFC/APDUCommand.cs +++ /dev/null @@ -1,13 +0,0 @@ -using PCSC; -using PCSC.Iso7816; - -namespace NFC -{ - public class APDUCommand : CommandApdu - { - public APDUCommand(IsoCase isoCase) : base(isoCase, SCardProtocol.Any) - { - - } - } -} diff --git a/NFC/IReader.cs b/NFC/IReader.cs index 447a543..b130cc6 100644 --- a/NFC/IReader.cs +++ b/NFC/IReader.cs @@ -1,4 +1,5 @@ using System; +using NFC.ISO7816_4; namespace NFC { diff --git a/NFC/ISO7816-4/APDUCommand.cs b/NFC/ISO7816-4/APDUCommand.cs new file mode 100644 index 0000000..bf60034 --- /dev/null +++ b/NFC/ISO7816-4/APDUCommand.cs @@ -0,0 +1,47 @@ +using PCSC; +using PCSC.Iso7816; +using System; +using System.Collections.Generic; + +namespace NFC.ISO7816_4 +{ + public class APDUCommand : CommandApdu + { + public APDUCommand(IsoCase isoCase) : base(isoCase, SCardProtocol.Any) + { + + } + + public override bool Equals(object obj) + { + return obj is APDUCommand command && + Case == command.Case && + Protocol == command.Protocol && + CLA == command.CLA && + INS == command.INS && + P1 == command.P1 && + P2 == command.P2 && + EqualityComparer.Default.Equals(Data, command.Data); + } + + public override int GetHashCode() + { + HashCode hash = new HashCode(); + hash.Add(Case); + hash.Add(Protocol); + hash.Add(IsValid); + hash.Add(CLA); + hash.Add(INS); + hash.Add(P1); + hash.Add(P2); + hash.Add(P1P2); + hash.Add(Data); + hash.Add(Lc); + hash.Add(P3); + hash.Add(Le); + hash.Add(ExpectedResponseLength); + hash.Add(IsValid); + return hash.ToHashCode(); + } + } +} diff --git a/NFC/APDUResponse.cs b/NFC/ISO7816-4/APDUResponse.cs similarity index 90% rename from NFC/APDUResponse.cs rename to NFC/ISO7816-4/APDUResponse.cs index bc4f810..6b01ab7 100644 --- a/NFC/APDUResponse.cs +++ b/NFC/ISO7816-4/APDUResponse.cs @@ -1,42 +1,44 @@ using System; -using System.Collections.Generic; -using System.Text; using System.Linq; using NFC.Mifare_DESFire; -namespace NFC +namespace NFC.ISO7816_4 { public class APDUResponse { - /// - /// ISO 7816 - Body - Body - /// - public byte[] Body { get; set; } - - /// - /// ISO 7816 - SW1 - Status Word 1 - /// - public byte SW1 { get; set; } - - /// - /// ISO 7816 - SW2 - Status Word 2 - /// - public byte SW2 { get; set; } - - /// - /// Creates a new APDUResponse from the raw received data. - /// - public APDUResponse(byte[] raw) { - Body = raw.Take(raw.Length-1).ToArray(); - SW1 = raw[raw.Length - 2]; - SW2 = raw[raw.Length - 3]; - } - + #region constructor public APDUResponse() { } + /// + /// Creates a new APDUResponse from the raw received data. + /// + public APDUResponse(byte[] raw) + { + Body = raw.Take(raw.Length - 1).ToArray(); + SW1 = raw[raw.Length - 2]; + SW2 = raw[raw.Length - 3]; + } + #endregion + + #region Properties + /// + /// ISO 7816-4-4 - Body - Body + /// + public byte[] Body { get; set; } + + /// + /// ISO 7816-4 - SW1 - Status Word 1 + /// + public byte SW1 { get; set; } + + /// + /// ISO 7816-4 - SW2 - Status Word 2 + /// + public byte SW2 { get; set; } + public APDUStatusWords StatusWord { get @@ -104,5 +106,6 @@ namespace NFC return SW2; } } + #endregion } } diff --git a/NFC/APDUStatusWords.cs b/NFC/ISO7816-4/APDUStatusWords.cs similarity index 99% rename from NFC/APDUStatusWords.cs rename to NFC/ISO7816-4/APDUStatusWords.cs index a9c4bd8..c6db0cb 100644 --- a/NFC/APDUStatusWords.cs +++ b/NFC/ISO7816-4/APDUStatusWords.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace NFC.Mifare_DESFire { diff --git a/NFC/Mifare DESFire/APDUInstructions.cs b/NFC/NXP MIFARE DESFire/APDUInstructions.cs similarity index 100% rename from NFC/Mifare DESFire/APDUInstructions.cs rename to NFC/NXP MIFARE DESFire/APDUInstructions.cs diff --git a/NFC/Mifare DESFire/APDUStatusCodes.cs b/NFC/NXP MIFARE DESFire/APDUStatusCodes.cs similarity index 100% rename from NFC/Mifare DESFire/APDUStatusCodes.cs rename to NFC/NXP MIFARE DESFire/APDUStatusCodes.cs diff --git a/NFC/Mifare DESFire/CryptoOperations.cs b/NFC/NXP MIFARE DESFire/CryptoOperations.cs similarity index 100% rename from NFC/Mifare DESFire/CryptoOperations.cs rename to NFC/NXP MIFARE DESFire/CryptoOperations.cs diff --git a/NFC/Mifare DESFire/Enums/AccessRights.cs b/NFC/NXP MIFARE DESFire/Enums/AccessRights.cs similarity index 100% rename from NFC/Mifare DESFire/Enums/AccessRights.cs rename to NFC/NXP MIFARE DESFire/Enums/AccessRights.cs diff --git a/NFC/Mifare DESFire/Enums/ChangeApplicationKey.cs b/NFC/NXP MIFARE DESFire/Enums/ChangeApplicationKey.cs similarity index 100% rename from NFC/Mifare DESFire/Enums/ChangeApplicationKey.cs rename to NFC/NXP MIFARE DESFire/Enums/ChangeApplicationKey.cs diff --git a/NFC/Mifare DESFire/Enums/ChangeMasterKey.cs b/NFC/NXP MIFARE DESFire/Enums/ChangeMasterKey.cs similarity index 100% rename from NFC/Mifare DESFire/Enums/ChangeMasterKey.cs rename to NFC/NXP MIFARE DESFire/Enums/ChangeMasterKey.cs diff --git a/NFC/Mifare DESFire/Enums/ChangeMasterKeySettings.cs b/NFC/NXP MIFARE DESFire/Enums/ChangeMasterKeySettings.cs similarity index 100% rename from NFC/Mifare DESFire/Enums/ChangeMasterKeySettings.cs rename to NFC/NXP MIFARE DESFire/Enums/ChangeMasterKeySettings.cs diff --git a/NFC/Mifare DESFire/Enums/CreateDeleteFile.cs b/NFC/NXP MIFARE DESFire/Enums/CreateDeleteFile.cs similarity index 100% rename from NFC/Mifare DESFire/Enums/CreateDeleteFile.cs rename to NFC/NXP MIFARE DESFire/Enums/CreateDeleteFile.cs diff --git a/NFC/Mifare DESFire/Enums/CryptoOperationsType.cs b/NFC/NXP MIFARE DESFire/Enums/CryptoOperationsType.cs similarity index 100% rename from NFC/Mifare DESFire/Enums/CryptoOperationsType.cs rename to NFC/NXP MIFARE DESFire/Enums/CryptoOperationsType.cs diff --git a/NFC/Mifare DESFire/Enums/FileCommunication.cs b/NFC/NXP MIFARE DESFire/Enums/FileCommunication.cs similarity index 100% rename from NFC/Mifare DESFire/Enums/FileCommunication.cs rename to NFC/NXP MIFARE DESFire/Enums/FileCommunication.cs diff --git a/NFC/Mifare DESFire/Enums/FileDirectoryAccess.cs b/NFC/NXP MIFARE DESFire/Enums/FileDirectoryAccess.cs similarity index 100% rename from NFC/Mifare DESFire/Enums/FileDirectoryAccess.cs rename to NFC/NXP MIFARE DESFire/Enums/FileDirectoryAccess.cs diff --git a/NFC/Mifare DESFire/Enums/FileIdentifies.cs b/NFC/NXP MIFARE DESFire/Enums/FileIdentifies.cs similarity index 100% rename from NFC/Mifare DESFire/Enums/FileIdentifies.cs rename to NFC/NXP MIFARE DESFire/Enums/FileIdentifies.cs diff --git a/NFC/Mifare DESFire/FileTypes.cs b/NFC/NXP MIFARE DESFire/FileTypes.cs similarity index 100% rename from NFC/Mifare DESFire/FileTypes.cs rename to NFC/NXP MIFARE DESFire/FileTypes.cs diff --git a/NFC/Mifare DESFire/MifareDESFire.cs b/NFC/NXP MIFARE DESFire/MIFARE_DESFire.cs similarity index 64% rename from NFC/Mifare DESFire/MifareDESFire.cs rename to NFC/NXP MIFARE DESFire/MIFARE_DESFire.cs index 0b38925..c079087 100644 --- a/NFC/Mifare DESFire/MifareDESFire.cs +++ b/NFC/NXP MIFARE DESFire/MIFARE_DESFire.cs @@ -1,35 +1,223 @@ using NFC.Crypto; +using NFC.ISO7816_4; using NFC.Mifare_DESFire.Enums; +using Org.BouncyCastle.Asn1.Crmf; using PCSC.Iso7816; using System; using System.Collections.Generic; -using System.IO; +using System.Data; using System.Linq; -using System.Net.Http; -using System.Text; namespace NFC.Mifare_DESFire { - public class MifareDESFire + public class MIFARE_DESFire { - public byte[] GenerateDefaultKey(int size) - { - List key = new List(); - for (int i = 0; i < size; i++) - { - key.Add(0); - } + // Docs https://hackmd.io/qATu8uYdRnOC40aFrB9afg - return key.ToArray(); - } - - private ICard _Card; - - public MifareDESFire(ICard card) + #region Contructors + /// + /// Construct MIFRARE_DESFire Object with ICard Interface + /// + /// Implementation of ICard, only transmit is used + public MIFARE_DESFire(ICard card) { _Card = card; } + #endregion + + #region Properties + /// + /// ICard Implementation used to transmit APDUCommands and recive APDUResponses + /// + private ICard _Card; + #endregion + + #region Methods + /// + /// Generate Byte Array filled with 0 + /// + /// Size of Array + public byte[] GenerateDefaultKey(uint size) + { + byte[] key = new byte[size]; + for (int i = 0; i < size; i++) + { + key.[i] = 0; + } + + return key; + } + + /// + /// Converts byte[] to string with HEX Code + /// No 0x is created + /// + /// Data + public string ConvertToHexString(byte[] data) + { + return BitConverter.ToString(data).Replace("-", string.Empty); + } + + public void CheckAPDUResponse(APDUResponse response) + { + + } + + #region Methods for Crypto Operation + /// + /// Return a copy of the last Block of data + /// + /// Data compatible to blocksize + /// Size of Block, default is 8 + public byte[] GetLastBlock(byte[] data, uint blocksize = 8) + { + if(data.Length % blocksize != 0) + { + throw new ArgumentException(string.Format("Data is not compatible with blocksize(data(length):{0}, blocksize:{1}", data.Length, blocksize)); + } + + byte[] block = new byte[blocksize]; + + for (int i = 0; i < blocksize; i++) + { + block[i] = data[data.Length - blocksize + i]; + } + + return block; + } + + /// + /// Rotates Array to the left + /// + /// Data + /// Copy of data + public byte[] rotateLeft(byte[] data) + { + byte[] rotate = new byte[data.Length]; + data.CopyTo(rotate, 0); + + byte tmp = rotate[0]; + for (var i = 0; i < rotate.Length - 1; i++) + { + rotate[i] = rotate[i + 1]; + } + rotate[rotate.Length - 1] = tmp; + + return rotate; + } + + /// + /// Rotates Array to the right + /// + /// Data + /// Copy of data + public byte[] rotateRight(byte[] data) + { + byte[] rotate = new byte[data.Length]; + data.CopyTo(rotate, 0); + + byte tmp = rotate[rotate.Length - 1]; + for (var i = rotate.Length - 1; i > 0; i--) + { + rotate[i] = rotate[i - 1]; + } + rotate[0] = tmp; + + return rotate; + } + + /// + /// Concatenates two Arrays, Array A start at index 0 + /// + /// Array A + /// Array B + /// Copy of Data + public byte[] concatenate(byte[] a, byte[] b) + { + byte[] c = new byte[a.Length + b.Length]; + a.CopyTo(c, 0); + b.CopyTo(c, a.Length); + + return c; + } + #endregion + + #endregion + + #region DESFire Commands + /// + /// Get Application IDs from Card + /// + /// AIDs as Array + public UInt32[] GetApplicationIDs() + { + APDUCommand cmd = new APDUCommand(IsoCase.Case2Short) + { + CLA = 0x90, + INS = (byte)APDUInstructions.GET_APPLICATION_IDS + }; + + APDUResponse response = _Card.Transmit(cmd); + + CheckAPDUResponse(response); + + if (response.Body.Length % 3 != 0) + { + throw new Exception(string.Format("Invalid body length (was: {0}).", response.Body.Length)); + } + + if(response.Body.Length == 0) + { + throw new Exception("Missing PICC Entry 0x000000."); + } + + List applicationIDs = new List(); + + for (int i = 0; i < response.Body.Length; i += 3) + { + UInt32 new_applicationID = 0; + new_applicationID = (UInt32)((response.Body[i] << 16) + (response.Body[i + 1] << 8) + response.Body[i + 2]); + applicationIDs.Add(new_applicationID); + } + + return applicationIDs.ToArray(); + } + + /// + /// Select Application by AID + /// + /// 3 Byte AID + public void SelectApplication(UInt32 aid) + { + byte[] id_byte = BitConverter.GetBytes(aid); + + APDUCommand cmd = new APDUCommand(IsoCase.Case3Short) + { + CLA = 0x90, + INS = (byte)APDUInstructions.SELECT_APPLICATION, + Data = new byte[] + { + id_byte[0], + id_byte[1], + id_byte[2] + }, + Le = 0x00 + }; + + APDUResponse response = _Card.Transmit(cmd); + + CheckAPDUResponse(response); + } + #endregion + + + + + + + + /// /// Create new Application with AID @@ -40,36 +228,6 @@ namespace NFC.Mifare_DESFire throw new NotImplementedException(); } - public APDUCommand GetApplicationIDs() - { - APDUCommand cmd = new APDUCommand(IsoCase.Case2Short) - { - CLA = 0x90, - INS = (byte)APDUInstructions.GET_APPLICATION_IDS - }; - - return cmd; - } - - public UInt32[] ConvertApplicationIDs(APDUResponse response) - { - if(response.Body.Length % 3 != 0) - { - throw new Exception("Invalid Body Length."); - } - - List applicationIDs = new List(); - - for(int i = 0; i < response.Body.Length; i += 3) - { - UInt32 new_applicationID = 0; - new_applicationID = (UInt32)((response.Body[i] << 16) + (response.Body[i + 1] << 8) + response.Body[i + 2]); - applicationIDs.Add(new_applicationID); - } - - return applicationIDs.ToArray(); - } - public void Format() { throw new NotImplementedException(); @@ -80,7 +238,9 @@ namespace NFC.Mifare_DESFire /// /// 0x01 - 0x0D /// - public void Authenticate(byte key_id, byte[] key) + + // TODO + public void AuthenticateDES(byte key_id, byte[] key) { APDUCommand cmd_challange_request = new APDUCommand(IsoCase.Case4Short) { @@ -94,30 +254,30 @@ namespace NFC.Mifare_DESFire APDUResponse response = _Card.Transmit(cmd_challange_request); byte[] rndB_enc = response.Body; - Console.WriteLine("rndB_enc: {0}", toHexString(rndB_enc)); + Console.WriteLine("rndB_enc: {0}", ConvertToHexString(rndB_enc)); DES des = new DES(); byte[] rndB = des.Decrypt(rndB_enc, key, GenerateDefaultKey(8)); - Console.WriteLine("rndB: {0}", toHexString(rndB)); + Console.WriteLine("rndB: {0}", ConvertToHexString(rndB)); byte[] iv = new byte[8]; rndB.CopyTo(iv, 0); byte[] rndB_rl = rotateLeft(rndB); - Console.WriteLine("rndB_enc: {0}", toHexString(rndB_rl)); + Console.WriteLine("rndB_enc: {0}", ConvertToHexString(rndB_rl)); byte[] rndA = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; - Console.WriteLine("rndA: {0}", toHexString(rndA)); + Console.WriteLine("rndA: {0}", ConvertToHexString(rndA)); byte[] rndAB = concatenate(rndA, rndB_rl); - Console.WriteLine("rndAB: {0}", toHexString(rndAB)); + Console.WriteLine("rndAB: {0}", ConvertToHexString(rndAB)); byte[] rndAB_enc = des.Encrypt(rndAB, key, rndB_enc); - Console.WriteLine("rndA_rndB_enc: {0}", toHexString(rndAB_enc)); - iv = lastBlock(rndAB_enc); + Console.WriteLine("rndA_rndB_enc: {0}", ConvertToHexString(rndAB_enc)); + iv = GetLastBlock(rndAB_enc); APDUCommand cmd_challange_response = new APDUCommand(IsoCase.Case4Short) { @@ -125,116 +285,25 @@ namespace NFC.Mifare_DESFire INS = (byte)0xAF, Data = rndAB_enc }; - Console.WriteLine("cmd_challange_response: {0}", toHexString(cmd_challange_response.ToArray())); + Console.WriteLine("cmd_challange_response: {0}", ConvertToHexString(cmd_challange_response.ToArray())); response = _Card.Transmit(cmd_challange_response); byte[] encryptedRndAFromCard = response.Body; - Console.WriteLine("encryptedRndAFromCard: {0}", toHexString(encryptedRndAFromCard)); + Console.WriteLine("encryptedRndAFromCard: {0}", ConvertToHexString(encryptedRndAFromCard)); byte[] rotatedRndAFromCard = des.Decrypt(encryptedRndAFromCard, key, iv); - Console.WriteLine("rotatedRndAFromCard: {0}", toHexString(rotatedRndAFromCard)); + Console.WriteLine("rotatedRndAFromCard: {0}", ConvertToHexString(rotatedRndAFromCard)); byte[] rndAFromCard = rotateRight(rotatedRndAFromCard); - Console.WriteLine("rndAFromCard: {0}", toHexString(rndAFromCard)); + Console.WriteLine("rndAFromCard: {0}", ConvertToHexString(rndAFromCard)); if (!rndA.SequenceEqual(rndAFromCard)) { - throw new Exception("???"); + throw new Exception("PICC Challenge is not correct answered."); } } - public byte[] lastBlock(byte[] data) - { - byte[] block = new byte[8]; - - for(int i = 0; i < block.Length; i++) - { - block[i] = data[data.Length - block.Length + i]; - } - - return block; - } - public byte[] exclusiveOR(byte[] a, byte[] b) - { - byte[] c = new byte[a.Length]; - - for (int i = 0; i < a.Length; i++) - { - c[i] = (byte)(a[i] ^ b[i]); - } - - return c; - } - - private String toHexString(byte[] data) - { - return BitConverter.ToString(data).Replace("-", string.Empty); - } - - public byte[] rotateLeft(byte[] data) - { - byte[] rotate = new byte[data.Length]; - data.CopyTo(rotate, 0); - - byte temp = rotate[0]; - for (var i = 0; i < rotate.Length - 1; i++) - { - rotate[i] = rotate[i + 1]; - } - rotate[rotate.Length - 1] = temp; - - return rotate; - } - - public byte[] rotateRight(byte[] data) - { - byte[] rotate = new byte[data.Length]; - data.CopyTo(rotate, 0); - - byte temp = rotate[rotate.Length - 1]; - for (var i = rotate.Length - 1; i > 0; i--) - { - rotate[i] = rotate[i - 1]; - } - rotate[0] = temp; - - return rotate; - } - - public byte[] concatenate(byte[] a, byte[] b) - { - byte[] c = new byte[a.Length + b.Length]; - a.CopyTo(c, 0); - b.CopyTo(c, a.Length); - - return c; - } - - /// - /// Select Application by ID - /// - /// 3 Byte ID - public APDUCommand SelectApplication(UInt32 id) - { - byte[] id_byte = BitConverter.GetBytes(id); - - APDUCommand cmd = new APDUCommand(IsoCase.Case4Short) - { - CLA = 0x90, - INS = (byte)APDUInstructions.SELECT_APPLICATION, - Data = new byte[] - { - id_byte[0], - id_byte[1], - id_byte[2] - }, - Le = 0x00 - }; - - return cmd; - } - public void ChangeApplicationMasterKey(byte[] aPP_MasterKey) { throw new NotImplementedException(); diff --git a/NFC/Readers/PCSC/Card.cs b/NFC/Readers/PCSC/Card.cs index 4b38a7a..83ae2e9 100644 --- a/NFC/Readers/PCSC/Card.cs +++ b/NFC/Readers/PCSC/Card.cs @@ -1,5 +1,6 @@ using PCSC; using PCSC.Iso7816; +using NFC.ISO7816_4; namespace NFC.Readers.PCSC { diff --git a/NFC_Test/AuthCrypto_Test.cs b/NFC_Test/AuthCrypto_Test.cs index 04d2856..f429834 100644 --- a/NFC_Test/AuthCrypto_Test.cs +++ b/NFC_Test/AuthCrypto_Test.cs @@ -55,7 +55,7 @@ namespace NFC_Test [Test] public void concatenate() { - MifareDESFire mifareDESFire = new MifareDESFire(null); + MIFARE_DESFire mifareDESFire = new MIFARE_DESFire(null); byte[] rndA = new byte[] { @@ -121,9 +121,9 @@ namespace NFC_Test card.Transmit(cmd_getchallange).ReturnsForAnyArgs(response); card.Transmit(cmd_answerchallange).Returns(response2); - MifareDESFire mifareDESFire = new MifareDESFire(card); + MIFARE_DESFire mifareDESFire = new MIFARE_DESFire(card); - mifareDESFire.Authenticate(0x00, mifareDESFire.GenerateDefaultKey(16)); + mifareDESFire.AuthenticateDES(0x00, mifareDESFire.GenerateDefaultKey(16)); } } } diff --git a/NFC_Test/MifareDESFire_Commands.cs b/NFC_Test/MifareDESFire_Commands.cs index 436d92d..504b25a 100644 --- a/NFC_Test/MifareDESFire_Commands.cs +++ b/NFC_Test/MifareDESFire_Commands.cs @@ -11,7 +11,7 @@ namespace NFC_Test [TestFixture] public class MifareDESFire_Commands { - private MifareDESFire _MifareDESFire; + private MIFARE_DESFire _MifareDESFire; [SetUp] public void SetUp() diff --git a/NFC_Test/REAL_Windows.cs b/NFC_Test/REAL_Windows.cs index 85ffafb..bb2ebfb 100644 --- a/NFC_Test/REAL_Windows.cs +++ b/NFC_Test/REAL_Windows.cs @@ -69,7 +69,7 @@ namespace NFC_Test { card.Connect(); - MifareDESFire desfire = new MifareDESFire(card); + MIFARE_DESFire desfire = new MIFARE_DESFire(card); APDUCommand cmd = desfire.GetApplicationIDs(); @@ -111,7 +111,7 @@ namespace NFC_Test { card.Connect(); - MifareDESFire desfire = new MifareDESFire(card); + MIFARE_DESFire desfire = new MIFARE_DESFire(card); APDUCommand cmd = desfire.SelectApplication(applicationID); @@ -148,7 +148,7 @@ namespace NFC_Test { card.Connect(); - MifareDESFire desfire = new MifareDESFire(card); + MIFARE_DESFire desfire = new MIFARE_DESFire(card); APDUCommand cmd = desfire.DeleteApplication(applicationID); @@ -185,7 +185,7 @@ namespace NFC_Test { card.Connect(); - MifareDESFire desfire = new MifareDESFire(card); + MIFARE_DESFire desfire = new MIFARE_DESFire(card); byte keysetting1 = desfire.GenerateKeySetting1(ChangeApplicationKey.SAMEKEY, ChangeMasterKeySettings.WITHMASTERKEY, CreateDeleteFile.NOKEY, FileDirectoryAccess.NOKEY, ChangeMasterKey.CHANGEABLE); byte keysetting2 = desfire.GenerateKeySetting2(CryptoOperationsType.AES, FileIdentifies.NOTUSED, 0x01); @@ -239,9 +239,9 @@ namespace NFC_Test { card.Connect(); - MifareDESFire desfire = new MifareDESFire(card); + MIFARE_DESFire desfire = new MIFARE_DESFire(card); - desfire.Authenticate(0x00, GenerateDefaultKey(8)); + desfire.AuthenticateDES(0x00, GenerateDefaultKey(8)); transmit_successfully = true; diff --git a/NFC_Test/REAL_Windows_CardSetUp.cs b/NFC_Test/REAL_Windows_CardSetUp.cs index bb8c7e0..652913b 100644 --- a/NFC_Test/REAL_Windows_CardSetUp.cs +++ b/NFC_Test/REAL_Windows_CardSetUp.cs @@ -54,9 +54,9 @@ namespace NFC_Test { card.Connect(); - MifareDESFire mifareDESFire = new MifareDESFire(card); + MIFARE_DESFire mifareDESFire = new MIFARE_DESFire(card); - mifareDESFire.Authenticate(0x01, PICC_MasterKey); + mifareDESFire.AuthenticateDES(0x01, PICC_MasterKey); mifareDESFire.Format(); @@ -86,16 +86,16 @@ namespace NFC_Test { card.Connect(); - MifareDESFire mifareDESFire = new MifareDESFire(card); + MIFARE_DESFire mifareDESFire = new MIFARE_DESFire(card); - mifareDESFire.Authenticate(0x01, APP_MasterKey); + mifareDESFire.AuthenticateDES(0x01, APP_MasterKey); mifareDESFire.CreateApplication(FabAccessAID); mifareDESFire.SelectApplication(FabAccessAID); - mifareDESFire.Authenticate(0x00, Empty_Key); + mifareDESFire.AuthenticateDES(0x00, Empty_Key); mifareDESFire.ChangeApplicationMasterKey(APP_MasterKey); - mifareDESFire.Authenticate(0x00, APP_MasterKey); + mifareDESFire.AuthenticateDES(0x00, APP_MasterKey); mifareDESFire.ChangeApplicationKey(0x01, APP_Key_1); connected_successfully = true; @@ -125,10 +125,10 @@ namespace NFC_Test { card.Connect(); - MifareDESFire mifareDESFire = new MifareDESFire(card); + MIFARE_DESFire mifareDESFire = new MIFARE_DESFire(card); mifareDESFire.SelectApplication(FabAccessAID); - mifareDESFire.Authenticate(0x00, Empty_Key); + mifareDESFire.AuthenticateDES(0x00, Empty_Key); UInt16 fileAccessRight = mifareDESFire.GenerateFileAccessRight(AccessRights.FREE, 0x00, 0x00, 0x00); mifareDESFire.CreateFile(FabAccessIdentFileID, FileCommunication.PLAIN, fileAccessRight, (UInt32)0x90); @@ -162,7 +162,7 @@ namespace NFC_Test { card.Connect(); - MifareDESFire mifareDESFire = new MifareDESFire(card); + MIFARE_DESFire mifareDESFire = new MIFARE_DESFire(card); mifareDESFire.SelectApplication(FabAccessAID); byte[] filedata = mifareDESFire.ReadData(FabAccessIdentFileID, 0x00000000, 0x00000000); @@ -172,7 +172,7 @@ namespace NFC_Test Console.WriteLine(userdomain); - mifareDESFire.Authenticate(0x01, APP_Key_1); + mifareDESFire.AuthenticateDES(0x01, APP_Key_1); connected_successfully = true;