123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- // CryptoMemory Header File
- //
- // Detailed descriptions of all functions and structures in the header file can be found in
- // the "CryptoMemory Library User Manual".
- //
- // Revision Date Changes
- // -------- --------- -----------------------------------------------------------------
- // 0.1 26 Oct 04 First Release
- // 0.2 19 Nov 04 Major additions and corrections
- // Protect Library against multiple inclusion
- #ifndef __CM_LIB_H__
- #define __CM_LIB_H__
- #include "com_IPMIDefs.h"
- // -------------------------------------------------------------------------------------------------
- // Definations
- // -------------------------------------------------------------------------------------------------
- // Basic Definations (if not available elsewhere)
- #ifndef FALSE
- #define FALSE (0)
- #define TRUE (!FALSE)
- #endif
- #ifndef NULL
- #define NULL ((void *)0)
- #endif
- // Device Configuration Register
- #define DCR_ADDR (0x18)
- #define DCR_SME (0x80)
- #define DCR_UCR (0x40)
- #define DCR_UAT (0x20)
- #define DCR_ETA (0x10)
- #define DCR_CS (0x0F)
- // Cryptograms
- #define CM_Ci (0x50)
- #define CM_Sk (0x58)
- #define CM_G (0x90)
- // Fuses
- #define CM_FAB (0x06)
- #define CM_CMA (0x04)
- #define CM_PER (0x00)
- // Password
- #define CM_PSW (0xB0)
- #define CM_PWREAD (1)
- #define CM_PWWRITE (0)
- // Return Code Defination
- #define SUCCESS (0)
- #define FAILED (1)
- #define FAIL_CMDSTART (2)
- #define FAIL_CMDSEND (3)
- #define FAIL_WRDATA (4)
- #define FAIL_RDDATA (5)
- // note: additional specific error codes may be added in the future
- // -------------------------------------------------------------------------------------------------
- void cm_InitTwiPio(void);
- void cm_RestorPio(void);
- // High Level Function Prototypes
- // Select Chip
- uint8_t cm_SelectChip(uint8_t ucChipId);
- // Activate Security
- uint8_t cm_ActiveSecurity(uint8_t ucKeySet, uint8_t * pucKey, uint8_t * pucRandom, uint8_t ucEncrypt);
- // Deactivate Security
- uint8_t cm_DeactiveSecurity(void);
- // Verify Password
- uint8_t cm_VerifyPassword(uint8_t * pucPassword, uint8_t ucSet, uint8_t ucRW);
- // Reset Password
- uint8_t cm_ResetPassword(void);
- // Verify Secure Code
- //#define cm_VerifySecureCode(CM_PW) cm_VerifyPassword(CM_PWRON_CLKS, 7, CM_PWWRITE)
- #define cm_VerifySecureCode(CM_PW) cm_VerifyPassword(CM_PW, 7, CM_PWWRITE)
- // Read Configuration Zone
- uint8_t cm_ReadConfigZone(uint8_t ucCryptoAddr, uint8_t * pucBuffer, uint8_t ucCount);
- // Write Configuration Zone
- uint8_t cm_WriteConfigZone(uint8_t ucCryptoAddr, uint8_t * pucBuffer, uint8_t ucCount, uint8_t ucAntiTearing);
- // Set User Zone
- uint8_t cm_SetUserZone(uint8_t ucZoneNumber, uint8_t ucAntiTearing);
- // Read User Zone
- uint8_t cm_ReadLargeZone(uint32_t uiCryptoAddr, uint8_t * pucBuffer, uint8_t ucCount);
- // Read Small User Zone
- uint8_t cm_ReadSmallZone(uint8_t ucCryptoAddr, uint8_t * pucBuffer, uint8_t ucCount);
- // Write User Zone
- char cm_WriteLargeZone(uint32_t uiCryptoAddr, uint8_t * pucBuffer, uint8_t ucCount);
- // Write Small User Zone
- uint8_t cm_WriteSmallZone(uint8_t ucCryptoAddr, uint8_t * pucBuffer, uint8_t ucCount);
- // Send Checksum
- uint8_t cm_SendChecksum(uint8_t * pucChkSum);
- // Read Checksum
- uint8_t cm_ReadChecksum(uint8_t * pucChkSum);
- // Read Fuse Byte
- uint8_t cm_ReadFuse(uint8_t * pucFuze);
- // Burn Fuse
- uint8_t cm_BurnFuse(uint8_t ucFuze);
- void cm_InitTwiPio(void);
- void cm_RestorPio(void);
- void cm_InitCmVar(unsigned char Num);
- //加密访问API接口函数:用于认证加密
- int cm_Auth_Encrp(void);
- // -------------------------------------------------------------------------------------------------
- // Configuration Structures
- // -------------------------------------------------------------------------------------------------
- // CryptoMemory Low Level Linkage
- //
- typedef struct{
- uint8_t (*Carddetect)(void);
- void (*PowerOff)(void);
- void (*PowerOn)(void);
- uint8_t (*SendCommand)(uint8_t * pucCommandBuffer);
- uint8_t (*ReceiveRet)(uint8_t * pucReceiveData, uint8_t ucLength);
- uint8_t (*SendData)(uint8_t * pucSendData, uint8_t ucLength);
- void (*RandomGen)(uint8_t * pucRandomData);
- void (*WaitClock)(uint8_t ucLoop);
- uint8_t (*SendCmdByte)(uint8_t ucCommand);
- } cm_low_level;
- // CryptoMemory Low Level Configuration
- //
- // If any of the supplied CryptoMemory low level library functions are used, this structure must be
- // present in the user code. For a detailed description of the elements in the structure, please
- // see the "CryptoMemory Library User Manual".
- //
- typedef struct{
- uint8_t ucChipSelect;
- uint8_t ucClockPort;
- uint8_t ucClockPin;
- uint8_t ucDataPort;
- uint8_t ucDataPin;
- uint8_t ucCardSensePort;
- uint8_t ucCardSensePin;
- uint8_t ucCardSensePolarity;
- uint8_t ucPowerPort;
- uint8_t ucPowerPin;
- uint8_t ucPowerPolarity;
- uint8_t ucDelayCount;
- uint8_t ucStartTries;
- } cm_port_cfg;
- // -------------------------------------------------------------------------------------------------
- // Externals for Configuration Structures
- // -------------------------------------------------------------------------------------------------
- extern cm_low_level CM_LOW_LEVEL;
- extern cm_port_cfg CM_PORT_CFG;
- // -------------------------------------------------------------------------------------------------
- // Other Externals
- // -------------------------------------------------------------------------------------------------
- extern uint8_t ucCM_Encrypt;
- extern uint8_t ucCM_Authenticate;
- extern uint8_t ucCM_UserZone;
- extern uint8_t ucCM_AntiTearing;
- extern uint8_t ucCM_InsBuff[4];
- uint8_t cm_Auth_Encrp_Init(uint8_t authMode,uint8_t pswMode,uint8_t encryptFlag);
- uint8_t test_cryptomem(void);
- uint8_t cm_Auth_Encrp_Write(uint8_t userZone,uint8_t startInZone,uint8_t* writeData,uint8_t writeLen);
- uint8_t cm_Auth_Encrp_Read(uint8_t userZone,uint8_t startInZone,uint8_t* readData,uint8_t readLen);
- uint8_t cm_Auth_Encrp_Personal(uint8_t pswMode,uint8_t authMode);
- // end of multiple inclusion protection
- #endif
|