📄 csd.h
字号:
#ifndef CSD_H
#define CSD_H
/******************************************************************************/
/* */
/* INCLUDE FILES */
/* */
/******************************************************************************/
#include <stddef.h>
#include "csd_impl.h"
/******************************************************************************/
/* */
/* TYPES DEFINITIONS */
/* */
/******************************************************************************/
typedef struct SCsdInitParameters* TCsdInitParameters;
typedef unsigned char TCsdNuid[4];
typedef unsigned long int TCsdVendorID;
typedef unsigned long int TCsdDerivationLevelNumber;
typedef enum
{
CSD_SCS_CHECKED_SIZE_16K,
CSD_SCS_CHECKED_SIZE_32K,
CSD_SCS_CHECKED_SIZE_64K,
CSD_SCS_CHECKED_SIZE_128K,
CSD_SCS_CHECKED_SIZE_256K,
LAST_CSD_SCS_CHECKED_SIZE
} TCsdSCSCheckedAreaSize;
typedef enum
{
CSD_NEJTAG_OPEN,
CSD_NEJTAG_PASSWORD_PROTECTED,
CSD_NEJTAG_CLOSED,
CSD_NEJTAG_INCONSISTENT_STATE,
LAST_CSD_NEJTAG_PORT_STATE
} TCsdNEJTAGPortState;
typedef struct
{
size_t length;
unsigned char* pData;
} TCsdDataBlock;
typedef TCsdDataBlock TCsdKey;
#define EMBEDDED_TDES_KEY ((TCsdKey*) NULL)
typedef struct SCsdDescramblerChannelID* TCsdDescramblerChannelID;
typedef struct SCsdRam2RamChannelID* TCsdRam2RamChannelID;
typedef enum
{
CSD_CRYPTO_MODE_TDES_ECB,
CSD_CRYPTO_MODE_TDES_CBC,
CSD_CRYPTO_MODE_AES_ECB,
CSD_CRYPTO_MODE_AES_CBC,
LAST_CDS_CRYPTO_MODE
} TCsdCryptoMode;
typedef unsigned long int TCsdCheckNumber;
typedef enum
{
CSD_NO_ERROR,
CSD_ERROR_OPERATION_FAILED,
CSD_ERROR_OPERATION_NOT_ALLOWED,
CSD_ERROR_BAD_KEY_LENGTH,
CSD_ERROR_UNKNOWN_CHANNEL_ID,
CSD_ERROR_CRYPTO_MODE_NOT_SUPPORTED,
CSD_ERROR_LEVEL_NUMBER_NOT_SUPPORTED,
LAST_CSD_STATUS
} TCsdStatus;
/******************************************************************************/
/* */
/* FUNCTION PROTOTYPES */
/* */
/******************************************************************************/
TCsdStatus csdInitialize
(
TCsdInitParameters xInitParameters
);
TCsdStatus csdTerminate
(
TCsdInitParameters xInitParameters
);
TCsdStatus csdGetSoftwareVersion
(
char* pxSoftwareVersion,
size_t* pxSoftwareVersionLength
);
TCsdStatus csdGetNUID
(
TCsdNuid* pxNuid
);
TCsdStatus csdGetVendorID
(
TCsdVendorID* pxVendorID
);
TCsdStatus csdGetChipRevision
(
char* pxChipRevision,
size_t* pxChipRevisionLength
);
TCsdStatus csdSetSCSCheckedAreaSize
(
TCsdSCSCheckedAreaSize xSCSCheckedAreaSize
);
TCsdStatus csdEnableSCS
(
void
);
TCsdStatus csdGetNEJTAGPortState
(
TCsdNEJTAGPortState* pxNEJTAGPortState
);
TCsdStatus csdSetNEJTAGPortState
(
TCsdNEJTAGPortState xNEJTAGPortState
);
TCsdStatus csdSetClearTextDescramblingKey
(
TCsdDescramblerChannelID xDescramblerChannelID,
const TCsdKey* pxOddDescramblingKey,
const TCsdKey* pxEvenDescramblingKey
);
TCsdStatus csdSetDescramblingInternalKeys
(
TCsdDerivationLevelNumber xDerivationLevelNumber,
const TCsdKey pxProtectingKeyTable[],
TCsdCryptoMode xCryptoMode
);
TCsdStatus csdSetProtectedDescramblingKey
(
TCsdDescramblerChannelID xDescramblerChannelID,
const TCsdKey* pxOddProtectedDescramblingKey,
const TCsdKey* pxEvenProtectedDescramblingKey,
TCsdCryptoMode xCryptoMode
);
TCsdStatus csdSetRam2RamKey
(
TCsdRam2RamChannelID xRam2RamChannelID,
TCsdDerivationLevelNumber xDerivationLevelNumber,
const TCsdKey pxProtectingKeyTable[],
TCsdCryptoMode xCryptoMode
);
TCsdStatus csdEncryptData
(
TCsdRam2RamChannelID xRam2RamChannelID,
const TCsdDataBlock* pxSrc,
TCsdDataBlock* pxDst,
TCsdCryptoMode xCryptoMode
);
TCsdStatus csdDecryptData
(
TCsdRam2RamChannelID xRam2RamChannelID,
const TCsdDataBlock* pxSrc,
TCsdDataBlock* pxDst,
TCsdCryptoMode xCryptoMode
);
TCsdStatus csdGetCheckNumber
(
TCsdCheckNumber* pxCheckNumber
);
#endif /* CSD_H */
/* END OF FILE */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -