mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-21 13:53:55 -07:00
add mac sketch
This commit is contained in:
parent
56d7efdbb5
commit
0a51eb445d
1 changed files with 12 additions and 1 deletions
|
@ -22,7 +22,6 @@
|
||||||
#include "commonutil.h"
|
#include "commonutil.h"
|
||||||
#include "mifare/desfire_crypto.h"
|
#include "mifare/desfire_crypto.h"
|
||||||
|
|
||||||
|
|
||||||
void DesfireCryptoEncDec(DesfireContext *ctx, uint8_t *srcdata, size_t srcdatalen, uint8_t *dstdata, bool encode) {
|
void DesfireCryptoEncDec(DesfireContext *ctx, uint8_t *srcdata, size_t srcdatalen, uint8_t *dstdata, bool encode) {
|
||||||
uint8_t data[1024] = {0};
|
uint8_t data[1024] = {0};
|
||||||
|
|
||||||
|
@ -93,13 +92,25 @@ static void DesfireSecureChannelEncodeD40(DesfireContext *ctx, uint8_t cmd, uint
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DesfireSecureChannelEncodeEV1(DesfireContext *ctx, uint8_t cmd, uint8_t *srcdata, size_t srcdatalen, uint8_t *dstdata, size_t *dstdatalen) {
|
static void DesfireSecureChannelEncodeEV1(DesfireContext *ctx, uint8_t cmd, uint8_t *srcdata, size_t srcdatalen, uint8_t *dstdata, size_t *dstdatalen) {
|
||||||
|
uint8_t data[1024] = {0};
|
||||||
|
size_t rlen = 0;
|
||||||
|
|
||||||
memcpy(dstdata, srcdata, srcdatalen);
|
memcpy(dstdata, srcdata, srcdatalen);
|
||||||
*dstdatalen = srcdatalen;
|
*dstdatalen = srcdatalen;
|
||||||
|
|
||||||
switch(ctx->commMode) {
|
switch(ctx->commMode) {
|
||||||
case DCMPlain:
|
case DCMPlain:
|
||||||
case DCMMACed:
|
case DCMMACed:
|
||||||
|
data[0] = cmd;
|
||||||
|
rlen = padded_data_length(srcdatalen + 1, desfire_get_key_block_length(ctx->keyType));
|
||||||
|
memcpy(&data[1], srcdata, srcdatalen);
|
||||||
|
DesfireCryptoEncDec(ctx, data, rlen, NULL, true);
|
||||||
|
|
||||||
|
memcpy(dstdata, srcdata, srcdatalen);
|
||||||
|
if (srcdatalen != 0 && ctx->commMode == DCMMACed) {
|
||||||
|
memcpy(&dstdata[srcdatalen], ctx->IV, 4);
|
||||||
|
*dstdatalen = rlen;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case DCMEncrypted:
|
case DCMEncrypted:
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue