#ifndef CM_GPA_H #define CM_GPA_H // ------------------------------------------------------------------------------------------------- // Other includes required by this header file // ------------------------------------------------------------------------------------------------- #include "CM_LIB.h" // Macros for all of the registers #define RA (ucGpaRegisters[0]) #define RB (ucGpaRegisters[1]) #define RC (ucGpaRegisters[2]) #define RD (ucGpaRegisters[3]) #define RE (ucGpaRegisters[4]) #define RF (ucGpaRegisters[5]) #define RG (ucGpaRegisters[6]) #define TA (ucGpaRegisters[7]) #define TB (ucGpaRegisters[8]) #define TC (ucGpaRegisters[9]) #define TD (ucGpaRegisters[10]) #define TE (ucGpaRegisters[11]) #define SA (ucGpaRegisters[12]) #define SB (ucGpaRegisters[13]) #define SC (ucGpaRegisters[14]) #define SD (ucGpaRegisters[15]) #define SE (ucGpaRegisters[16]) #define SF (ucGpaRegisters[17]) #define SG (ucGpaRegisters[18]) #define Gpa_byte (ucGpaRegisters[19]) #define Gpa_Regs (20) // Defines for constants used #define CM_MOD_R (0x1F) #define CM_MOD_T (0x1F) #define CM_MOD_S (0x7F) // Macros for common operations #define cm_Mod(x,y,m) ((x+y)>m?(x+y-m):(x+y)) #define cm_RotT(x) (((x<<1)&0x1e)|((x>>4)&0x01)) #define cm_RotR(x) (((x<<1)&0x1e)|((x>>4)&0x01)) #define cm_RotS(x) (((x<<1)&0x7e)|((x>>6)&0x01)) // Externals extern uint8_t ucGpaRegisters[Gpa_Regs]; // Function Prototypes void cm_ResetCrypto(void); uint8_t cm_GPAGen(uint8_t Datain); void cm_CalChecksum(uint8_t *Ck_sum); void cm_AuthenEncryptCal(uint8_t *Ci, uint8_t *G_Sk, uint8_t *Q, uint8_t *Ch); void cm_GPAGenN(uint8_t Count); void cm_GPAGenNF(uint8_t Count, uint8_t DataIn); void cm_GPAcmd2(uint8_t * pucInsBuff); void cm_GPAcmd3(uint8_t * pucInsBuff); void cm_GPAdecrypt(uint8_t ucEncrypt, uint8_t * pucBuffer, uint8_t ucCount); void cm_GPAencrypt(uint8_t ucEncrypt, uint8_t * pucBuffer, uint8_t ucCount); #endif