212 lines
7.7 KiB
C
Executable File
212 lines
7.7 KiB
C
Executable File
/*
|
|
HASH driver header file
|
|
|
|
HASH driver header file.
|
|
|
|
@file hash.h
|
|
@ingroup mIDrvMisc_HASH
|
|
@note Nothing
|
|
|
|
Copyright Novatek Microelectronics Corp. 2020. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _HASH_H
|
|
#define _HASH_H
|
|
|
|
#include <kwrap/nvt_type.h>
|
|
|
|
/**
|
|
@addtogroup mIDrvMisc_HASH
|
|
*/
|
|
//@{
|
|
/**
|
|
Hash engine clock rate
|
|
*/
|
|
typedef enum
|
|
{
|
|
HASH_CLOCK_240MHz = 0x00, ///< Select HASH clock rate 240 MHz
|
|
HASH_CLOCK_320MHz, ///< Select HASH clock rate 320 MHz
|
|
HASH_CLOCK_Reserved, ///< Select HASH clock rate Reserved
|
|
HASH_CLOCK_PLL9, ///< Select HASH clock rate PLL9(for IDE/ETH)
|
|
|
|
HASH_CLOCK_RATE_NUM,
|
|
ENUM_DUMMY4WORD(HASH_CLOCK_RATE)
|
|
} HASH_CLOCK_RATE;
|
|
|
|
|
|
/**
|
|
Hash engine Algorithm
|
|
*/
|
|
typedef enum
|
|
{
|
|
HASH_MODE_SHA1 = 0x00, ///< Select HASH mode SHA1
|
|
HASH_MODE_SHA256, ///< Select HASH mode SHA256
|
|
HASH_MODE_HMAC_SHA1, ///< Select HASH mode HMAC_SHA1
|
|
HASH_MODE_HMAC_SHA256, ///< Select HASH mode HMAC_SHA256
|
|
|
|
HASH_MODE_NUM,
|
|
ENUM_DUMMY4WORD(HASH_MODE)
|
|
} HASH_MODE;
|
|
|
|
|
|
/**
|
|
Hash engine Select Iniatial Vector source
|
|
*/
|
|
typedef enum
|
|
{
|
|
HASH_IV_Default=0, ///< Set HASH IV with default value of algorithm.
|
|
HASH_IV_REG, ///< Configured by using register HASH_IV_0 to HASH_IV_7
|
|
|
|
HASH_IV_NUM,
|
|
ENUM_DUMMY4WORD(HASH_IV)
|
|
} HASH_IV;
|
|
|
|
|
|
/**
|
|
Hash engine Access Mode
|
|
*/
|
|
typedef enum
|
|
{
|
|
HASH_ACCMODE_PIO=0, ///< Select HASH Access mode PIO
|
|
HASH_ACCMODE_DMA, ///< Select HASH Access mode DMA
|
|
|
|
HASH_ACCMODE_NUM,
|
|
ENUM_DUMMY4WORD(HASH_ACCMODE)
|
|
} HASH_ACCMODE;
|
|
|
|
|
|
/**
|
|
Hash engine Access Mode
|
|
*/
|
|
typedef enum
|
|
{
|
|
HASH_DMA_PAD_DISABLE=0, ///< Select HASH DMA mode Padding Disable
|
|
HASH_DMA_PAD_ENABLE, ///< Select HASH DMA mode Padding Enable
|
|
|
|
HASH_DMA_PAD_NUM,
|
|
ENUM_DUMMY4WORD(HASH_DMA_PAD)
|
|
} HASH_DMA_PAD;
|
|
|
|
/**
|
|
Hash funciotn bypass or not at DMA mode.
|
|
*/
|
|
typedef enum
|
|
{
|
|
HASH_BYPASS_NORMAL=0, ///< Set HASH engine as normal mode
|
|
HASH_BYPASS_HwCopy, ///< Set HASH engine as HwCopy
|
|
|
|
HASH_BYPASS_NUM,
|
|
ENUM_DUMMY4WORD(HASH_BYPASS)
|
|
} HASH_BYPASS;
|
|
|
|
|
|
/**
|
|
Set Hash funciotn as initail state.
|
|
*/
|
|
typedef enum
|
|
{
|
|
HASH_INI_NORMAL=0, ///< Set HASH engine as normal state
|
|
HASH_INI_STATE, ///< Set HASH engine as initail state
|
|
|
|
HASH_INI_NUM,
|
|
ENUM_DUMMY4WORD(HASH_INI)
|
|
} HASH_INI;
|
|
|
|
|
|
/**
|
|
Set Hash funciotn as internal padding state.
|
|
*/
|
|
typedef enum
|
|
{
|
|
HASH_IPAD_NORMAL=0, ///< Set HASH engine as normal state
|
|
HASH_IPAD_STATE, ///< Set HASH engine as internal padding state
|
|
|
|
HASH_IPAD_NUM,
|
|
ENUM_DUMMY4WORD(HASH_IPAD)
|
|
} HASH_IPAD;
|
|
|
|
|
|
/**
|
|
Set Hash funciotn as external padding state.
|
|
*/
|
|
typedef enum
|
|
{
|
|
HASH_OPAD_NORMAL=0, ///< Set HASH engine as normal state
|
|
HASH_OPAD_STATE, ///< Set HASH engine as internal padding state
|
|
|
|
HASH_OPAD_NUM,
|
|
ENUM_DUMMY4WORD(HASH_OPAD)
|
|
} HASH_OPAD;
|
|
|
|
|
|
/**
|
|
Hash configuration identifier
|
|
|
|
@note For hash_setConfig()
|
|
*/
|
|
typedef enum
|
|
{
|
|
HASH_CONFIG_ID_CLOCK_RATE, ///< Select HASH engine internal clock rate usage
|
|
///< Context can be any of:
|
|
///< - @b HASH_CLOCK_240MHz: Internal clock rate 240MHz
|
|
///< - @b HASH_CLOCK_320MHz: Internal clock rate 320MHz
|
|
///< - @b HASH_CLOCK_PLL9MHz: Internal clock rate 280MHz
|
|
HASH_CONFIG_ID_MODE, ///< Select HASH engine Algorithm
|
|
///< Context can be any of:
|
|
///< - @b HASH_MODE_SHA1: Select HASH mode SHA1
|
|
///< - @b HASH_MODE_SHA256: Select HASH mode SHA256
|
|
///< - @b HASH_MODE_HMAC_SHA1: Select HASH mode HMAC_SHA1
|
|
///< - @b HASH_MODE_HMAC_SHA256: Select HASH mode HMAC_SHA256
|
|
///< - @b HASH_MODE_HwCopy: Select Bypass HASH function
|
|
HASH_CONFIG_ID_IV_SEL, ///< Select HASH engine Iniatial Vector source
|
|
///< Context can be any of:
|
|
///< - @b HASH_IV_Defaut: Set HASH IV with default value of algorithm.
|
|
///< - @b HASH_IV_REG: Configured by using register HASH_IV_0 to HASH_IV_7
|
|
HASH_CONFIG_ID_ACCMODE, ///< Select HASH engine Access Mode
|
|
///< Context can be any of:
|
|
///< - @b HASH_ACCMODE_PIO: Select HASH Access mode PIO
|
|
///< - @b HASH_ACCMODE_DMA: Select HASH Access mode DMA
|
|
HASH_CONFIG_ID_DMA_PAD, ///< Select HASH engine DMA mode Padding Enable
|
|
///< Context can be any of:
|
|
///< - @b HASH_DMA_PAD_DISABLE: Select HASH DMA mode Padding Disable
|
|
///< - @b HASH_DMA_PAD_ENABLE: Select HASH DMA mode Padding Enable
|
|
HASH_CONFIG_ID_BYPASS, ///< Select HASH engine DMA mode bypass or not for HwCopy.
|
|
///< Context can be any of:
|
|
///< - @b HASH_BYPASS_NORMAL: Set HASH engine as normal mode
|
|
///< - @b HASH_BYPASS_HwCopy: Set HASH engine as HwCopy
|
|
HASH_CONFIG_ID_INI, ///< Set HASH engine DMA mode as initail state.
|
|
///< Context can be any of:
|
|
///< - @b HASH_INI_NORMAL: Set HASH engine as normal state
|
|
///< - @b HASH_INI_STATE: Set HASH engine as initail state
|
|
HASH_CONFIG_ID_IPAD, ///< Set HASH engine DMA mode as internal padding state.
|
|
///< Context can be any of:
|
|
///< - @b HASH_IPAD_NORMAL: Set HASH engine as normal state
|
|
///< - @b HASH_IPAD_STATE: Set HASH engine as internal padding state
|
|
HASH_CONFIG_ID_OPAD, ///< Set HASH engine DMA mode as external padding state.
|
|
///< Context can be any of:
|
|
///< - @b HASH_OPAD_NORMAL: Set HASH engine as normal state
|
|
///< - @b HASH_OPAD_STATE: Set HASH engine as external padding state
|
|
ENUM_DUMMY4WORD(HASH_CONFIG_ID)
|
|
} HASH_CONFIG_ID;
|
|
|
|
|
|
extern ER hash_setConfig(HASH_CONFIG_ID cfgid, UINT32 cfgvalue);
|
|
extern ER hash_open(void);
|
|
extern ER hash_close(void);
|
|
extern void hash_pio_enable(UINT8* ucInput, UINT32 len, BOOL bmac);
|
|
extern void hash_setKey(UINT8 * ucKey, UINT32 uiLen);
|
|
extern void hash_setIV(UINT8 * ucIV);
|
|
extern void hash_getOutput(UINT8 * Output, UINT32 len);
|
|
extern void hash_dma_enable(UINT32 addr, UINT32 size, UINT32 pad_len);
|
|
extern void hash_dma_HwCopy(UINT32 Srcaddr, UINT32 Dstaddr, UINT32 size);
|
|
extern BOOL hashpadding(UINT8* ucInput, UINT32 len);
|
|
|
|
#if defined(_NVT_FPGA_) || defined(_NVT_EMULATION_)
|
|
extern void hash_dma_HwCopy_without_flush(UINT32 Srcaddr, UINT32 Dstaddr, UINT32 size);
|
|
extern void hash_dma_enable_random_terminate(UINT32 addr, UINT32 size, UINT32 pad_len);
|
|
#endif
|
|
|
|
//@}
|
|
|
|
#endif /* _HASH_H */
|