@@ -29,6 +29,9 @@ This notice must be retained at the top of all source files where indicated.
2929
3030#include "../../Common.h"
3131#include "../CryptoAES128.h"
32+ #include "../CryptoAESExtended.h"
33+ #include "../CryptoTDEA.h"
34+ #include "../CryptoCMAC.h"
3235
3336#include "DESFireFirmwareSettings.h"
3437
@@ -44,6 +47,8 @@ This notice must be retained at the top of all source files where indicated.
4447#define DESFIRE_COMMS_PLAINTEXT_MAC (0x01)
4548#define DESFIRE_COMMS_CIPHERTEXT_DES (0x03)
4649#define DESFIRE_COMMS_CIPHERTEXT_AES128 (0x04)
50+ #define DESFIRE_COMMS_CIPHERTEXT_AES192 (0x05)
51+ #define DESFIRE_COMMS_CIPHERTEXT_AES256 (0x06)
4752#define DESFIRE_DEFAULT_COMMS_STANDARD (DESFIRE_COMMS_PLAINTEXT)
4853
4954extern BYTE DesfireCommMode ;
@@ -53,6 +58,8 @@ extern BYTE DesfireCommMode;
5358#define CRYPTO_TYPE_2KTDEA (0x0A)
5459#define CRYPTO_TYPE_3K3DES (0x1A)
5560#define CRYPTO_TYPE_AES128 (0x4A)
61+ #define CRYPTO_TYPE_AES192 (0x8A)
62+ #define CRYPTO_TYPE_AES256 (0xDA)
5663
5764#define CryptoTypeDES (ct ) \
5865 ((ct == CRYPTO_TYPE_DES) || (ct == CRYPTO_TYPE_ANY))
@@ -61,10 +68,17 @@ extern BYTE DesfireCommMode;
6168#define CryptoType3KTDEA (ct ) \
6269 ((ct == CRYPTO_TYPE_3K3DES) || (ct == CRYPTO_TYPE_ANY))
6370#define CryptoTypeAES (ct ) \
64- ((ct == CRYPTO_TYPE_AES128) || (ct == CRYPTO_TYPE_ANY))
71+ ((ct == CRYPTO_TYPE_AES128) || \
72+ (ct == CRYPTO_TYPE_AES192) || \
73+ (ct == CRYPTO_TYPE_AES256) || \
74+ (ct == CRYPTO_TYPE_ANY))
6575
6676/* Key sizes, block sizes (in bytes): */
67- #define CRYPTO_MAX_KEY_SIZE (24)
77+ #ifdef ENABLE_DESFIRE_AES_EXTENDED
78+ #define CRYPTO_MAX_KEY_SIZE (32)
79+ #else
80+ #define CRYPTO_MAX_KEY_SIZE (24)
81+ #endif
6882#define CRYPTO_MAX_BLOCK_SIZE (16)
6983#define DESFIRE_AES_IV_SIZE (CRYPTO_AES_BLOCK_SIZE)
7084#define CRYPTO_CHALLENGE_RESPONSE_BYTES (16)
@@ -105,7 +119,9 @@ typedef enum DESFIRE_FIRMWARE_ENUM_PACKING {
105119 DESFIRE_AUTH_LEGACY ,
106120 DESFIRE_AUTH_ISO_2KTDEA ,
107121 DESFIRE_AUTH_ISO_3KTDEA ,
108- DESFIRE_AUTH_AES ,
122+ DESFIRE_AUTH_AES128 ,
123+ DESFIRE_AUTH_AES192 ,
124+ DESFIRE_AUTH_AES256
109125} DesfireAuthType ;
110126
111127BYTE GetCryptoKeyTypeFromAuthenticateMethod (BYTE authCmdMethod );
@@ -117,8 +133,6 @@ BYTE GetCryptoKeyTypeFromAuthenticateMethod(BYTE authCmdMethod);
117133 * AES (128) crypto routines:
118134 *********************************************************/
119135
120- #include "../CryptoAES128.h"
121-
122136extern CryptoAESConfig_t AESCryptoContext ;
123137
124138void InitAESCryptoKeyData (void );
@@ -134,9 +148,6 @@ typedef uint8_t (*CryptoTransferReceiveFunc)(uint8_t *, uint8_t);
134148 * TripleDES crypto routines:
135149 *********************************************************/
136150
137- #include "../CryptoTDEA.h"
138- #include "../CryptoCMAC.h"
139-
140151#define DESFIRE_2KTDEA_NONCE_SIZE (CRYPTO_DES_BLOCK_SIZE)
141152#define DESFIRE_DES_IV_SIZE (CRYPTO_DES_BLOCK_SIZE)
142153#define DESFIRE_MAX_PAYLOAD_TDEA_BLOCKS (DESFIRE_MAX_PAYLOAD_SIZE / CRYPTO_DES_BLOCK_SIZE)
0 commit comments