Skip to content

feat: add MIFARE Classic support#14

Merged
jeanpierrefortune merged 18 commits intomainfrom
mifare-classic
Feb 6, 2026
Merged

feat: add MIFARE Classic support#14
jeanpierrefortune merged 18 commits intomainfrom
mifare-classic

Conversation

@jeanpierrefortune
Copy link
Contributor

No description provided.

- Updated `loadKey` to use `KeyStorageType` instead of a boolean.
- Modified `generalAuthenticate` to return a boolean result and improved its internal logic for key retrieval and authentication.
- Simplified `overview.md` by removing detailed configuration and key management sections.
- Replace `volatileKeyRegistry` and `persistentKeyRegistry` `SparseArray`s with a single `loadedKey` byte array.
- Update `loadKey` to store only the most recently provided key.
- Update `generalAuthenticate` to use the `loadedKey` (clearing it after use) or fallback to the `keyProvider`.
- Ensure `loadedKey` is cleared when the physical channel is opened, closed, or a new tag is discovered.
Specifically, this change:
- Replaces the if-else block with a when expression for better readability and safety.
- Explicitly handles `MifareClassic`, `MifareUltralight`, and throws an `UnsupportedOperationException` for other technologies.
- Removes the explicit 16-byte size check for `MifareClassic` within this method.
- Rename `classic` to `mifareClassic` for clarity in `generalAuthenticate`.
- Simplify key retrieval logic using `checkNotNull`.
- Stop resetting `loadedKey` to `null` in `onTagDiscovered`.
- Replace the generic `MIFARE_CLASSIC` protocol with specific `MIFARE_CLASSIC_1K` and `MIFARE_CLASSIC_4K` constants.
- Update `isProtocolSupported` to validate the physical card size against the requested MIFARE Classic protocol.
- Update protocol activation and deactivation logic to handle the new specific MIFARE Classic types.
…isCurrentProtocol

Specifically, this change:
- Simplifies `isProtocolSupported` to only verify if the protocol name exists.
- Moves the MIFARE Classic 1K vs 4K size validation logic to `isCurrentProtocol`.
- Updates `CHANGELOG.md` to specify support for `MIFARE_CLASSIC_1K` and `MIFARE_CLASSIC_4K`.
Specifically:
- Swaps the order of `mavenCentral()` and `google()` in `pluginManagement`.
- Prioritizes `google()` over `mavenCentral()` and `mavenLocal()` in `dependencyResolutionManagement`.
@sonarqubecloud
Copy link

sonarqubecloud bot commented Feb 6, 2026

@jeanpierrefortune jeanpierrefortune merged commit 97ffbcb into main Feb 6, 2026
5 of 6 checks passed
@jeanpierrefortune jeanpierrefortune deleted the mifare-classic branch February 6, 2026 10:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants