2021-07-02 00:53:57 +08:00
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// Copyright (C) 2010 Romain Tartiere.
|
|
|
|
// Copyright (C) 2014 Iceman
|
|
|
|
// Copyright (C) 2021 Merlok
|
|
|
|
//
|
|
|
|
// This code is licensed to you under the terms of the GNU GPL, version 2 or,
|
|
|
|
// at your option, any later version. See the LICENSE.txt file for the text of
|
|
|
|
// the license.
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// High frequency Desfire core functions
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
#ifndef __DESFIRECORE_H
|
|
|
|
#define __DESFIRECORE_H
|
|
|
|
|
|
|
|
#include "common.h"
|
2021-07-04 17:20:09 +08:00
|
|
|
#include "cliparser.h"
|
2021-07-06 17:39:06 +08:00
|
|
|
#include "mifare/desfirecrypto.h"
|
2021-07-02 00:53:57 +08:00
|
|
|
#include "mifare/desfire_crypto.h"
|
|
|
|
#include "mifare/mifare4.h"
|
|
|
|
|
2021-07-04 17:20:09 +08:00
|
|
|
extern const CLIParserOption DesfireAlgoOpts[];
|
|
|
|
extern const CLIParserOption DesfireKDFAlgoOpts[];
|
|
|
|
extern const CLIParserOption DesfireCommunicationModeOpts[];
|
|
|
|
extern const CLIParserOption DesfireCommandSetOpts[];
|
|
|
|
extern const CLIParserOption DesfireSecureChannelOpts[];
|
|
|
|
|
2021-07-02 01:47:02 +08:00
|
|
|
const char *DesfireGetErrorString(int res, uint16_t *sw);
|
2021-07-02 23:06:13 +08:00
|
|
|
uint32_t DesfireAIDByteToUint(uint8_t *data);
|
|
|
|
void DesfireAIDUintToByte(uint32_t aid, uint8_t *data);
|
2021-07-02 01:47:02 +08:00
|
|
|
|
2021-07-06 17:39:06 +08:00
|
|
|
void DesfirePrintContext(DesfireContext *ctx);
|
|
|
|
|
2021-07-02 01:32:04 +08:00
|
|
|
int DesfireExchange(DesfireContext *ctx, uint8_t cmd, uint8_t *data, size_t datalen, uint8_t *respcode, uint8_t *resp, size_t *resplen);
|
2021-07-03 18:11:17 +08:00
|
|
|
int DesfireExchangeEx(bool activate_field, DesfireContext *ctx, uint8_t cmd, uint8_t *data, size_t datalen, uint8_t *respcode, uint8_t *resp, size_t *resplen, bool enable_chaining, size_t splitbysize);
|
2021-07-02 00:53:57 +08:00
|
|
|
|
2021-07-02 22:37:15 +08:00
|
|
|
int DesfireSelectAID(DesfireContext *ctx, uint8_t *aid1, uint8_t *aid2);
|
|
|
|
int DesfireSelectAIDHex(DesfireContext *ctx, uint32_t aid1, bool select_two, uint32_t aid2);
|
2021-07-02 23:06:13 +08:00
|
|
|
|
2021-07-03 22:31:12 +08:00
|
|
|
int DesfireAuthenticate(DesfireContext *dctx, DesfireSecureChannel secureChannel);
|
2021-07-02 22:37:15 +08:00
|
|
|
|
2021-07-07 22:59:42 +08:00
|
|
|
int DesfireGetUID(DesfireContext *dctx, uint8_t *resp, size_t *resplen);
|
2021-07-02 23:06:13 +08:00
|
|
|
int DesfireGetAIDList(DesfireContext *dctx, uint8_t *resp, size_t *resplen);
|
|
|
|
int DesfireGetDFList(DesfireContext *dctx, uint8_t *resp, size_t *resplen);
|
|
|
|
|
2021-07-06 23:41:52 +08:00
|
|
|
int DesfireCreateApplication(DesfireContext *dctx, uint8_t *appdata, size_t appdatalen);
|
|
|
|
int DesfireDeleteApplication(DesfireContext *dctx, uint32_t aid);
|
2021-07-02 00:53:57 +08:00
|
|
|
|
2021-07-10 00:26:15 +08:00
|
|
|
int DesfireGetKeyVersion(DesfireContext *dctx, uint8_t *resp, size_t *resplen);
|
|
|
|
int DesfireGetKeySettings(DesfireContext *dctx, uint8_t *resp, size_t *resplen);
|
|
|
|
int DesfireChangeKeySettings(DesfireContext *dctx, uint8_t *data, size_t len);
|
|
|
|
void PrintKeySettings(uint8_t keysettings, uint8_t numkeys, bool applevel);
|
|
|
|
|
2021-07-02 00:53:57 +08:00
|
|
|
#endif // __DESFIRECORE_H
|