Skip to content

Commit

Permalink
change data available check in hf mf sim on device side.
Browse files Browse the repository at this point in the history
  • Loading branch information
iceman1001 committed Sep 14, 2024
1 parent 20a0bc3 commit 34e0014
Show file tree
Hide file tree
Showing 8 changed files with 127 additions and 59 deletions.
1 change: 0 additions & 1 deletion armsrc/dbprint.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
//-----------------------------------------------------------------------------

#include "dbprint.h"

#include "string.h"
#include "cmd.h"
#include "printf.h"
Expand Down
43 changes: 28 additions & 15 deletions armsrc/desfire_crypto.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
#include "crc32.h"
#include "crc.h"
#include "crc16.h" // crc16 ccitt
#include "printf.h"
#include "nprintf.h"
#include "iso14443a.h"
#include "dbprint.h"
#include "BigBuf.h"
Expand Down Expand Up @@ -65,25 +65,32 @@ void des_decrypt(void *out, const void *in, const void *key) {
mbedtls_des_crypt_ecb(&ctx, in, out);
}

void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key, unsigned char iv[8], int keymode) {
if (length % 8) return;
if (keymode == 2)
void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key, uint8_t *iv, int keymode) {

// must be even blocks of 8 bytes.
if (length % 8) {
return;
}

if (keymode == 2) {
mbedtls_des3_set2key_dec(&ctx3, key);
else
} else {
mbedtls_des3_set3key_dec(&ctx3, key);
}

uint8_t i;
unsigned char temp[8];
uint8_t *tin = (uint8_t *) in;
uint8_t *tout = (uint8_t *) out;

while (length > 0) {

memcpy(temp, tin, 8);

mbedtls_des3_crypt_ecb(&ctx3, tin, tout);

for (i = 0; i < 8; i++)
tout[i] = (unsigned char)(tout[i] ^ iv[i]);
for (uint8_t i = 0; i < 8; i++) {
tout[i] ^= iv[i];
}

memcpy(iv, temp, 8);

Expand All @@ -93,20 +100,26 @@ void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key,
}
}

void tdes_nxp_send(const void *in, void *out, size_t length, const void *key, unsigned char iv[8], int keymode) {
if (length % 8) return;
if (keymode == 2)
void tdes_nxp_send(const void *in, void *out, size_t length, const void *key, uint8_t *iv, int keymode) {

// must be even blocks of 8 bytes.
if (length % 8) {
return;
}

if (keymode == 2) {
mbedtls_des3_set2key_enc(&ctx3, key);
else
} else {
mbedtls_des3_set3key_enc(&ctx3, key);
}

uint8_t i;
uint8_t *tin = (uint8_t *) in;
uint8_t *tout = (uint8_t *) out;

while (length > 0) {
for (i = 0; i < 8; i++) {
tin[i] = (unsigned char)(tin[i] ^ iv[i]);

for (uint8_t i = 0; i < 8; i++) {
tin[i] ^= iv[i];
}

mbedtls_des3_crypt_ecb(&ctx3, tin, tout);
Expand Down
4 changes: 2 additions & 2 deletions armsrc/desfire_crypto.h
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,8 @@ struct desfire_tag {
typedef struct desfire_tag *desfiretag_t;
void des_encrypt(void *out, const void *in, const void *key);
void des_decrypt(void *out, const void *in, const void *key);
void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key, unsigned char iv[8], int keymode);
void tdes_nxp_send(const void *in, void *out, size_t length, const void *key, unsigned char iv[8], int keymode);
void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key, uint8_t *iv, int keymode);
void tdes_nxp_send(const void *in, void *out, size_t length, const void *key, uint8_t *iv, int keymode);

void aes128_nxp_receive(const void *in, void *out, size_t length, const void *key, unsigned char iv[16]);
void aes128_nxp_send(const void *in, void *out, size_t length, const void *key, unsigned char iv[16]);
Expand Down
4 changes: 2 additions & 2 deletions armsrc/em4x50.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,9 @@ static bool extract_parities(uint64_t word, uint32_t *data) {
}
}

if ((row_parities == row_parities_calculated) && (col_parities == col_parities_calculated))
if ((row_parities == row_parities_calculated) && (col_parities == col_parities_calculated)) {
return true;

}
return false;
}

Expand Down
Loading

0 comments on commit 34e0014

Please sign in to comment.