CM_GPA.h 2.0 KB

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