From a8596314ff97a18ec63f48181e2c9fefa5008ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Fiedler?= Date: Fri, 14 Feb 2025 19:44:07 +0100 Subject: [PATCH] Adapt to new PN532 hardware + some cleanup --- Software/lib/rfid-desfire/Desfire.cpp | 971 ------------------ Software/lib/rfid-desfire/Desfire.h | 187 ---- Software/lib/rfid-desfire/README.md | 20 - .../docs/DesFireProgrammingGuide.pdf | Bin 286707 -> 0 bytes ...ESFireEV1AESAuthenticationWithTRF7970A.pdf | Bin 2649875 -> 0 bytes Software/lib/rfid-desfire/docs/sloa213.pdf | Bin 2649875 -> 0 bytes .../lib/rfid-desfire/examples/DumpInfo.ino | 143 --- Software/platformio.ini | 3 + Software/src/NFC.cpp | 203 ++-- Software/src/NFC.h | 16 +- Software/src/OTAProxy.cpp | 52 +- Software/src/OTAProxy.h | 2 +- Software/src/Pins.h | 16 +- Software/src/main.cpp | 14 +- 14 files changed, 171 insertions(+), 1456 deletions(-) delete mode 100644 Software/lib/rfid-desfire/Desfire.cpp delete mode 100644 Software/lib/rfid-desfire/Desfire.h delete mode 100644 Software/lib/rfid-desfire/README.md delete mode 100644 Software/lib/rfid-desfire/docs/DesFireProgrammingGuide.pdf delete mode 100644 Software/lib/rfid-desfire/docs/MIFAREDESFireEV1AESAuthenticationWithTRF7970A.pdf delete mode 100644 Software/lib/rfid-desfire/docs/sloa213.pdf delete mode 100644 Software/lib/rfid-desfire/examples/DumpInfo.ino diff --git a/Software/lib/rfid-desfire/Desfire.cpp b/Software/lib/rfid-desfire/Desfire.cpp deleted file mode 100644 index 0acb3c0..0000000 --- a/Software/lib/rfid-desfire/Desfire.cpp +++ /dev/null @@ -1,971 +0,0 @@ -#include - -MFRC522::StatusCode DESFire::PICC_RequestATS(byte *atsBuffer, byte *atsLength) -{ - MFRC522::StatusCode result; - - // Build command buffer - atsBuffer[0] = 0xE0; //PICC_CMD_RATS; - atsBuffer[1] = 0x50; // FSD=64, CID=0 - - // Calculate CRC_A - result = PCD_CalculateCRC(atsBuffer, 2, &atsBuffer[2]); - if (result != STATUS_OK) { - return result; - } - - // Transmit the buffer and receive the response, validate CRC_A. - result = PCD_TransceiveData(atsBuffer, 4, atsBuffer, atsLength, NULL, 0, true); - if (result != STATUS_OK) { - PICC_HaltA(); - Serial.println("WTF???"); - return result; - } - - return result; -} // End PICC_RequestATS() - - /** - * Transmits Protocol and Parameter Selection Request (PPS) - * - * @return STATUS_OK on success, STATUS_??? otherwise. - */ -MFRC522::StatusCode DESFire::PICC_ProtocolAndParameterSelection(byte cid, ///< The lower nibble indicates the CID of the selected PICC in the range of 0x00 and 0x0E - byte pps0, ///< PPS0 - byte pps1 ///< PPS1 -) { - MFRC522::StatusCode result; - - byte ppsBuffer[5]; - byte ppsBufferSize = 5; - ppsBuffer[0] = 0xD0 | (cid & 0x0F); - ppsBuffer[1] = pps0; - ppsBuffer[2] = pps1; - - // Calculate CRC_A - result = PCD_CalculateCRC(ppsBuffer, 3, &ppsBuffer[3]); - if (result != STATUS_OK) { - return result; - } - - // Transmit the buffer and receive the response, validate CRC_A. - result = PCD_TransceiveData(ppsBuffer, 5, ppsBuffer, &ppsBufferSize, NULL, 0, true); - if (result == STATUS_OK) { - // This is how my MFRC522 is by default. - // Reading https://www.nxp.com/documents/data_sheet/MFRC522.pdf it seems CRC generation can only be disabled in this mode. - if (pps1 == 0x00) { - PCD_WriteRegister(TxModeReg, 0x00); - PCD_WriteRegister(RxModeReg, 0x00); - } - } - - return result; -} // End PICC_ProtocolAndParameterSelection() - -/** - * @see MIFARE_BlockExchangeWithData() - */ -DESFire::StatusCode DESFire::MIFARE_BlockExchange(mifare_desfire_tag *tag, byte cmd, byte *backData, byte *backLen) -{ - return MIFARE_BlockExchangeWithData(tag, cmd, NULL, NULL, backData, backLen); -} // End MIFARE_BlockExchange() - -/** - * - * Frame Format for DESFire APDUs - * ============================== - * - * The frame format for DESFire APDUs is based on only the ISO 14443-4 specifications for block formats. - * This is the format used by the example firmware, and seen in Figure 3. - * - PCB – Protocol Control Byte, this byte is used to transfer format information about each PDU block. - * - CID – Card Identifier field, this byte is used to identify specific tags. It contains a 4 bit CID value as well - * as information on the signal strength between the reader and the tag. - * - NAD – Node Address field, the example firmware does not support the use of NAD. - * - DESFire Command Code – This is discussed in the next section. - * - Data Bytes – This field contains all of the Data Bytes for the command - * - * |-----|-----|-----|---------|------|----------| - * | PCB | CID | NAD | Command | Data | Checksum | - * |-----|-----|-----|---------|------|----------| - * - * Documentation: http://read.pudn.com/downloads64/ebook/225463/M305_DESFireISO14443.pdf - * http://www.ti.com.cn/cn/lit/an/sloa213/sloa213.pdf - */ -DESFire::StatusCode DESFire::MIFARE_BlockExchangeWithData(mifare_desfire_tag *tag, byte cmd, byte *sendData, byte *sendLen, byte *backData, byte *backLen) -{ - StatusCode result; - - byte buffer[64]; - byte bufferSize = 64; - byte sendSize = 3; - - buffer[0] = tag->pcb; - buffer[1] = tag->cid; - buffer[2] = cmd; - - // Append data if available - if (sendData != NULL && sendLen != NULL) { - if (*sendLen > 0) { - memcpy(&buffer[3], sendData, *sendLen); - sendSize = sendSize + *sendLen; - } - } - - // Update the PCB - if (tag->pcb == 0x0A) - tag->pcb = 0x0B; - else - tag->pcb = 0x0A; - - // Calculate CRC_A - result.mfrc522 = PCD_CalculateCRC(buffer, sendSize, &buffer[sendSize]); - if (result.mfrc522 != STATUS_OK) { - return result; - } - - result.mfrc522 = PCD_TransceiveData(buffer, sendSize + 2, buffer, &bufferSize); - if (result.mfrc522 != STATUS_OK) { - return result; - } - - // Set the DESFire status code - result.desfire = (DesfireStatusCode)(buffer[2]); - - // Copy data to backData and backLen - if (backData != NULL && backLen != NULL) { - memcpy(backData, &buffer[3], bufferSize - 5); - *backLen = bufferSize - 5; - } - - return result; -} // End MIFARE_BlockExchangeWithData() - -DESFire::StatusCode DESFire::MIFARE_DESFIRE_GetVersion(mifare_desfire_tag *tag, MIFARE_DESFIRE_Version_t *versionInfo) -{ - StatusCode result; - byte versionBuffer[64]; - byte versionBufferSize = 64; - - result = MIFARE_BlockExchange(tag, 0x60, versionBuffer, &versionBufferSize); - if (result.mfrc522 == STATUS_OK) { - byte hardwareVersion[2]; - byte storageSize; - - versionInfo->hardware.vendor_id = versionBuffer[0]; - versionInfo->hardware.type = versionBuffer[1]; - versionInfo->hardware.subtype = versionBuffer[2]; - versionInfo->hardware.version_major = versionBuffer[3]; - versionInfo->hardware.version_minor = versionBuffer[4]; - versionInfo->hardware.storage_size = versionBuffer[5]; - versionInfo->hardware.protocol = versionBuffer[6]; - - if (result.desfire == MF_ADDITIONAL_FRAME) { - result = MIFARE_BlockExchange(tag, 0xAF, versionBuffer, &versionBufferSize); - if (result.mfrc522 == STATUS_OK) { - versionInfo->software.vendor_id = versionBuffer[0]; - versionInfo->software.type = versionBuffer[1]; - versionInfo->software.subtype = versionBuffer[2]; - versionInfo->software.version_major = versionBuffer[3]; - versionInfo->software.version_minor = versionBuffer[4]; - versionInfo->software.storage_size = versionBuffer[5]; - versionInfo->software.protocol = versionBuffer[6]; - } else { - Serial.print("Failed to send AF: "); - Serial.println(GetStatusCodeName(result)); - } - - if (result.desfire == MF_ADDITIONAL_FRAME) { - byte nad = 0x60; - result = MIFARE_BlockExchange(tag, 0xAF, versionBuffer, &versionBufferSize); - if (result.mfrc522 == STATUS_OK) { - memcpy(versionInfo->uid, &versionBuffer[0], 7); - memcpy(versionInfo->batch_number, &versionBuffer[7], 5); - versionInfo->production_week = versionBuffer[12]; - versionInfo->production_year = versionBuffer[13]; - } else { - Serial.print("Failed to send AF: "); - Serial.println(GetStatusCodeName(result)); - } - } - - if (result.desfire == MF_ADDITIONAL_FRAME) { - Serial.println("GetVersion(): More data???"); - } - } - } - else { - Serial.println("Version(): Failure."); - } - - return result; -} // End MIFARE_DESFIRE_GetVersion - -DESFire::StatusCode DESFire::MIFARE_DESFIRE_SelectApplication(mifare_desfire_tag *tag, mifare_desfire_aid_t *aid) -{ - StatusCode result; - - byte buffer[64]; - byte bufferSize = MIFARE_AID_SIZE; - - for (byte i = 0; i < MIFARE_AID_SIZE; i++) { - buffer[i] = aid->data[i]; - } - - result = MIFARE_BlockExchangeWithData(tag, 0x5A, buffer, &bufferSize, buffer, &bufferSize); - if (IsStatusCodeOK(result)) { - // keep track of the application - memcpy(tag->selected_application, aid->data, MIFARE_AID_SIZE); - } - - return result; -} - -DESFire::StatusCode DESFire::MIFARE_DESFIRE_GetFileIDs(mifare_desfire_tag *tag, byte *files, byte *filesCount) -{ - StatusCode result; - - byte bufferSize = MIFARE_MAX_FILE_COUNT + 5; - byte buffer[bufferSize]; - - result = MIFARE_BlockExchange(tag, 0x6F, buffer, &bufferSize); - if (IsStatusCodeOK(result)) { - *filesCount = bufferSize; - memcpy(files, &buffer, *filesCount); - } - - return result; -} // End MIFARE_DESFIRE_GetFileIDs - -DESFire::StatusCode DESFire::MIFARE_DESFIRE_GetFileSettings(mifare_desfire_tag *tag, byte *file, mifare_desfire_file_settings_t *fileSettings) -{ - StatusCode result; - - byte buffer[21]; - byte bufferSize = 21; - byte sendLen = 1; - - buffer[0] = *file; - - result = MIFARE_BlockExchangeWithData(tag, 0xF5, buffer, &sendLen, buffer, &bufferSize); - if (IsStatusCodeOK(result)) { - fileSettings->file_type = buffer[0]; - fileSettings->communication_settings = buffer[1]; - fileSettings->access_rights = ((uint16_t)(buffer[2]) << 8) | (buffer[3]); - - switch (buffer[0]) { - case MDFT_STANDARD_DATA_FILE: - case MDFT_BACKUP_DATA_FILE: - fileSettings->settings.standard_file.file_size = ((uint32_t)(buffer[4])) | ((uint32_t)(buffer[5]) << 8) | ((uint32_t)(buffer[6]) << 16); - break; - - case MDFT_VALUE_FILE_WITH_BACKUP: - fileSettings->settings.value_file.lower_limit = ((uint32_t)(buffer[4])) | ((uint32_t)(buffer[5]) << 8) | ((uint32_t)(buffer[6]) << 16) | ((uint32_t)(buffer[7]) << 24); - fileSettings->settings.value_file.upper_limit = ((uint32_t)(buffer[8])) | ((uint32_t)(buffer[9]) << 8) | ((uint32_t)(buffer[10]) << 16) | ((uint32_t)(buffer[11]) << 24); - fileSettings->settings.value_file.limited_credit_value = ((uint32_t)(buffer[12])) | ((uint32_t)(buffer[13]) << 8) | ((uint32_t)(buffer[14]) << 16) | ((uint32_t)(buffer[15]) << 24); - fileSettings->settings.value_file.limited_credit_enabled = buffer[16]; - break; - - case MDFT_LINEAR_RECORD_FILE_WITH_BACKUP: - case MDFT_CYCLIC_RECORD_FILE_WITH_BACKUP: - fileSettings->settings.record_file.record_size = ((uint32_t)(buffer[4])) | ((uint32_t)(buffer[5]) << 8) | ((uint32_t)(buffer[6]) << 16); - fileSettings->settings.record_file.max_number_of_records = ((uint32_t)(buffer[7])) | ((uint32_t)(buffer[8]) << 8) | ((uint32_t)(buffer[9]) << 16); - fileSettings->settings.record_file.current_number_of_records = ((uint32_t)(buffer[10])) | ((uint32_t)(buffer[11]) << 8) | ((uint32_t)(buffer[12]) << 16); - break; - - default: - //return FAIL; - result.mfrc522 = STATUS_ERROR; - return result; - } - } - - return result; -} // End MIFARE_DESFIRE_GetFileSettings - -DESFire::StatusCode DESFire::MIFARE_DESFIRE_GetKeySettings(mifare_desfire_tag *tag, byte *settings, byte *maxKeys) -{ - StatusCode result; - - byte buffer[7]; - byte bufferSize = 7; - - result = MIFARE_BlockExchange(tag, 0x45, buffer, &bufferSize); - if (IsStatusCodeOK(result)) { - *settings = buffer[0]; - *maxKeys = buffer[1]; - } - - return result; -} // End MIFARE_DESFIRE_GetKeySettings() - -DESFire::StatusCode DESFire::MIFARE_DESFIRE_GetKeyVersion(mifare_desfire_tag *tag, byte key, byte *version) -{ - StatusCode result; - - byte buffer[6]; - byte bufferSize = 6; - byte sendLen = 1; - - buffer[0] = key; - - result = MIFARE_BlockExchangeWithData(tag, 0x64, buffer, &sendLen, buffer, &bufferSize); - if (IsStatusCodeOK(result)) { - *version = buffer[0]; - } - - return result; -} - -DESFire::StatusCode DESFire::MIFARE_DESFIRE_ReadData(mifare_desfire_tag *tag, byte fid, uint32_t offset, uint32_t length, byte *backData, size_t *backLen) -{ - StatusCode result; - - byte buffer[64]; - byte bufferSize = 64; - byte sendLen = 7; - size_t outSize = 0; - - // file ID - buffer[0] = fid; - // offset - buffer[1] = (offset & 0x00000F); - buffer[2] = (offset & 0x00FF00) >> 8; - buffer[3] = (offset & 0xFF0000) >> 16; - // length - buffer[4] = (length & 0x0000FF); - buffer[5] = (length & 0x00FF00) >> 8; - buffer[6] = (length & 0xFF0000) >> 16; - - result = MIFARE_BlockExchangeWithData(tag, 0xBD, buffer, &sendLen, buffer, &bufferSize); - if (result.mfrc522 == STATUS_OK) { - do { - // Copy the data - memcpy(backData + outSize, buffer, bufferSize); - outSize += bufferSize; - *backLen = outSize; - - if (result.desfire == MF_ADDITIONAL_FRAME) { - result = MIFARE_BlockExchange(tag, 0xAF, buffer, &bufferSize); - } - } while (result.mfrc522 == STATUS_OK && result.desfire == MF_ADDITIONAL_FRAME); - } - - return result; -} - -DESFire::StatusCode DESFire::MIFARE_DESFIRE_GetValue(mifare_desfire_tag *tag, byte fid, int32_t *value) -{ - StatusCode result; - - byte buffer[MFRC522::FIFO_SIZE]; - byte bufferSize = MFRC522::FIFO_SIZE; - byte sendLen = 1; - size_t outSize = 0; - - buffer[0] = fid; - - result = MIFARE_BlockExchangeWithData(tag, 0x6C, buffer, &sendLen, buffer, &bufferSize); - if (IsStatusCodeOK(result)) { - *value = ((uint32_t)buffer[0] | ((uint32_t)buffer[1] << 8) | ((uint32_t)buffer[2] << 16) | ((uint32_t)buffer[3] << 24)); - } - - return result; -} // End MIFARE_DESFIRE_GetValue() - -DESFire::StatusCode DESFire::MIFARE_DESFIRE_GetApplicationIds(mifare_desfire_tag *tag, mifare_desfire_aid_t *aids, byte *applicationCount) -{ - StatusCode result; - - // MIFARE_MAX_APPLICATION_COUNT * MIFARE_AID_SIZE + PCB (1 byte) + CID (1 byte) + Checksum (2 bytes) - // I also add an extra byte in case NAD is needed - byte bufferSize = (MIFARE_MAX_APPLICATION_COUNT * MIFARE_AID_SIZE) + 5; - byte buffer[bufferSize]; - byte aidBuffer[MIFARE_MAX_APPLICATION_COUNT * MIFARE_AID_SIZE]; - byte aidBufferSize = 0; - - result = MIFARE_BlockExchange(tag, 0x6A, buffer, &bufferSize); - if (result.mfrc522 != STATUS_OK) - return result; - - // MIFARE_MAX_APPLICATION_COUNT (28) * MIFARE_AID_SIZE + PCB (1) + CID (1) + Checksum (2) = 88 - // Even if the NAD byte is not present we could GET a 0xAF response. - if (result.desfire == MF_OPERATION_OK && bufferSize == 0x00) { - // Empty application list - *applicationCount = 0; - return result; - } - - memcpy(aidBuffer, buffer, bufferSize); - aidBufferSize = bufferSize; - - while (result.desfire == MF_ADDITIONAL_FRAME) { - bufferSize = (MIFARE_MAX_APPLICATION_COUNT * MIFARE_AID_SIZE) + 5; - result = MIFARE_BlockExchange(tag, 0xAF, buffer, &bufferSize); - if (result.mfrc522 != STATUS_OK) - return result; - - // Make sure we have space (Just in case) - if ((aidBufferSize + bufferSize) > (MIFARE_MAX_APPLICATION_COUNT * MIFARE_AID_SIZE)) { - result.mfrc522 = STATUS_NO_ROOM; - return result; - } - - // Append the new data - memcpy(aidBuffer + aidBufferSize, buffer, bufferSize); - } - - - // Applications are identified with a 3 byte application identifier(AID) - // we also received the status byte: - if ((aidBufferSize % 3) != 0) { - Serial.println(F("MIFARE_DESFIRE_GetApplicationIds(): Data is not a modulus of 3.")); - // TODO: Some kind of failure - result.mfrc522 = STATUS_ERROR; - return result; - } - - *applicationCount = aidBufferSize / 3; - - for (byte i = 0; i < *applicationCount; i++) { - aids[i].data[0] = aidBuffer[(i * 3)]; - aids[i].data[1] = aidBuffer[1 + (i * 3)]; - aids[i].data[2] = aidBuffer[2 + (i * 3)]; - } - - return result; -} // End MIFARE_DESFIRE_GetApplicationIds() - -/** - * Returns a __FlashStringHelper pointer to a status code name. - * - * @return const __FlashStringHelper * - */ -const __FlashStringHelper *DESFire::GetStatusCodeName(StatusCode code) -{ - if (code.mfrc522 != MFRC522::STATUS_OK) { - return MFRC522::GetStatusCodeName(code.mfrc522); - } - - switch (code.desfire) { - case MF_OPERATION_OK: return F("Successful operation."); - case MF_NO_CHANGES: return F("No changes done to backup files."); - case MF_OUT_OF_EEPROM_ERROR: return F("Insufficient NV-Mem. to complete cmd."); - case MF_ILLEGAL_COMMAND_CODE: return F("Command code not supported."); - case MF_INTEGRITY_ERROR: return F("CRC or MAC does not match data."); - case MF_NO_SUCH_KEY: return F("Invalid key number specified."); - case MF_LENGTH_ERROR: return F("Length of command string invalid."); - case MF_PERMISSION_ERROR: return F("Curr conf/status doesnt allow cmd."); - case MF_PARAMETER_ERROR: return F("Value of the parameter(s) invalid."); - case MF_APPLICATION_NOT_FOUND: return F("Requested AID not present on PICC."); - case MF_APPL_INTEGRITY_ERROR: return F("Unrecoverable err within app."); - case MF_AUTHENTICATION_ERROR: return F("Current authentication status doesn't allow requested command."); - case MF_ADDITIONAL_FRAME: return F("Additional data frame to be sent."); - case MF_BOUNDARY_ERROR: return F("Attempt to read/write beyond limits."); - case MF_PICC_INTEGRITY_ERROR: return F("Unrecoverable error within PICC."); - case MF_COMMAND_ABORTED: return F("Previous command not fully completed."); - case MF_PICC_DISABLED_ERROR: return F("PICC disabled by unrecoverable error."); - case MF_COUNT_ERROR: return F("Cant create more apps, already @ 28."); - case MF_DUPLICATE_ERROR: return F("Cant create dup. file/app."); - case MF_EEPROM_ERROR: return F("Couldnt complete NV-write operation."); - case MF_FILE_NOT_FOUND: return F("Specified file number doesnt exist."); - case MF_FILE_INTEGRITY_ERROR: return F("Unrecoverable error within file."); - default: return F("Unknown error"); - } -} // End GetStatusCodeName() - -const __FlashStringHelper *DESFire::GetFileTypeName(mifare_desfire_file_types fileType) -{ - switch (fileType) { - case MDFT_STANDARD_DATA_FILE: return F("Standard data file."); - case MDFT_BACKUP_DATA_FILE: return F("Backup data file."); - case MDFT_VALUE_FILE_WITH_BACKUP: return F("Value file with backup."); - case MDFT_LINEAR_RECORD_FILE_WITH_BACKUP: return F("Linear record file with backup."); - case MDFT_CYCLIC_RECORD_FILE_WITH_BACKUP: return F("Cyclic record file with backup."); - default: return F("Unknown file type."); - } -} // End GetFileTypeName() - -const __FlashStringHelper *DESFire::GetCommunicationModeName(mifare_desfire_communication_modes communicationMode) -{ - switch (communicationMode) { - case MDCM_PLAIN: return(F("Plain Communication.")); - case MDCM_MACED: return(F("Plain Comm secured by DES/3DES MACing.")); - case MDCM_ENCIPHERED: return(F("Fully DES/3DES enciphered comm.")); - default: return F("Unknown communication mode."); - } -} // End GetCommunicationModeName() - -bool DESFire::IsStatusCodeOK(StatusCode code) -{ - if (code.mfrc522 != STATUS_OK) - return false; - if (code.desfire != MF_OPERATION_OK) - return false; - - return true; -} // End IsStatusCodeOK(); - -void DESFire::PICC_DumpMifareDesfireMasterKey(mifare_desfire_tag *tag) -{ - StatusCode response; - mifare_desfire_aid_t aid; - - aid.data[0] = 0x00; - aid.data[1] = 0x00; - aid.data[2] = 0x00; - - Serial.println(F("-- Desfire Master Key ---------------------------------------")); - Serial.println(F("-------------------------------------------------------------")); - // Select the current application. - response = MIFARE_DESFIRE_SelectApplication(tag, &aid); - if (!IsStatusCodeOK(response)) { - Serial.println(F("Error: Failed to select application.")); - Serial.println(GetStatusCodeName(response)); - Serial.println(F("-------------------------------------------------------------")); - return; - } - - // Get Key settings - byte keySettings; - byte keyCount = 0; - byte keyVersion; - - response = MIFARE_DESFIRE_GetKeySettings(tag, &keySettings, &keyCount); - if (IsStatusCodeOK(response)) { - Serial.print(F(" Key settings : 0x")); - if (keySettings < 0x10) - Serial.print(F("0")); - Serial.println(keySettings, HEX); - - Serial.print(F(" Max num keys : ")); - Serial.println(keyCount); - - // Output key versions - if (keyCount > 0) { - Serial.println(F(" ----------------------------------------------------------")); - Serial.println(F(" Key Versions")); - - // Get key versions (No output will be outputed later) - for (byte ixKey = 0; ixKey < keyCount; ixKey++) { - response = MIFARE_DESFIRE_GetKeyVersion(tag, ixKey, &keyVersion); - Serial.print(F(" Key 0x")); - if (ixKey < 0x10) - Serial.print(F("0")); - Serial.print(ixKey, HEX); - Serial.print(F(" : ")); - - if (IsStatusCodeOK(response)) { - Serial.print(F("0x")); - if (keyVersion < 0x10) - Serial.print(F("0")); - Serial.println(keyVersion, HEX); - } else { - Serial.println(GetStatusCodeName(response)); - } - } - } - } - else { - Serial.println(F(" Error: Failed to get application key settings.")); - // Just to be sure.. - keyCount = 0; - } - - Serial.println(F("-------------------------------------------------------------")); -} // End PICC_DumpMifareDesfireMasterKey() - -void DESFire::PICC_DumpMifareDesfireVersion(mifare_desfire_tag *tag, MIFARE_DESFIRE_Version_t *versionInfo) -{ - Serial.println(F("-- Desfire Information --------------------------------------")); - Serial.println(F("-------------------------------------------------------------")); - switch (versionInfo->hardware.version_major) { - case 0x00: - Serial.println(F(" Card type : MIFARE DESFire (MF3ICD40)")); - switch (versionInfo->hardware.storage_size) { - case 0x16: - Serial.print(F(" 2K")); - break; - case 0x18: - Serial.print(F(" 4K")); - break; - case 0x1A: - Serial.print(F(" 8K")); - break; - } - Serial.println(); - break; - case 0x01: - Serial.print(F(" Card type : MIFARE DESFire EV1")); - switch (versionInfo->hardware.storage_size) { - case 0x16: - Serial.print(F(" 2K")); - break; - case 0x18: - Serial.print(F(" 4K")); - break; - case 0x1A: - Serial.print(F(" 8K")); - break; - } - Serial.println(); - break; - case 0x12: - Serial.print(F(" Card type : MIFARE DESFire EV2")); - switch (versionInfo->hardware.storage_size) { - case 0x16: - Serial.print(F(" 2K")); - break; - case 0x18: - Serial.print(F(" 4K")); - break; - case 0x1A: - Serial.print(F(" 8K")); - break; - } - Serial.println(); - break; - } - - // UID - Serial.print(F(" UID :")); - for (byte i = 0; i < 7; i++) { - if (versionInfo->uid[i] < 0x10) - Serial.print(F(" 0")); - else - Serial.print(F(" ")); - Serial.print(versionInfo->uid[i], HEX); - } - Serial.println(); - - // Batch - Serial.print(F(" Batch number :")); - for (byte i = 0; i < 5; i++) { - if (versionInfo->batch_number[i] < 0x10) - Serial.print(F(" 0")); - else - Serial.print(F(" ")); - Serial.print(versionInfo->batch_number[i], HEX); - } - Serial.println(); - - Serial.print(F(" Production week : 0x")); - if (versionInfo->production_week < 0x10) - Serial.print(F("0")); - Serial.println(versionInfo->production_week, HEX); - - Serial.print(F(" Production year : 0x")); - if (versionInfo->production_year < 0x10) - Serial.print(F("0")); - Serial.println(versionInfo->production_year, HEX); - - Serial.println(F(" ----------------------------------------------------------")); - Serial.println(F(" Hardware Information")); - Serial.print(F(" Vendor ID : 0x")); - if (versionInfo->hardware.vendor_id < 0x10) - Serial.print(F("0")); - Serial.print(versionInfo->hardware.vendor_id, HEX); - if (versionInfo->hardware.vendor_id == 0x04) - Serial.print(F(" (NXP)")); - Serial.println(); - - Serial.print(F(" Type : 0x")); - if (versionInfo->hardware.type < 0x10) - Serial.print(F("0")); - Serial.println(versionInfo->hardware.type, HEX); - - Serial.print(F(" Subtype : 0x")); - if (versionInfo->hardware.subtype < 0x10) - Serial.print(F("0")); - Serial.println(versionInfo->hardware.subtype, HEX); - - Serial.print(F(" Version : ")); - Serial.print(versionInfo->hardware.version_major); - Serial.print(F(".")); - Serial.println(versionInfo->hardware.version_minor); - - Serial.print(F(" Storage size : 0x")); - if (versionInfo->hardware.storage_size < 0x10) - Serial.print(F("0")); - Serial.print(versionInfo->hardware.storage_size, HEX); - switch (versionInfo->hardware.storage_size) { - case 0x16: - Serial.print(F(" (2048 bytes)")); - break; - case 0x18: - Serial.print(F(" (4096 bytes)")); - break; - case 0x1A: - Serial.print(F(" (8192 bytes)")); - break; - } - Serial.println(); - - Serial.print(F(" Protocol : 0x")); - if (versionInfo->hardware.protocol < 0x10) - Serial.print(F("0")); - Serial.println(versionInfo->hardware.protocol, HEX); - - Serial.println(F(" ----------------------------------------------------------")); - Serial.println(F(" Software Information")); - Serial.print(F(" Vendor ID : 0x")); - if (versionInfo->software.vendor_id < 0x10) - Serial.print(F("0")); - Serial.print(versionInfo->software.vendor_id, HEX); - if (versionInfo->software.vendor_id == 0x04) - Serial.print(F(" (NXP)")); - Serial.println(); - - Serial.print(F(" Type : 0x")); - if (versionInfo->software.type < 0x10) - Serial.print(F("0")); - Serial.println(versionInfo->software.type, HEX); - - Serial.print(F(" Subtype : 0x")); - if (versionInfo->software.subtype < 0x10) - Serial.print(F("0")); - Serial.println(versionInfo->software.subtype, HEX); - - Serial.print(F(" Version : ")); - Serial.print(versionInfo->software.version_major); - Serial.print(F(".")); - Serial.println(versionInfo->software.version_minor); - - Serial.print(F(" Storage size : 0x")); - if (versionInfo->software.storage_size < 0x10) - Serial.print(F("0")); - Serial.print(versionInfo->software.storage_size, HEX); - switch (versionInfo->software.storage_size) { - case 0x16: - Serial.print(F(" (2048 bytes)")); - break; - case 0x18: - Serial.print(F(" (4096 bytes)")); - break; - case 0x1A: - Serial.print(F(" (8192 bytes)")); - break; - } - Serial.println(); - - Serial.print(F(" Protocol : 0x")); - if (versionInfo->software.protocol < 0x10) - Serial.print(F("0")); - Serial.println(versionInfo->software.protocol, HEX); - - Serial.println(F("-------------------------------------------------------------")); -} - -void DESFire::PICC_DumpMifareDesfireApplication(mifare_desfire_tag *tag, mifare_desfire_aid_t *aid) -{ - StatusCode response; - - Serial.println(F("-- Desfire Application --------------------------------------")); - Serial.println(F("-------------------------------------------------------------")); - Serial.print(F(" AID :")); - for (byte i = 0; i < 3; i++) { - if (aid->data[i] < 0x10) - Serial.print(F(" 0")); - else - Serial.print(F(" ")); - Serial.print(aid->data[i], HEX); - } - Serial.println(); - - // Select the current application. - response = MIFARE_DESFIRE_SelectApplication(tag, aid); - if (!IsStatusCodeOK(response)) { - Serial.println(F("Error: Failed to select application.")); - Serial.println(GetStatusCodeName(response)); - Serial.println(F("-------------------------------------------------------------")); - return; - } - - // Get Key settings - byte keySettings; - byte keyCount = 0; - byte keyVersion[16]; - - response = MIFARE_DESFIRE_GetKeySettings(tag, &keySettings, &keyCount); - if (IsStatusCodeOK(response)) { - Serial.print(F(" Key settings : 0x")); - if (keySettings < 0x10) - Serial.print(F("0")); - Serial.println(keySettings, HEX); - - Serial.print(F(" Max num keys : ")); - Serial.println(keyCount); - - // Get key versions (No output will be outputed later) - for (byte ixKey = 0; ixKey < keyCount; ixKey++) { - response = MIFARE_DESFIRE_GetKeyVersion(tag, ixKey, &(keyVersion[ixKey])); - if (!IsStatusCodeOK(response)) - keyVersion[ixKey] = 0x00; - } - - } else { - Serial.println(F(" Error: Failed to get application key settings.")); - // Just to be sure.. - keyCount = 0; - } - - // Get the files - byte files[MIFARE_MAX_FILE_COUNT]; - byte filesCount = 0; - response = MIFARE_DESFIRE_GetFileIDs(tag, files, &filesCount); - if (!IsStatusCodeOK(response)) { - Serial.println(F(" Error: Failed to get application file IDs.")); - Serial.print(F(" ")); - Serial.println(GetStatusCodeName(response)); - Serial.println(F("-------------------------------------------------------------")); - return; - } - - // Number of files - Serial.print(F(" Num. Files : ")); - Serial.println(filesCount); - - // Output key versions - if (keyCount > 0) { - Serial.println(F(" ----------------------------------------------------------")); - Serial.println(F(" Key Versions")); - for (byte ixKey = 0; ixKey < keyCount; ixKey++) { - Serial.print(F(" Key 0x")); - if (ixKey < 0x10) - Serial.print(F("0")); - Serial.print(ixKey, HEX); - Serial.print(F(" : 0x")); - if (keyVersion[ixKey] < 0x10) - Serial.print(F("0")); - Serial.println(keyVersion[ixKey], HEX); - } - } - - for (byte i = 0; i < filesCount; i++) { - Serial.println(F(" ----------------------------------------------------------")); - Serial.println(F(" File Information")); - Serial.print(F(" File ID : 0x")); - if (files[i] < 0x10) - Serial.print(F("0")); - Serial.println(files[i], HEX); - - // Get file settings - mifare_desfire_file_settings_t fileSettings; - - response = MIFARE_DESFIRE_GetFileSettings(tag, &(files[i]), &fileSettings); - if (IsStatusCodeOK(response)) { - Serial.print(F(" File Type : 0x")); - if (fileSettings.file_type < 0x10) - Serial.print(F("0")); - Serial.print(fileSettings.file_type, HEX); - Serial.print(F(" (")); - Serial.print(GetFileTypeName((mifare_desfire_file_types)fileSettings.file_type)); - Serial.println(F(")")); - - Serial.print(F(" Communication : 0x")); - if (fileSettings.communication_settings < 0x10) - Serial.print(F("0")); - Serial.print(fileSettings.communication_settings, HEX); - Serial.print(F(" (")); - Serial.print(GetCommunicationModeName((mifare_desfire_communication_modes)fileSettings.communication_settings)); - Serial.println(F(")")); - - Serial.print(F(" Access rights : 0x")); - Serial.println(fileSettings.access_rights, HEX); - - switch (fileSettings.file_type) { - case MDFT_STANDARD_DATA_FILE: - case MDFT_BACKUP_DATA_FILE: - Serial.print(F(" File Size : ")); - Serial.print(fileSettings.settings.standard_file.file_size); - Serial.println(F(" bytes")); - break; - case MDFT_VALUE_FILE_WITH_BACKUP: - Serial.print(F(" Lower Limit : ")); - Serial.println(fileSettings.settings.value_file.lower_limit); - Serial.print(F(" Upper Limit : ")); - Serial.println(fileSettings.settings.value_file.upper_limit); - Serial.print(F(" Limited credit : ")); - Serial.println(fileSettings.settings.value_file.limited_credit_value); - Serial.print(F(" Limited credit : ")); - - if (fileSettings.settings.value_file.limited_credit_enabled == 0x00) - Serial.print(F("Disabled (")); - else - Serial.print(F("Enabled (0x")); - if (fileSettings.settings.value_file.limited_credit_enabled < 0x10) - Serial.print(F("0")); - Serial.print(fileSettings.settings.value_file.limited_credit_enabled, HEX); - Serial.println(F(")")); - - break; - - case MDFT_LINEAR_RECORD_FILE_WITH_BACKUP: - case MDFT_CYCLIC_RECORD_FILE_WITH_BACKUP: - Serial.print(F(" Record size : ")); - Serial.println(fileSettings.settings.record_file.record_size); - Serial.print(F(" max num records: ")); - Serial.println(fileSettings.settings.record_file.max_number_of_records); - Serial.print(F(" num records : ")); - Serial.println(fileSettings.settings.record_file.current_number_of_records); - break; - } - - switch (fileSettings.file_type) { - case MDFT_STANDARD_DATA_FILE: - case MDFT_BACKUP_DATA_FILE: - { - // Get file data - byte fileContent[fileSettings.settings.standard_file.file_size]; - size_t fileContentLength = fileSettings.settings.standard_file.file_size; - response = MIFARE_DESFIRE_ReadData(tag, files[i], 0, fileSettings.settings.standard_file.file_size, fileContent, &fileContentLength); - if (response.mfrc522 == STATUS_OK) { - Serial.println(F(" ------------------------------------------------------")); - Serial.println(F(" Data")); - - if (response.desfire == MF_OPERATION_OK || response.desfire == MF_ADDITIONAL_FRAME) { - for (unsigned int iByte = 0; iByte < fileContentLength; iByte++) { - if ((iByte % 16) == 0) { - if (iByte != 0) - Serial.println(); - Serial.print(F(" ")); - } - if (fileContent[iByte] < 0x10) - Serial.print(F(" 0")); - else - Serial.print(F(" ")); - Serial.print(fileContent[iByte], HEX); - } - Serial.println(); - } - else { - Serial.print(F(" ")); - Serial.println(GetStatusCodeName(response)); - } - } - } - break; - case MDFT_VALUE_FILE_WITH_BACKUP: - { - // Get value - int32_t fileValue; - response = MIFARE_DESFIRE_GetValue(tag, files[i], &fileValue); - Serial.print(F(" Value : ")); - if (IsStatusCodeOK(response)) { - Serial.println(fileValue); - } else { - Serial.println(GetStatusCodeName(response)); - } - } - break; - } - - } else { - Serial.println(F(" Error: Failed to get file settings.")); - Serial.print(F(" ")); - Serial.println(GetStatusCodeName(response)); - } - } - - - Serial.println(F("-------------------------------------------------------------")); -} \ No newline at end of file diff --git a/Software/lib/rfid-desfire/Desfire.h b/Software/lib/rfid-desfire/Desfire.h deleted file mode 100644 index 7c28d42..0000000 --- a/Software/lib/rfid-desfire/Desfire.h +++ /dev/null @@ -1,187 +0,0 @@ -#ifndef DESFIRE_h -#define DESFIRE_h - -#include -#include -#include - -/* -------------------------------------- -* DESFire Logical Structure -* -------------------------------------- -*/ -#define MIFARE_MAX_APPLICATION_COUNT 28 /* max applications on one PICC */ -#define MIFARE_MAX_FILE_COUNT 16 /* max # of files in each application */ -#define MIFARE_UID_BYTES 7 /* number of UID bytes */ -#define MIFARE_AID_SIZE 3 /* number of AID bytes */ - -class DESFire : public MFRC522 { -public: - // DESFire Status and Error Codes. - enum DesfireStatusCode : byte { - MF_OPERATION_OK = 0x00, /* successful operation */ - MF_NO_CHANGES = 0x0C, /* no changes done to backup files */ - MF_OUT_OF_EEPROM_ERROR = 0x0E, /* insufficient NV-Mem. to complete cmd */ - MF_ILLEGAL_COMMAND_CODE = 0x1C, /* command code not supported */ - MF_INTEGRITY_ERROR = 0x1E, /* CRC or MAC does not match data */ - MF_NO_SUCH_KEY = 0x40, /* invalid key number specified */ - MF_LENGTH_ERROR = 0x7E, /* length of command string invalid */ - MF_PERMISSION_ERROR = 0x9D, /* curr conf/status doesnt allow cmd */ - MF_PARAMETER_ERROR = 0x9E, /* value of the parameter(s) invalid */ - MF_APPLICATION_NOT_FOUND = 0xA0, /* requested AID not present on PICC */ - MF_APPL_INTEGRITY_ERROR = 0xA1, /* unrecoverable err within app */ - MF_AUTHENTICATION_ERROR = 0xAE, /* cur auth status doesnt allow req cmd */ - MF_ADDITIONAL_FRAME = 0xAF, /* additional data frame to be sent */ - MF_BOUNDARY_ERROR = 0xBE, /* attempt to read/write beyond limits */ - MF_PICC_INTEGRITY_ERROR = 0xC1, /* unrecoverable error within PICC */ - MF_COMMAND_ABORTED = 0xCA, /* previous command not fully completed */ - MF_PICC_DISABLED_ERROR = 0xCD, /* PICC disabled by unrecoverable error */ - MF_COUNT_ERROR = 0xCE, /* cant create more apps, already @ 28 */ - MF_DUPLICATE_ERROR = 0xDE, /* cant create dup. file/app */ - MF_EEPROM_ERROR = 0xEE, /* couldnt complete NV-write operation */ - MF_FILE_NOT_FOUND = 0xF0, /* specified file number doesnt exist */ - MF_FILE_INTEGRITY_ERROR = 0xF1 /* unrecoverable error within file */ - }; - - // DESFire file types - enum mifare_desfire_file_types : byte { - MDFT_STANDARD_DATA_FILE = 0x00, - MDFT_BACKUP_DATA_FILE = 0x01, - MDFT_VALUE_FILE_WITH_BACKUP = 0x02, - MDFT_LINEAR_RECORD_FILE_WITH_BACKUP = 0x03, - MDFT_CYCLIC_RECORD_FILE_WITH_BACKUP = 0x04 - }; - - // DESFire communication modes - enum mifare_desfire_communication_modes : byte { - MDCM_PLAIN = 0x00, /* Plain Communication */ - MDCM_MACED = 0x01, /* Plain Comm secured by DES/3DES MACing */ - MDCM_ENCIPHERED = 0x03 /* Fully DES/3DES enciphered comm. */ - }; - - // A struct used for passing a MIFARE DESFire Version - typedef struct { - struct { - uint8_t vendor_id; - uint8_t type; - uint8_t subtype; - uint8_t version_major; - uint8_t version_minor; - uint8_t storage_size; - uint8_t protocol; - } hardware; - - struct { - uint8_t vendor_id; - uint8_t type; - uint8_t subtype; - uint8_t version_major; - uint8_t version_minor; - uint8_t storage_size; - uint8_t protocol; - } software; - - uint8_t uid[7]; - uint8_t batch_number[5]; - uint8_t production_week; - uint8_t production_year; - } MIFARE_DESFIRE_Version_t; - - typedef struct { - uint8_t data[MIFARE_AID_SIZE]; - } mifare_desfire_aid_t; - - typedef struct { - MFRC522::StatusCode mfrc522; - DesfireStatusCode desfire; - } StatusCode; - - // A struct used for passing a MIFARE DESFire Version - typedef struct { - uint8_t file_type; - uint8_t communication_settings; - uint16_t access_rights; - - union { - struct { - uint32_t file_size; - } standard_file; - struct { - int32_t lower_limit; - int32_t upper_limit; - int32_t limited_credit_value; - uint8_t limited_credit_enabled; - } value_file; - struct { - uint32_t record_size; - uint32_t max_number_of_records; - uint32_t current_number_of_records; - } record_file; /* linear and cyclic record files */ - } settings; - } mifare_desfire_file_settings_t; - - typedef struct { - byte cid; // Card ID - byte pcb; // Protocol Control Byte - byte selected_application[MIFARE_AID_SIZE]; - } mifare_desfire_tag; - - ///////////////////////////////////////////////////////////////////////////////////// - // Functions for setting up the Arduino - ///////////////////////////////////////////////////////////////////////////////////// - explicit DESFire() : MFRC522() {}; - explicit DESFire(byte resetPowerDownPin) : MFRC522(resetPowerDownPin) {}; - explicit DESFire(byte chipSelectPin, byte resetPowerDownPin) : MFRC522(chipSelectPin, resetPowerDownPin) {}; - - ///////////////////////////////////////////////////////////////////////////////////// - // ISO/IEC 14443 functions not currentlly present in MFRC522 library - ///////////////////////////////////////////////////////////////////////////////////// - MFRC522::StatusCode PICC_RequestATS(byte *atsBuffer, byte *atsLength); - MFRC522::StatusCode PICC_ProtocolAndParameterSelection(byte cid, byte pps0, byte pps1 = 0x00); - - ///////////////////////////////////////////////////////////////////////////////////// - // Functions for MIFARE DESFire - ///////////////////////////////////////////////////////////////////////////////////// - StatusCode MIFARE_DESFIRE_GetVersion(mifare_desfire_tag *tag, MIFARE_DESFIRE_Version_t *versionInfo); - StatusCode MIFARE_DESFIRE_GetApplicationIds(mifare_desfire_tag *tag, mifare_desfire_aid_t *aids, byte *applicationCount); - StatusCode MIFARE_DESFIRE_SelectApplication(mifare_desfire_tag *tag, mifare_desfire_aid_t *aid); - StatusCode MIFARE_DESFIRE_GetKeySettings(mifare_desfire_tag *tag, byte *settings, byte *maxKeys); - StatusCode MIFARE_DESFIRE_GetKeyVersion(mifare_desfire_tag *tag, byte key, byte *version); - - ///////////////////////////////////////////////////////////////////////////////////// - // MIFARE DESFire application level commands - ///////////////////////////////////////////////////////////////////////////////////// - StatusCode MIFARE_DESFIRE_GetFileIDs(mifare_desfire_tag *tag, byte *files, byte *filesCount); - StatusCode MIFARE_DESFIRE_GetFileSettings(mifare_desfire_tag *tag, byte *file, mifare_desfire_file_settings_t *fileSettings); - - ///////////////////////////////////////////////////////////////////////////////////// - // MIFARE DESFire data manipulation commands - ///////////////////////////////////////////////////////////////////////////////////// - StatusCode MIFARE_DESFIRE_ReadData(mifare_desfire_tag *tag, byte fid, uint32_t offset, uint32_t length, byte *backData, size_t *backLen); - StatusCode MIFARE_DESFIRE_GetValue(mifare_desfire_tag *tag, byte fid, int32_t *value); - - ///////////////////////////////////////////////////////////////////////////////////// - // Support functions - ///////////////////////////////////////////////////////////////////////////////////// - static const __FlashStringHelper *GetDesfireStatusCodeName(DesfireStatusCode code); - virtual const __FlashStringHelper *GetStatusCodeName(MFRC522::StatusCode code) { return MFRC522::GetStatusCodeName(code); }; - static const __FlashStringHelper *GetStatusCodeName(StatusCode code); - static const __FlashStringHelper *GetFileTypeName(mifare_desfire_file_types fileType); - static const __FlashStringHelper *GetCommunicationModeName(mifare_desfire_communication_modes communicationMode); - bool IsStatusCodeOK(StatusCode code); - - ///////////////////////////////////////////////////////////////////////////////////// - // Functions for debugging - ///////////////////////////////////////////////////////////////////////////////////// - void PICC_DumpMifareDesfireMasterKey(mifare_desfire_tag *tag); - void PICC_DumpMifareDesfireVersion(mifare_desfire_tag *tag, MIFARE_DESFIRE_Version_t *versionInfo); - void PICC_DumpMifareDesfireApplication(mifare_desfire_tag *tag, mifare_desfire_aid_t *aid); - -protected: - ///////////////////////////////////////////////////////////////////////////////////// - // Helper methods - ///////////////////////////////////////////////////////////////////////////////////// - StatusCode MIFARE_BlockExchange(mifare_desfire_tag *tag, byte cmd, byte *backData = NULL, byte *backLen = NULL); - StatusCode MIFARE_BlockExchangeWithData(mifare_desfire_tag *tag, byte cmd, byte *sendData = NULL, byte *sendLen = NULL, byte *backData = NULL, byte *backLen = NULL); -}; - -#endif \ No newline at end of file diff --git a/Software/lib/rfid-desfire/README.md b/Software/lib/rfid-desfire/README.md deleted file mode 100644 index 42df717..0000000 --- a/Software/lib/rfid-desfire/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# RFID-DESFire # - -Arduino library for MFRC522 and other RFID RC522 based modules. - -This library extends the [MFRC522 library](https://github.com/miguelbalboa/rfid) adding extra functionality for MIFARE DESFire cards. - -At the current stage no crypto has been implemented and a very limited subset of commands are available. - -## Requirements ## -- [MFRC522 library](https://github.com/miguelbalboa/rfid) - -### Future requirements ### -This libraries have been planned but need to be implemented and confirmed to be working properlly with DESFire library. - -- [Arduino DES library](https://github.com/spaniakos/ArduinoDES/) (Not yet implemented) -- [Arduino AES library](https://github.com/spaniakos/AES/) (Not yet implemented) - -## Credits ## - -[EasyPay](https://github.com/nceruchalu/easypay) has been an invaluable source of information due to the great documentation in its comments. diff --git a/Software/lib/rfid-desfire/docs/DesFireProgrammingGuide.pdf b/Software/lib/rfid-desfire/docs/DesFireProgrammingGuide.pdf deleted file mode 100644 index 43379670c1fc55a261af6bb96f7c7135ce90e0b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286707 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 _LE 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