projects
/
proxmark3-svn
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
still wrong...
[proxmark3-svn]
/
armsrc
/
desfire_crypto.c
diff --git
a/armsrc/desfire_crypto.c
b/armsrc/desfire_crypto.c
index 8bb8034838afb89e82fad9e7378e0dda11c9636f..fdb0677118e49681e487159f8fde2ebd16aa7a3b 100644
(file)
--- a/
armsrc/desfire_crypto.c
+++ b/
armsrc/desfire_crypto.c
@@
-84,11
+84,11
@@
void cmac (const desfirekey_t key, uint8_t *ivect, const uint8_t *data, size_t l
mifare_cypher_blocks_chained (NULL, key, ivect, buffer, len, MCD_SEND, MCO_ENCYPHER);
memcpy (cmac, ivect, kbs);
mifare_cypher_blocks_chained (NULL, key, ivect, buffer, len, MCD_SEND, MCO_ENCYPHER);
memcpy (cmac, ivect, kbs);
+ free(buffer);
}
size_t key_block_size (const desfirekey_t key) {
size_t block_size = 8;
}
size_t key_block_size (const desfirekey_t key) {
size_t block_size = 8;
-
switch (key->type) {
case T_DES:
case T_3DES:
switch (key->type) {
case T_DES:
case T_3DES:
@@
-99,7
+99,6
@@
size_t key_block_size (const desfirekey_t key) {
block_size = 16;
break;
}
block_size = 16;
break;
}
-
return block_size;
}
return block_size;
}
@@
-108,7
+107,6
@@
size_t key_block_size (const desfirekey_t key) {
*/
static size_t key_macing_length (const desfirekey_t key) {
size_t mac_length = MAC_LENGTH;
*/
static size_t key_macing_length (const desfirekey_t key) {
size_t mac_length = MAC_LENGTH;
-
switch (key->type) {
case T_DES:
case T_3DES:
switch (key->type) {
case T_DES:
case T_3DES:
@@
-119,7
+117,6
@@
static size_t key_macing_length (const desfirekey_t key) {
mac_length = CMAC_LENGTH;
break;
}
mac_length = CMAC_LENGTH;
break;
}
-
return mac_length;
}
return mac_length;
}
@@
-160,7
+157,7
@@
size_t enciphered_data_length (const desfiretag_t tag, const size_t nbytes, int
return padded_data_length (nbytes + crc_length, block_size);
}
return padded_data_length (nbytes + crc_length, block_size);
}
-void* mifare_cryto_preprocess_data (desfiretag_t tag, void *data, size_t *nbytes,
off
_t offset, int communication_settings) {
+void* mifare_cryto_preprocess_data (desfiretag_t tag, void *data, size_t *nbytes,
size
_t offset, int communication_settings) {
uint8_t *res = data;
uint8_t mac[4];
size_t edl;
uint8_t *res = data;
uint8_t mac[4];
size_t edl;
@@
-225,8
+222,8
@@
void* mifare_cryto_preprocess_data (desfiretag_t tag, void *data, size_t *nbytes
cmac (key, DESFIRE (tag)->ivect, res, *nbytes, DESFIRE (tag)->cmac);
if (append_mac) {
cmac (key, DESFIRE (tag)->ivect, res, *nbytes, DESFIRE (tag)->cmac);
if (append_mac) {
- maced_data_length (key, *nbytes);
-
+
size_t len =
maced_data_length (key, *nbytes);
+ ++len;
memcpy (res, data, *nbytes);
memcpy (res + *nbytes, DESFIRE (tag)->cmac, CMAC_LENGTH);
*nbytes += CMAC_LENGTH;
memcpy (res, data, *nbytes);
memcpy (res + *nbytes, DESFIRE (tag)->cmac, CMAC_LENGTH);
*nbytes += CMAC_LENGTH;
@@
-288,7
+285,7
@@
void* mifare_cryto_preprocess_data (desfiretag_t tag, void *data, size_t *nbytes
}
}
-void* mifare_cryto_postprocess_data (desfiretag_t tag, void *data, s
s
ize_t *nbytes, int communication_settings)
+void* mifare_cryto_postprocess_data (desfiretag_t tag, void *data, size_t *nbytes, int communication_settings)
{
void *res = data;
size_t edl;
{
void *res = data;
size_t edl;
@@
-458,7
+455,7
@@
void* mifare_cryto_postprocess_data (desfiretag_t tag, void *data, ssize_t *nbyt
break;
case AS_NEW:
end_crc_pos = crc_pos + 4;
break;
case AS_NEW:
end_crc_pos = crc_pos + 4;
- crc32 (res, end_crc_pos, (uint8_t *)&crc);
+ crc32
_ex
(res, end_crc_pos, (uint8_t *)&crc);
break;
}
if (!crc) {
break;
}
if (!crc) {
@@
-579,7
+576,7
@@
void mifare_cypher_single_block (desfirekey_t key, uint8_t *data, uint8_t *ivect
{
AesCtx ctx;
AesCtxIni(&ctx, ivect, key->data, KEY128,CBC);
{
AesCtx ctx;
AesCtxIni(&ctx, ivect, key->data, KEY128,CBC);
- AesEncrypt(&ctx, data, edata, sizeof(data) );
+ AesEncrypt(&ctx, data, edata, sizeof(
e
data) );
break;
}
case MCO_DECYPHER:
break;
}
case MCO_DECYPHER:
Impressum
,
Datenschutz