]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/emv/apduinfo.h
Merge pull request #969 from pwpiwi/gcc10_fixes
[proxmark3-svn] / client / emv / apduinfo.h
index a3fa2049b96736f80c86875414641f660f08e06b..d407a125e163a38b11f06ccbcad6b052c010e4c7 100644 (file)
 #ifndef APDUINFO_H__
 #define APDUINFO_H__
 
 #ifndef APDUINFO_H__
 #define APDUINFO_H__
 
-#include <stdio.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <inttypes.h>
+#include "util.h"
 
 
-#define APDUCODE_TYPE_NONE             0
-#define APDUCODE_TYPE_INFO             1
-#define APDUCODE_TYPE_WARNING  2
-#define APDUCODE_TYPE_ERROR            3
-#define APDUCODE_TYPE_SECURITY 4
+
+#define APDUCODE_TYPE_NONE     0
+#define APDUCODE_TYPE_INFO     1
+#define APDUCODE_TYPE_WARNING  2
+#define APDUCODE_TYPE_ERROR    3
+#define APDUCODE_TYPE_SECURITY 4
 
 typedef struct {
        const char *ID;
        const uint8_t Type;
        const char *Description;
 } APDUCode;
 
 typedef struct {
        const char *ID;
        const uint8_t Type;
        const char *Description;
 } APDUCode;
-       
-extern const APDUCode* const GetAPDUCode(uint8_t sw1, uint8_t sw2);
-extern const char* GetAPDUCodeDescription(uint8_t sw1, uint8_t sw2);
+
+typedef struct {
+       uint8_t CLA;
+       uint8_t INS;
+       uint8_t P1;
+       uint8_t P2;
+       uint8_t Lc;
+       uint8_t *data;
+} PACKED sAPDU;
+
+typedef struct {
+       uint8_t cla;
+       uint8_t ins;
+       uint8_t p1;
+       uint8_t p2;
+       uint8_t lc[3];
+} PACKED ExtAPDUHeader;
+
+typedef struct {
+       uint8_t cla;
+       uint8_t ins;
+       uint8_t p1;
+       uint8_t p2;
+       uint16_t lc;
+       uint8_t *data;
+       uint32_t le;
+       bool extended_apdu;
+       uint8_t case_type;
+} PACKED APDUStruct;
+
+extern const APDUCode *GetAPDUCode(uint8_t sw1, uint8_t sw2);
+extern const char *GetAPDUCodeDescription(uint8_t sw1, uint8_t sw2);
+extern int APDUDecode(uint8_t *data, int len, APDUStruct *apdu);
+extern int APDUEncode(APDUStruct *apdu, uint8_t *data, int *len);
+extern int APDUEncodeS(sAPDU *apdu, bool extended, uint16_t le, uint8_t *data, int *len);
+extern void APDUPrint(APDUStruct apdu);
+extern void APDUPrintEx(APDUStruct apdu, size_t maxdatalen);
 
 #endif
 
 #endif
Impressum, Datenschutz