📄 at88sc153.h
字号:
// Copyright (C) Elva, 1998
//#include "common_dll.h"
#define NB_COMMAND 17
#define TWC 10
#define TNbParam unsigned char
#define SParameter unsigned char
#define CONFIG_ZONE0 0x00
#define CONFIG_ZONE1 0x01
#define CONFIG_ZONE2 0x02
#define CONFIG_ZONE 0x03
#define CONFIG_SADDR 0x19
#define EEPROM_READ(zone) (0xb0 | ((zone & 0x03) << 2) | 0x01)
#define EEPROM_WRITE(zone) (0xb0 | ((zone & 0x03) << 2))
typedef enum
{
NACK_COMMAND = 1,
NACK_ADDRESS,
NACK_DATA,
NACK_ADDRESS_FUSES,
NACK_ADDRESS_PASSWORD,
NACK_PASSWORD,
NACK_HOST,
NACK_CHALLENGE,
BAD_AUTHENTICATION_CARD,
BAD_AUTHENTICATION_READER,
BAD_PASSWORD,
BAD_ADDRESS,
BAD_WRITE,
BAD_INDEX,
BAD_ZONE,
BAD_NUMBER_READ,
NO_CARD,
}ERRNO;
typedef struct {
char Name[20];
unsigned int NbCommand;
TNbParam NbParam[NB_COMMAND];
SParameter **ParamIn[NB_COMMAND];
SParameter **ParamOut[NB_COMMAND];
char NameF[NB_COMMAND][20];
char HelpF[NB_COMMAND][255];
} SInit;
typedef unsigned char BYTE;
class CGpa
{
private :
// state var
unsigned char R[7];
unsigned char S[7];
unsigned char T[5];
// key var
unsigned char Crypto[8]; // cryptogram
unsigned char GC[8];
unsigned char Q0[8];
unsigned char Q1[8];
unsigned char Q2[8];
void calculState(unsigned char Ri, unsigned char Ti, unsigned char Si);
unsigned char calcul(void);
public :
CGpa();
~CGpa();
unsigned char calcul(unsigned char nbre);
void calculKey(unsigned char key);
void SetInit(unsigned char *crypto,unsigned char *graine,unsigned char *host);
void Authenticate(unsigned char *q1,unsigned char *q2);
};
typedef BOOL (*DLL_INITN)(int);
typedef void (*DLL_VOID)(void);
typedef unsigned char (*DLL_PC)(void);
typedef BOOL (*DLL_COMMANDC)(BYTE,int);
typedef BOOL (*DLL_SENDBYTE)(BYTE );
typedef unsigned char (*DLL_READBYTE)(void);
typedef void (*DLL_RESET)(int,unsigned char *);
class SC153
{
public:
~SC153();
SC153();
int RazCard(int number,BYTE *answer);
int RemoveCard(void);
int InitPRG(BYTE *secret,BYTE *crypto,BYTE *host);
int Authenticate(BYTE chip,BYTE *q0,BYTE *q1,BYTE *q2);
int PresentPWD(BYTE chip,BYTE num,BYTE dir,BYTE *pwd);
int RunPRG(BYTE *ci1,BYTE *ci2);
int ResetCard(BYTE *answer);
int ReadEEPROM(BYTE chip,BYTE zone,BYTE add,BYTE *data,BYTE number);
int WriteEEPROM(BYTE chip,BYTE zone,BYTE add,BYTE *data,BYTE number);
int ReadFuse(BYTE chip, BYTE *fuse);
int WriteFuse(BYTE chip, BYTE fuse);
int VerifyPWD(BYTE chip, BYTE num,BYTE *pwd);
int InitAuthentication(BYTE chip,BYTE *host);
int VerifyAuthentication(BYTE chip, BYTE *challenge);
int WriteLock(BYTE chip,BYTE zone,BYTE address,BYTE data);
int WriteCheck(BYTE chip,BYTE zone,BYTE add,BYTE *data,BYTE number, BYTE *q0,BYTE *q1,BYTE *q2,BYTE *sc);
int SimulCheck(BYTE nb, BYTE dir,BYTE *data,BYTE *sc);
SInit Init;
protected:
CGpa GPA;
BOOL CardOk;
HINSTANCE gLibDLL;
DLL_COMMANDC gLibCommand;
DLL_SENDBYTE gLibSendByte;
DLL_READBYTE gLibReadByte;
DLL_INITN gLibInit;
DLL_VOID gLibPowOn;
DLL_VOID gLibPowOff;
DLL_VOID gLibStop;
DLL_VOID gLibAck;
DLL_VOID gLibNack;
DLL_PC gLibPC;
DLL_RESET gLibReset;
int ErrNo;
void IsCardPresent(void);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -