Skip to content

Commit 34e0014

Browse files
committed
change data available check in hf mf sim on device side.
1 parent 20a0bc3 commit 34e0014

File tree

8 files changed

+127
-59
lines changed

8 files changed

+127
-59
lines changed

armsrc/dbprint.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
//-----------------------------------------------------------------------------
1717

1818
#include "dbprint.h"
19-
2019
#include "string.h"
2120
#include "cmd.h"
2221
#include "printf.h"

armsrc/desfire_crypto.c

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#include "crc32.h"
3232
#include "crc.h"
3333
#include "crc16.h" // crc16 ccitt
34-
#include "printf.h"
34+
#include "nprintf.h"
3535
#include "iso14443a.h"
3636
#include "dbprint.h"
3737
#include "BigBuf.h"
@@ -65,25 +65,32 @@ void des_decrypt(void *out, const void *in, const void *key) {
6565
mbedtls_des_crypt_ecb(&ctx, in, out);
6666
}
6767

68-
void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key, unsigned char iv[8], int keymode) {
69-
if (length % 8) return;
70-
if (keymode == 2)
68+
void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key, uint8_t *iv, int keymode) {
69+
70+
// must be even blocks of 8 bytes.
71+
if (length % 8) {
72+
return;
73+
}
74+
75+
if (keymode == 2) {
7176
mbedtls_des3_set2key_dec(&ctx3, key);
72-
else
77+
} else {
7378
mbedtls_des3_set3key_dec(&ctx3, key);
79+
}
7480

75-
uint8_t i;
7681
unsigned char temp[8];
7782
uint8_t *tin = (uint8_t *) in;
7883
uint8_t *tout = (uint8_t *) out;
7984

8085
while (length > 0) {
86+
8187
memcpy(temp, tin, 8);
8288

8389
mbedtls_des3_crypt_ecb(&ctx3, tin, tout);
8490

85-
for (i = 0; i < 8; i++)
86-
tout[i] = (unsigned char)(tout[i] ^ iv[i]);
91+
for (uint8_t i = 0; i < 8; i++) {
92+
tout[i] ^= iv[i];
93+
}
8794

8895
memcpy(iv, temp, 8);
8996

@@ -93,20 +100,26 @@ void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key,
93100
}
94101
}
95102

96-
void tdes_nxp_send(const void *in, void *out, size_t length, const void *key, unsigned char iv[8], int keymode) {
97-
if (length % 8) return;
98-
if (keymode == 2)
103+
void tdes_nxp_send(const void *in, void *out, size_t length, const void *key, uint8_t *iv, int keymode) {
104+
105+
// must be even blocks of 8 bytes.
106+
if (length % 8) {
107+
return;
108+
}
109+
110+
if (keymode == 2) {
99111
mbedtls_des3_set2key_enc(&ctx3, key);
100-
else
112+
} else {
101113
mbedtls_des3_set3key_enc(&ctx3, key);
114+
}
102115

103-
uint8_t i;
104116
uint8_t *tin = (uint8_t *) in;
105117
uint8_t *tout = (uint8_t *) out;
106118

107119
while (length > 0) {
108-
for (i = 0; i < 8; i++) {
109-
tin[i] = (unsigned char)(tin[i] ^ iv[i]);
120+
121+
for (uint8_t i = 0; i < 8; i++) {
122+
tin[i] ^= iv[i];
110123
}
111124

112125
mbedtls_des3_crypt_ecb(&ctx3, tin, tout);

armsrc/desfire_crypto.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,8 @@ struct desfire_tag {
177177
typedef struct desfire_tag *desfiretag_t;
178178
void des_encrypt(void *out, const void *in, const void *key);
179179
void des_decrypt(void *out, const void *in, const void *key);
180-
void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key, unsigned char iv[8], int keymode);
181-
void tdes_nxp_send(const void *in, void *out, size_t length, const void *key, unsigned char iv[8], int keymode);
180+
void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key, uint8_t *iv, int keymode);
181+
void tdes_nxp_send(const void *in, void *out, size_t length, const void *key, uint8_t *iv, int keymode);
182182

183183
void aes128_nxp_receive(const void *in, void *out, size_t length, const void *key, unsigned char iv[16]);
184184
void aes128_nxp_send(const void *in, void *out, size_t length, const void *key, unsigned char iv[16]);

armsrc/em4x50.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,9 @@ static bool extract_parities(uint64_t word, uint32_t *data) {
129129
}
130130
}
131131

132-
if ((row_parities == row_parities_calculated) && (col_parities == col_parities_calculated))
132+
if ((row_parities == row_parities_calculated) && (col_parities == col_parities_calculated)) {
133133
return true;
134-
134+
}
135135
return false;
136136
}
137137

0 commit comments

Comments
 (0)