From 8aaeb6b542e4d34ab8ee9d78e84f98f10c68e6e5 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Wed, 18 Aug 2021 13:15:20 +0300 Subject: [PATCH] lrp cmac 8 --- client/src/mifare/lrpcrypto.c | 10 ++++++++++ client/src/mifare/lrpcrypto.h | 1 + 2 files changed, 11 insertions(+) diff --git a/client/src/mifare/lrpcrypto.c b/client/src/mifare/lrpcrypto.c index e274b660b..9b1d0e0df 100644 --- a/client/src/mifare/lrpcrypto.c +++ b/client/src/mifare/lrpcrypto.c @@ -265,3 +265,13 @@ void LRPCMAC(LRPContext *ctx, uint8_t *data, size_t datalen, uint8_t *cmac) { LRPEvalLRP(ctx, y, CRYPTO_AES128_KEY_SIZE * 2, true, cmac); } + +void LRPCMAC8(LRPContext *ctx, uint8_t *data, size_t datalen, uint8_t *cmac) { + uint8_t cmac_tmp[16] = {0}; + memset(cmac, 0x00, 8); + + LRPCMAC(ctx, data, datalen, cmac_tmp); + + for (int i = 0; i < 8; i++) + cmac[i] = cmac_tmp[i * 2 + 1]; +} diff --git a/client/src/mifare/lrpcrypto.h b/client/src/mifare/lrpcrypto.h index cf1653865..d3834b6c6 100644 --- a/client/src/mifare/lrpcrypto.h +++ b/client/src/mifare/lrpcrypto.h @@ -56,5 +56,6 @@ void LRPEncode(LRPContext *ctx, uint8_t *data, size_t datalen, uint8_t *resp, si void LRPDecode(LRPContext *ctx, uint8_t *data, size_t datalen, uint8_t *resp, size_t *resplen); void LRPGenSubkeys(uint8_t *key, uint8_t *sk1, uint8_t *sk2); void LRPCMAC(LRPContext *ctx, uint8_t *data, size_t datalen, uint8_t *cmac); +void LRPCMAC8(LRPContext *ctx, uint8_t *data, size_t datalen, uint8_t *cmac); #endif // __LRPCRYPTO_H