mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
desfire_crypto: remove global vars
This commit is contained in:
parent
e3eb8b7401
commit
ff1f945291
1 changed files with 18 additions and 8 deletions
|
@ -36,10 +36,6 @@
|
||||||
#include "crc16.h" // crc16 ccitt
|
#include "crc16.h" // crc16 ccitt
|
||||||
#include "crc32.h"
|
#include "crc32.h"
|
||||||
|
|
||||||
mbedtls_des_context ctx;
|
|
||||||
mbedtls_des3_context ctx3;
|
|
||||||
mbedtls_aes_context actx;
|
|
||||||
|
|
||||||
#ifndef AddCrc14A
|
#ifndef AddCrc14A
|
||||||
# define AddCrc14A(data, len) compute_crc(CRC_14443_A, (data), (len), (data)+(len), (data)+(len)+1)
|
# define AddCrc14A(data, len) compute_crc(CRC_14443_A, (data), (len), (data)+(len), (data)+(len)+1)
|
||||||
#endif
|
#endif
|
||||||
|
@ -57,17 +53,20 @@ static inline void update_key_schedules(desfirekey_t key) {
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
void des_encrypt(void *out, const void *in, const void *key) {
|
void des_encrypt(void *out, const void *in, const void *key) {
|
||||||
|
mbedtls_des_context ctx;
|
||||||
mbedtls_des_setkey_enc(&ctx, key);
|
mbedtls_des_setkey_enc(&ctx, key);
|
||||||
mbedtls_des_crypt_ecb(&ctx, in, out);
|
mbedtls_des_crypt_ecb(&ctx, in, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
void des_decrypt(void *out, const void *in, const void *key) {
|
void des_decrypt(void *out, const void *in, const void *key) {
|
||||||
|
mbedtls_des_context ctx;
|
||||||
mbedtls_des_setkey_dec(&ctx, key);
|
mbedtls_des_setkey_dec(&ctx, key);
|
||||||
mbedtls_des_crypt_ecb(&ctx, in, out);
|
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) {
|
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 (length % 8) return;
|
||||||
|
mbedtls_des3_context ctx3;
|
||||||
if (keymode == 2) mbedtls_des3_set2key_dec(&ctx3, key);
|
if (keymode == 2) mbedtls_des3_set2key_dec(&ctx3, key);
|
||||||
else mbedtls_des3_set3key_dec(&ctx3, key);
|
else mbedtls_des3_set3key_dec(&ctx3, key);
|
||||||
|
|
||||||
|
@ -94,6 +93,7 @@ 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) {
|
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 (length % 8) return;
|
||||||
|
mbedtls_des3_context ctx3;
|
||||||
if (keymode == 2) mbedtls_des3_set2key_enc(&ctx3, key);
|
if (keymode == 2) mbedtls_des3_set2key_enc(&ctx3, key);
|
||||||
else mbedtls_des3_set3key_enc(&ctx3, key);
|
else mbedtls_des3_set3key_enc(&ctx3, key);
|
||||||
|
|
||||||
|
@ -754,14 +754,17 @@ void mifare_cypher_single_block(desfirekey_t key, uint8_t *data, uint8_t *ivect,
|
||||||
break;
|
break;
|
||||||
case T_3DES:
|
case T_3DES:
|
||||||
switch (operation) {
|
switch (operation) {
|
||||||
case MCO_ENCYPHER:
|
case MCO_ENCYPHER: {
|
||||||
|
mbedtls_des3_context ctx3;
|
||||||
mbedtls_des3_set2key_enc(&ctx3, key->data);
|
mbedtls_des3_set2key_enc(&ctx3, key->data);
|
||||||
mbedtls_des3_crypt_ecb(&ctx3, data, edata);
|
mbedtls_des3_crypt_ecb(&ctx3, data, edata);
|
||||||
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_ENCRYPT);
|
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_ENCRYPT);
|
||||||
// DES_ecb_encrypt ((DES_cblock *) edata, (DES_cblock *) data, &(key->ks2), DES_DECRYPT);
|
// DES_ecb_encrypt ((DES_cblock *) edata, (DES_cblock *) data, &(key->ks2), DES_DECRYPT);
|
||||||
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_ENCRYPT);
|
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_ENCRYPT);
|
||||||
break;
|
break;
|
||||||
case MCO_DECYPHER:
|
}
|
||||||
|
case MCO_DECYPHER: {
|
||||||
|
mbedtls_des3_context ctx3;
|
||||||
mbedtls_des3_set2key_dec(&ctx3, key->data);
|
mbedtls_des3_set2key_dec(&ctx3, key->data);
|
||||||
mbedtls_des3_crypt_ecb(&ctx3, data, edata);
|
mbedtls_des3_crypt_ecb(&ctx3, data, edata);
|
||||||
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_DECRYPT);
|
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_DECRYPT);
|
||||||
|
@ -769,17 +772,21 @@ void mifare_cypher_single_block(desfirekey_t key, uint8_t *data, uint8_t *ivect,
|
||||||
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_DECRYPT);
|
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_DECRYPT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case T_3K3DES:
|
case T_3K3DES:
|
||||||
switch (operation) {
|
switch (operation) {
|
||||||
case MCO_ENCYPHER:
|
case MCO_ENCYPHER: {
|
||||||
|
mbedtls_des3_context ctx3;
|
||||||
mbedtls_des3_set3key_enc(&ctx3, key->data);
|
mbedtls_des3_set3key_enc(&ctx3, key->data);
|
||||||
mbedtls_des3_crypt_ecb(&ctx3, data, edata);
|
mbedtls_des3_crypt_ecb(&ctx3, data, edata);
|
||||||
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_ENCRYPT);
|
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_ENCRYPT);
|
||||||
// DES_ecb_encrypt ((DES_cblock *) edata, (DES_cblock *) data, &(key->ks2), DES_DECRYPT);
|
// DES_ecb_encrypt ((DES_cblock *) edata, (DES_cblock *) data, &(key->ks2), DES_DECRYPT);
|
||||||
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks3), DES_ENCRYPT);
|
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks3), DES_ENCRYPT);
|
||||||
break;
|
break;
|
||||||
case MCO_DECYPHER:
|
}
|
||||||
|
case MCO_DECYPHER: {
|
||||||
|
mbedtls_des3_context ctx3;
|
||||||
mbedtls_des3_set3key_dec(&ctx3, key->data);
|
mbedtls_des3_set3key_dec(&ctx3, key->data);
|
||||||
mbedtls_des3_crypt_ecb(&ctx3, data, edata);
|
mbedtls_des3_crypt_ecb(&ctx3, data, edata);
|
||||||
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks3), DES_DECRYPT);
|
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks3), DES_DECRYPT);
|
||||||
|
@ -787,10 +794,12 @@ void mifare_cypher_single_block(desfirekey_t key, uint8_t *data, uint8_t *ivect,
|
||||||
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_DECRYPT);
|
// DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_DECRYPT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case T_AES:
|
case T_AES:
|
||||||
switch (operation) {
|
switch (operation) {
|
||||||
case MCO_ENCYPHER: {
|
case MCO_ENCYPHER: {
|
||||||
|
mbedtls_aes_context actx;
|
||||||
mbedtls_aes_init(&actx);
|
mbedtls_aes_init(&actx);
|
||||||
mbedtls_aes_setkey_enc(&actx, key->data, 128);
|
mbedtls_aes_setkey_enc(&actx, key->data, 128);
|
||||||
mbedtls_aes_crypt_cbc(&actx, MBEDTLS_AES_ENCRYPT, sizeof(edata), ivect, data, edata);
|
mbedtls_aes_crypt_cbc(&actx, MBEDTLS_AES_ENCRYPT, sizeof(edata), ivect, data, edata);
|
||||||
|
@ -798,6 +807,7 @@ void mifare_cypher_single_block(desfirekey_t key, uint8_t *data, uint8_t *ivect,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MCO_DECYPHER: {
|
case MCO_DECYPHER: {
|
||||||
|
mbedtls_aes_context actx;
|
||||||
mbedtls_aes_init(&actx);
|
mbedtls_aes_init(&actx);
|
||||||
mbedtls_aes_setkey_dec(&actx, key->data, 128);
|
mbedtls_aes_setkey_dec(&actx, key->data, 128);
|
||||||
mbedtls_aes_crypt_cbc(&actx, MBEDTLS_AES_DECRYPT, sizeof(edata), ivect, edata, data);
|
mbedtls_aes_crypt_cbc(&actx, MBEDTLS_AES_DECRYPT, sizeof(edata), ivect, edata, data);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue