mirror of
https://github.com/taubel/sdk-ameba-v4.0b-gcc.git
synced 2026-04-05 21:15:23 +00:00
204 lines
8.4 KiB
C
204 lines
8.4 KiB
C
/**
|
|
******************************************************************************
|
|
* @file rtl8710b_crypto_api_rom.h
|
|
* @author
|
|
* @version V1.0.0
|
|
* @date 2016-05-17
|
|
* @brief This file provides firmware functions to manage the following
|
|
* functionalities of the HW crypto:
|
|
* - Initialization
|
|
* - MD5
|
|
* - SHA1/SHA2
|
|
* - HMAC
|
|
* - AES CBC/ECB/CTR
|
|
* - 3DES CBC/ECB
|
|
* - DES CBC/ECB
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* This module is a confidential and proprietary property of RealTek and
|
|
* possession or use of this module requires written permission of RealTek.
|
|
*
|
|
* Copyright(c) 2015, Realtek Semiconductor Corporation. All rights reserved.
|
|
******************************************************************************
|
|
*/
|
|
|
|
#ifndef __RTL8710B_CRYPTO_API_H__
|
|
#define __RTL8710B_CRYPTO_API_H__
|
|
|
|
/** @addtogroup AmebaZ_Periph_Driver
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup CRYPTO
|
|
* @brief CRYPTO driver modules
|
|
* @{
|
|
*/
|
|
|
|
/** @addtogroup CRYPTO
|
|
* @verbatim
|
|
*****************************************************************************************
|
|
* Introduction
|
|
*****************************************************************************************
|
|
* -Authentication or Cipher use hardware to improve data process performance
|
|
*
|
|
*****************************************************************************************
|
|
* Authentication
|
|
*****************************************************************************************
|
|
* -MD5
|
|
* -SHA1
|
|
* -SHA2
|
|
* -HMAC-MD5
|
|
* -HMAC-SHA1
|
|
* -HMAC-SHA2
|
|
*
|
|
*****************************************************************************************
|
|
*****************************************************************************************
|
|
* Cipher
|
|
*****************************************************************************************
|
|
* -AES-CBC
|
|
* -AES-ECB
|
|
* -AES-CTR
|
|
* -3DES-CBC
|
|
* -3DES-ECB
|
|
* -DES-CBC
|
|
* -DES-ECB
|
|
*
|
|
*****************************************************************************************
|
|
* How to use
|
|
*****************************************************************************************
|
|
* -call rtl_cryptoEngine_init to open IPSEC function & clock
|
|
*
|
|
* -call following API for set key:
|
|
* -rtl_crypto_xxx_init
|
|
*
|
|
* -call following API for encrypt decrypt:
|
|
* -rtl_crypto_xxx_process or
|
|
*
|
|
* -rtl_crypto_xxx_encrypt
|
|
* -rtl_crypto_xxx_decrypt
|
|
*
|
|
*
|
|
*****************************************************************************************
|
|
* @endverbatim
|
|
*/
|
|
|
|
/* Exported constants --------------------------------------------------------*/
|
|
|
|
/** @defgroup CRYPTO_Exported_Constants CRYPTO Exported Constants
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup CRYPTO_Process_Status_definitions
|
|
* @{
|
|
*/
|
|
#define _ERRNO_CRYPTO_DESC_NUM_SET_OutRange -2
|
|
#define _ERRNO_CRYPTO_BURST_NUM_SET_OutRange -3
|
|
#define _ERRNO_CRYPTO_NULL_POINTER -4
|
|
#define _ERRNO_CRYPTO_ENGINE_NOT_INIT -5
|
|
#define _ERRNO_CRYPTO_ADDR_NOT_4Byte_Aligned -6
|
|
#define _ERRNO_CRYPTO_KEY_OutRange -7
|
|
#define _ERRNO_CRYPTO_MSG_OutRange -8
|
|
#define _ERRNO_CRYPTO_IV_OutRange -9
|
|
#define _ERRNO_CRYPTO_AUTH_TYPE_NOT_MATCH -10
|
|
#define _ERRNO_CRYPTO_CIPHER_TYPE_NOT_MATCH -11
|
|
#define _ERRNO_CRYPTO_KEY_IV_LEN_DIFF -12
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Exported functions --------------------------------------------------------*/
|
|
|
|
/** @defgroup cryptoEngine_Exported_Functions cryptoEngine Exported Functions
|
|
* @{
|
|
*/
|
|
_LONG_CALL_ int rtl_cryptoEngine_init(void);
|
|
_LONG_CALL_ void rtl_cryptoEngine_info(void);
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup Authentication_Exported_Functions Authentication Exported Functions
|
|
* @{
|
|
*/
|
|
_LONG_CALL_ int rtl_crypto_md5(IN const u8* message, IN const u32 msglen, OUT u8* pDigest);
|
|
_LONG_CALL_ int rtl_crypto_md5_init(void);
|
|
_LONG_CALL_ int rtl_crypto_md5_process(IN const u8* message, const IN u32 msglen, OUT u8* pDigest);
|
|
|
|
_LONG_CALL_ int rtl_crypto_sha1(IN const u8* message, IN const u32 msglen, OUT u8* pDigest);
|
|
_LONG_CALL_ int rtl_crypto_sha1_init(void);
|
|
_LONG_CALL_ int rtl_crypto_sha1_process(IN const u8* message, IN const u32 msglen, OUT u8* pDigest);
|
|
|
|
_LONG_CALL_ int rtl_crypto_sha2(IN const SHA2_TYPE sha2type, IN const u8* message, IN const u32 msglen, OUT u8* pDigest);
|
|
_LONG_CALL_ int rtl_crypto_sha2_init(IN const SHA2_TYPE sha2type);
|
|
_LONG_CALL_ int rtl_crypto_sha2_process(IN const u8* message, IN const u32 msglen, OUT u8* pDigest);
|
|
|
|
_LONG_CALL_ int rtl_crypto_hmac_md5(IN const u8* message, IN const u32 msglen, IN const u8* key, IN const u32 keylen, OUT u8* pDigest);
|
|
_LONG_CALL_ int rtl_crypto_hmac_md5_init(IN const u8* key, IN const u32 keylen);
|
|
_LONG_CALL_ int rtl_crypto_hmac_md5_process(IN const u8* message, IN const u32 msglen, OUT u8* pDigest);
|
|
|
|
_LONG_CALL_ int rtl_crypto_hmac_sha1(IN const u8* message, IN const u32 msglen, IN const u8* key, IN const u32 keylen, OUT u8* pDigest);
|
|
_LONG_CALL_ int rtl_crypto_hmac_sha1_init(IN const u8* key, IN const u32 keylen);
|
|
_LONG_CALL_ int rtl_crypto_hmac_sha1_process(IN const u8* message, IN const u32 msglen, OUT u8* pDigest);
|
|
|
|
_LONG_CALL_ int rtl_crypto_hmac_sha2(IN const SHA2_TYPE sha2type, IN const u8* message, IN const u32 msglen, IN const u8* key, IN const u32 keylen, OUT u8* pDigest);
|
|
_LONG_CALL_ int rtl_crypto_hmac_sha2_init(IN const SHA2_TYPE sha2type, IN const u8* key, IN const u32 keylen);
|
|
_LONG_CALL_ int rtl_crypto_hmac_sha2_process(IN const u8* message, IN const u32 msglen, OUT u8* pDigest);
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup Cipher_Exported_Functions Cipher Exported Functions
|
|
* @{
|
|
*/
|
|
_LONG_CALL_ int rtl_crypto_aes_cbc_init(IN const u8* key, IN const u32 keylen);
|
|
_LONG_CALL_ int rtl_crypto_aes_cbc_encrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
_LONG_CALL_ int rtl_crypto_aes_cbc_decrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
|
|
_LONG_CALL_ int rtl_crypto_aes_ecb_init(IN const u8* key, IN const u32 keylen);
|
|
_LONG_CALL_ int rtl_crypto_aes_ecb_encrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
_LONG_CALL_ int rtl_crypto_aes_ecb_decrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
|
|
_LONG_CALL_ int rtl_crypto_aes_ctr_init(IN const u8* key, IN const u32 keylen);
|
|
_LONG_CALL_ int rtl_crypto_aes_ctr_encrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
_LONG_CALL_ int rtl_crypto_aes_ctr_decrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
|
|
_LONG_CALL_ int rtl_crypto_3des_cbc_init(IN const u8* key, IN const u32 keylen);
|
|
_LONG_CALL_ int rtl_crypto_3des_cbc_encrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
_LONG_CALL_ int rtl_crypto_3des_cbc_decrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
|
|
_LONG_CALL_ int rtl_crypto_3des_ecb_init(IN const u8* key, IN const u32 keylen);
|
|
_LONG_CALL_ int rtl_crypto_3des_ecb_encrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
_LONG_CALL_ int rtl_crypto_3des_ecb_decrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
|
|
_LONG_CALL_ int rtl_crypto_des_cbc_init(IN const u8* key, IN const u32 keylen);
|
|
_LONG_CALL_ int rtl_crypto_des_cbc_encrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
_LONG_CALL_ int rtl_crypto_des_cbc_decrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
|
|
_LONG_CALL_ int rtl_crypto_des_ecb_init(IN const u8* key, IN const u32 keylen);
|
|
_LONG_CALL_ int rtl_crypto_des_ecb_encrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
_LONG_CALL_ int rtl_crypto_des_ecb_decrypt(IN const u8* message, IN const u32 msglen, IN const u8* iv, IN const u32 ivlen, OUT u8* pResult);
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#endif /* __RTL8710B_CRYPTO_API_H__ */
|
|
|
|
/******************* (C) COPYRIGHT 2016 Realtek Semiconductor *****END OF FILE****/
|