nfc: Add mifare classic value block commands (#2317)

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
Krzysztof Zdulski
2023-02-07 04:21:25 +01:00
committed by GitHub
parent 1ff5843ee6
commit d035872cf6
5 changed files with 541 additions and 91 deletions

View File

@@ -23,7 +23,7 @@ void nfc_util_num2bytes(uint64_t src, uint8_t len, uint8_t* dest) {
}
}
uint64_t nfc_util_bytes2num(uint8_t* src, uint8_t len) {
uint64_t nfc_util_bytes2num(const uint8_t* src, uint8_t len) {
furi_assert(src);
furi_assert(len <= 8);
@@ -45,3 +45,26 @@ uint8_t nfc_util_even_parity32(uint32_t data) {
uint8_t nfc_util_odd_parity8(uint8_t data) {
return nfc_util_odd_byte_parity[data];
}
void nfc_util_odd_parity(const uint8_t* src, uint8_t* dst, uint8_t len) {
furi_assert(src);
furi_assert(dst);
uint8_t parity = 0;
uint8_t bit = 0;
while(len--) {
parity |= nfc_util_odd_parity8(*src) << (7 - bit); // parity is MSB first
bit++;
if(bit == 8) {
*dst = parity;
dst++;
parity = 0;
bit = 0;
}
src++;
}
if(bit) {
*dst = parity;
}
}